= Análise de testes e Quality Assurance = [[PageOutline(1-3, Conteúdo)]] == Testes de caixa preta == São testes de funcionalidades, orientados a entrada e saída. === Validação manual === * [wiki:ExpressoTestCenter/qa/mail/validacao Expresso Mail] * [wiki:ExpressoTestCenter/qa/calendar/validacao Calendar] * [wiki:ExpressoTestCenter/qa/contactcenter/validacao ContactCenter] === Validação automatizada === Existe complementos para o navegador Firefox que permite criar macros. Um deles é o [https://addons.mozilla.org/en-US/firefox/addon/3863 imacros]. Um script de criação de regras está anexado como exemplo. == Testes de caixa-branca == São testes orientados a comportamento de código ou fluxo de processamento. === Testes de desempenho php ou inatingíbilidade de código === Podem ser testados como no exemplo abaixo {{{ $time_start = microtime(true); $time_end = microtime(true); $Benchmarking1 = ($time_end - $time_start); $time_start = microtime(true); $time_end = microtime(true); $Benchmarking2 = ($time_end - $time_start); }}} Por último imprimir relatório na tela ou em variável de sessão. === Unit Test === Teste de unidade (unit test), tem como objetivo testar todos os pedaços do software separadamente de forma a garantir um melhor funcionamento do sistema como um todo. Como cada função tem uma especificação de funcionamento qualquer comportamento fora do especificado deve ser alertado. Cada função pode ser tratada como uma equação matemática de n variáveis sendo estas variáveis argumentos, variáveis globais e variáveis do ambiente. Como por exemplo podemos citar uma função que testa se um número é par ou ímpar. Ela tem uma especificação muito simples porque só depende dos valores de entrada: {{{ function testa_par (argumento){ if (argumento mod 2 == 0){ return true else return false } }}} Esta função não passaria num unit test, pois testa_par("string") tem resultado inesperado. Assim como testa_par(true) também. Por isso é melhor a função abaixo: {{{ function testa_par (argumento){ if (typeof(argumento) == number) { if (argumento mod 2 == 0){ return true else return false } else return null } }}} Um bom case de unit test para esta função seria: {{{ for (var i = 0; i < 65536; i+2)[[PageOutline(1-3, Conteúdo)]] if (testa_par (i) != true) print("UNIT TEST FALHOU EM:",i) for (var i = 1; i < 65536; i+2) if (testa_par (i) != false) print("UNIT TEST FALHOU EM:",i) }}} Além de testar strings, boolean e outros tipos. === Usando !JsUnit no !ExpressoMail === Faça download de todos os arquivos em anexo e digite: {{{ cat jsUnit_part* > jsUnit.tar.bz2 tar -xjvf jsUnit.tar.bz2 firefox jsunit/testRunner.html }}} Carregue o arquivo tests/jsUnitExpressoMail.html e clique em run === Realizando testes de desempenho do !JavaScript === * [wiki:ExpressoTestCenter/qa/mail/Desempenho Desempenho expressoMail] * [wiki:ExpressoTestCenter/qa/mail/StressTest Teste de Stress expressoMail] Tickets relacionados #188, #53