PHP Classes

PHP Test Bed: Test PHP scripts describing what they execute

Recommend this page to a friend!
     
  Info   Example   View files Files   Install with Composer Install with Composer   Download Download   Reputation   Support forum   Blog    
Ratings Unique User Downloads Download Rankings
Not yet rated by the usersTotal: 118 All time: 9,534 This week: 660Up
Version License PHP version Categories
php-testbed 1.0.0MIT/X Consortium ...5PHP 5, Language, Testing
Description 

Author

This package can be used to test PHP scripts describing what they execute.

It can take a given PHP script and processes it to describe what it would execute when it would be run for real.

The examples and documentation are in Portuguese but it also supports the English language.

In Portuguese:

Este componente é um executor de teste de mesa para scripts PHP.

Innovation Award
PHP Programming Innovation award nominee
December 2019
Number 3
Sometimes it may be hard to understand what a PHP script does.

This package provides a solution by interpreting a PHP script and outputting a description in plain English what they would do if they would be run, thus making it easier to understand what a script would do in practice.

Manuel Lemos
Picture of Natanael Simões
  Performance   Level  
Innovation award
Innovation award
Nominee: 2x

Winner: 1x

 

Example

<?php include './vendor/autoload.php'; ?>
<!DOCTYPE html>
<html>
    <head>
        <title>PHP-TestBed</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <link rel="stylesheet" type="text/css" href="app/css/style.css">
    </head>
    <body>
        <?php
        PhpTestBed
\I18n::setLocale('pt_BR');
       
$options = new \PhpTestBed\ScriptCrawler\Options('test.php');
       
PhpTestBed\ScriptCrawler::getInstance()->run($options);
       
?>
</body>
</html>


Details

PhpTestBed v0.2.0

A técnica do teste de mesa ajuda programadores de qualquer nível a compreender melhor a lógica empregada ao verificar o fluxo e mudanças de estados de varíavel no decorrer da execução de um programa.

Esta biblioteca pretende realizar leitura de scripts PHP a fim de executar o teste de mesa informando ao usuário cada passo que será tomado pelo processador de script, do início até a conclusão da execução do script.

Ainda estamos em desenvolvimento inicial, por isso a quantidade de recursos da linguagem que são suportados são poucos.

Instalação

É necessário Composer para o gerenciamento das dependências.

$ git clone https://github.com/ifroariquemes/PHP-TestBed
$ cd PHP-TestBed
$ composer install

Exemplo de uso

Script de teste:

<?php

for($i = 1; $i <= 2; $i++) {
    echo $i + 1;
}

Saída:

Script iniciado
Linha 3: --- Entrou no laço FOR ---
Linha 3: A variável $i recebe o valor 1
Linha 3: A condição da estrutura retorna o valor true resultante da operação ($i <= 2) onde $i = 1
Linha 4: Imprime na tela o valor 2 resultante da operação ($i + 1) onde $i = 1
Linha 3: A variável $i tem seu valor incrementado para 2
Linha 3: A condição da estrutura retorna o valor true resultante da operação ($i <= 2) onde $i = 2
Linha 4: Imprime na tela o valor 3 resultante da operação ($i + 1) onde $i = 2
Linha 3: A variável $i tem seu valor incrementado para 3
Linha 3: A condição da estrutura retorna o valor false resultante da operação ($i <= 2) onde $i = 3
Linha 5: --- Saiu do laço FOR ---
Script finalizado

Comandos suportados

<table>

<tr>
    <td><b>Comando</b></td>
    <td><b>Incluso na versão</b></td>
</tr>
<tr>
	<td colspan="2">
		<b>Estruturas condicionais</b>
	</td>
</tr>
<tr>
	<td>If-Else</td>
	<td>v0.1.0</td>
</tr>
    <tr>
	<td>Switch-Case-Default</td>
	<td>v0.2.0</td>
</tr>

<tr>

<td colspan="2"><b>Laços de repetição</b></td>

</tr>

<tr>
<td>For</td>
<td>v0.1.0</td>
</tr>
<tr>    
<td>Foreach</td>
<td>v0.2.0</td>
</tr>
<tr>
<td>While</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Do-While</td>
<td>v0.1.0</td>
</tr>
<tr>
<td colspan="2"><b>Operações aritméticas</b></td>

