O documento discute testes de software, apresentando conceitos como objetivos de teste de software, frameworks xUnit e PHPUnit. Também fornece exemplos de código PHP para testes de unidade usando PHPUnit.
[Especial Conisli] Projetos De Software Em Uma Pequena Empresa
PHPUnit e teste de software
1. Ricardo Striquer Soares (ricardophp) http://twitter.com/rstriquer http://www.programabrasil.org/ e teste de software
2. O teste do software é a investigação do software a fim de fornecer informações sobre sua qualidade em relação ao contexto em que ele deve operar. Isso inclui o processo de utilizar o produto para encontrar seus defeitos. Teste de software
3. Frases celebres! - Depois validamos com o cliente; - O prazo está apertado, vamos deixar os testes para a próxima faze; - Depois escrevo o caso de teste;
4. Resultados conhecidos! - Não, eu fiz o que você mandou! - O software podia estar incorreto, mas ele não pode ter estragado seu computador! - Na minha máquina funcionou.
6. Objetivos de teste de softwares 1) Garantir que os objetivos técnicos e de negócios que guiaram o design e o desenvolvimento foram conquistados; 2) Autenticar que o software funciona como esperado; 3) Garantir que o processo (aplicativo) pode ser implementado com as mesmas características (esperadas);
7. Objetivos do xUnit Rápido ao se executar Isolado Composto Fácil de escrever Fácil de aprender Fácil de Ler Simples de executar
8. Fácil de aprender a se escrever X Fácil de escrever Isolados X Rápido de executar Problemas padrão de um xUnit
9. ' Padrão de um autêntico xUnit http://flylib.com/books/en/1.104.1.24/1/
11. Era uma vez .... EM 1997 Kent Beck e Eric Gamma estavam em um voo de Zürich para Atlanta seguindo para a OOPSLA Conference. Kent Beck possuía um framework de testes para SmallTalk e gostaria de aprender Java, Erich Gamma possuía um computador com Java e gostaria de ter um framework de testes parar Java, quando o Avião chegou a Atlanta Kent Beck havia aprendido Java de Erick Gamma e eles haviam escrito a versão inicial do que hoje é conhecido como jUnit.
12. A concorrência http://ojesunit.blogspot.com/ http://code.google.com/p/snaptest/ (Módulo Lime) http://www.symfony-project.org/book/1_2/15-Unit-and-Functional-Testing http://www.simpletest.org/
16. Teste prático Simples. http://ticomqi.blogspot.com/2010/08/capitulo-4-escrevendo-testes-para.html Exemplo 4.1: operações com matrizes Testes com PHPUnit
24. Só isso ? E agora, o que mais? phpUnderControl
25. Perguntas legais Como escrever testes de unidade em PHP com uma base de código processual? Na maior parte estou convencido das vantagens dos testes de unidade, e gostaria de começar a aplicar o conceito de uma grande base de código existente, escrito em PHP. Menos de 10% desse código é orientado a objeto. Ex: 1 http://pt.efreedom.com/Question/1-899390/Como-escrever-testes-de-unidade-em-PHP-com-uma-base-de-codigo-processual
26. Perguntas legais Como escrever testes de unidade em PHP com uma base de código processual? Na maior parte estou convencido das vantagens dos testes de unidade, e gostaria de começar a aplicar o conceito de uma grande base de código existente, escrito em PHP. Menos de 10% desse código é orientado a objeto. Ex: 2 http://pt.efreedom.com/Question/1-899390/Como-escrever-testes-de-unidade-em-PHP-com-uma-base-de-codigo-processual
27. Perguntas legais Como testar métodos privados? Você parece estar ciente já, mas só vou reexpressá-lo de qualquer maneira, é um mau sinal, se você precisa testar métodos protegidos. O objectivo de um teste de unidade, é a interface de uma classe de teste e métodos protegidos são detalhes de implementação. Dito isto, há casos em que faz sentido. Se você usar a herança, você pode ver uma superclasse, fornecendo uma interface para a subclasse. Então, aqui, você teria que testar o método protegido (mas nunca um privado um). A solução para isso, é criar uma subclasse para fins de teste e usar isso para expor os métodos. Ex.: http://pt.efreedom.com/Question/1-34571/Qual-e-a-melhor-forma-de-metodos-particulares-de-teste-de-unidade
28. Perguntas legais Testando formulário entradas em PHPUnit Qual é a melhor maneira de testar $_GETe $_POSTentradas em PHPUnit? http://pt.efreedom.com/Question/1-132342/Testando-formulario-entradas-em-PHPUnit
29. Perguntas legais Testando headers Qual é a melhor maneira de testar headers em PHPUnit? http://pt.efreedom.com/Question/1-132342/Testando-formulario-entradas-em-PHPUnit Construir programa de exemplo com cURL
Por que escrever testes. - Ao entregar o software vc terá certeza de que fez um trab bem feito e poderá atender o cliente sem a preocupação de saber se o app irá ou não estar funcionando; - O aplicativo fica mais bem documentado pois o teste é um método de documentação; - Você terá um atestado de qualidade do aplicativo que poderá ser validado por outros.
Por que escrever testes. - Ao entregar o software vc terá certeza de que fez um trab bem feito e poderá atender o cliente sem a preocupação de saber se o app irá ou não estar funcionando; - O aplicativo fica mais bem documentado pois o teste é um método de documentação; - Você terá um atestado de qualidade do aplicativo que poderá ser validado por outros.
Fácil de escrever If it's hard to learn how to write tests, developers will not learn to write them. Easy to write. If tests are not easy to write, developers will not write them. Easy to read. Test code should contain no extraneous overhead so that the test itself does not get lost in noise that surrounds it. Easy to execute. The tests should run at the touch of a button and present their results in a clear and unambiguous format. Quick to execute. Tests should run fast so so they can be run hundreds or thousands of times a day. Isolated. The tests should not affect each other. If the order in which the tests are run changes, the results of the tests should not change. Composable. We should be able to run any number or combination of tests together. This is a corollary of isolation.
There are two main clashes between these constraints: Easy to learn to write versus easy to write. Tests do not generally require all the flexibility of a programming language. Many testing tools provide their own scripting language that only includes the minimum necessary features for writing tests. The resulting tests are easy to read and write because they have no noise to distract you from the content of the tests. However, learning yet another programming language and set of programming tools is inconvenient and clutters the mind. Isolated versus quick to execute. If you want the results of one test to have no effect on the results of another test, each test should create the full state of the world before it begins to execute and return the world to its original state when it finishes. However, setting up the world can take a long time: for example connecting to a database and initializing it to a known state using realistic data.
- xUnit - Apoiado pela Zend utilizado no Zend Framework Perg: Você testar Método privado? Eu li o post sobre como testar o método privado (http://pt.efreedom.com/Question/1-34571/whats-the-best-way-of-unit-testing-private-methods) porque eu normalmente não testá-los, eu sempre pensei que é mais rápido para testar apenas método público que será chamado de externas do objeto. Você testar Método privado?ou se eu sempre testar Método privado? Esta questão foi originado stackoverflow.com Resposta Eu faço o teste de unidade não métodos privados. Um método particular é um detalhe de implementação que deve ser escondido para os usuários da classe. Testando métodos particulares quebras de encapsulamento. Se eu achar que o método particular é grande ou complexa ou suficientemente importante para exigir que seus próprios testes, eu apenas colocá-lo em outra classe e torná-la pública lá (Método Object).Em seguida, posso facilmente testar o método anteriormente-público-privado mas-agora que agora vive na sua própria classe.