</tr>

<tr>
<td>Soma (`+`)</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Subtração (`-`)</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Multiplicação (`*`)</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Divisão (`/`)</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Resto da divisão (`%`)</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Deslocamento binário (`&lt;&lt;` e `&gt;&gt;`)</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Incrementação (`++`)</td>
<td>v0.1.0 (posterior)<br>v0.2.0(anterior)</td>
</tr>
<tr>
<td>Decrementação (`--`)</td>
<td>v0.2.0</td>
</tr>
<tr>
<td colspan="2"><b>Operações lógicas</b></td>
</tr>
<tr>
<td>Booleano E (`&amp;&amp;`)</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Booleano OU (`||`)</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Bitwise E (`&amp;`)</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Bitwise OU (`|`)</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Bitwise OU EXCLUSIVO (`^`)</td>
<td>v0.1.0</td>
</tr>
<tr>
<td colspan="2"><b>Operações relacionais</b></td>
</tr>
<tr>	
<td>Igual (`==`)</td>
<td>v0.1.0</td>
</tr>
<tr>	
<td>Idêntico (`===`)</td>
<td>v0.1.0</td>
</tr>
<tr>	
<td>Diferente (`!=`)</td>
<td>v0.1.0</td>
</tr>
<tr>	
<td>Não idêntico (`!==`)</td>
<td>v0.1.0</td>
</tr>
<tr>	
<td>Maior (`&gt;`)</td>
<td>v0.1.0</td>
</tr>
<tr>	
<td>Maior ou igual (`&gt;=`)</td>
<td>v0.1.0</td>
</tr>
<tr>	
<td>Menor (`&lt;`)</td>
<td>v0.1.0</td>
</tr>
<tr>	
<td>Menor ou igual (`&lt;=`)</td>
<td>v0.1.0</td>
</tr>
<tr>	
<td>Nave espacial (`&lt;=&gt;`)</td>
<td>v0.1.0</td>
</tr>	
<tr>
<td colspan="2"><b>Outros</b></td>
</tr>
<tr>	
<td>Echo</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Atribuição (`=`)</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Concatenação (`.`)</td>
<td>v0.1.0</td>
</tr>
<tr>
<td>Global</td>
<td>v0.2.0</td>
</tr>
<tr>
<td>Parada (`break`)</td>
<td>v0.2.0</td>
</tr>
<tr>
<td>Constantes</td>
<td>v0.2.0 (`const`)<br>em breve (`define`)</td>
</tr>
<tr>
<td>Vetores e Matrizes (`array()` e `[]`)</td>
<td>v0.2.0</td>
</tr>
<tr>
<td>Try-Catch-Finally</td>
<td>v0.2.0</td>
</tr>
<tr>
<td>Throw</td>
<td>v0.2.0</td>
</tr>
</table>

Contribua!

Ajude-nos a fazer esse software dar certo. Veja em milestones que funções essa biblioteca ainda precisa implementar. Ou então revise o que já existe para continuar melhorando a qualidade e desempenho.

Licença Creative Commons

Este trabalho está licenciado com uma Licença Creative Commons - Atribuição 4.0 Internacional


  Files folder image Files (97)  
File Role Description
Files folder imageapp (1 directory)
Files folder imagesrc (4 files, 3 directories)
Files folder imagetests (2 files, 1 directory)
Accessible without login Plain text file composer.json Data Auxiliary data
Accessible without login Plain text file composer.lock Data Auxiliary data
Accessible without login Plain text file index.php Example Example script
Accessible without login Plain text file LICENSE.md Lic. License text
Accessible without login Plain text file README.md Doc. Documentation
Accessible without login Plain text file test.php Aux. Auxiliary script
Accessible without login Plain text file _config.yml Data Auxiliary data

The PHP Classes site has supported package installation using the Composer tool since 2013, as you may verify by reading this instructions page.
Install with Composer Install with Composer
 Version Control Unique User Downloads Download Rankings  
 100%
Total:118
This week:0
All time:9,534
This week:660Up