Este artigo é uma sinopse do livro " Unit Testing Principles ".
Vamos começar listando as propriedades de bons testes de unidade.
Primeiro. Integrado ao ciclo de desenvolvimento. Apenas os testes que você usa ativamente são úteis; caso contrário, não faz sentido escrevê-los.
Segundo. Apenas as partes mais importantes do seu código são testadas. Nem todo código funcional merece a mesma atenção.
Terceiro. Fornece proteção máxima contra bugs com custos de manutenção mínimos. Para fazer isso, você precisa ser capaz de reconhecer testes eficazes e escrevê-los.
No entanto, reconhecer e escrever um teste eficaz são duas habilidades diferentes. E para adquirir a segunda habilidade, você deve primeiro dominar a primeira. O restante deste artigo mostrará como reconhecer um teste eficaz. A pirâmide de teste e teste de acordo com o princípio "caixa preta" / "caixa branca" também será considerada.
Quatro aspectos de bons testes de unidade
Um bom teste de unidade deve ter os seguintes atributos: proteção contra bugs, resistência à refatoração, feedback rápido e facilidade de manutenção.
Esses quatro atributos são fundamentais. Eles podem ser usados para analisar qualquer teste automatizado, seja de unidade, integração ou testes de ponta a ponta.
Vamos começar com o primeiro atributo de um bom teste de unidade: proteção contra bug. Um bug (ou regressão) é um bug de software. Como regra, esses erros ocorrem após fazer alterações no código.
Quanto mais funcionalidade, maior a probabilidade de adicionar um bug à nova versão. É por isso que é tão importante desenvolver uma boa proteção contra bugs. Sem essa proteção, será impossível ou muito difícil garantir o crescimento do projeto no longo prazo devido ao número cada vez maior de erros.
Para avaliar o desempenho de um teste em termos de proteção contra bugs, considere o seguinte:
a quantidade de código executado pelo teste;
a complexidade deste código;
a importância deste código em termos de lógica de negócios.
, , . , (assertions).
, -. , -, — .
, . - -.
- — . , .
. : . — .
. : , , . , , . , .
? . - . , .
:
, . . .
. -, . , .
?
, , . , . : . — , , .
— , . , , . — , .
- ( ) . , . - : , .
, . ( ), , ( ).
, , , : ( ).
, , . : . . — II .
, : , . . .
: , . :
( , );
( , ).
. 3, . — (), . — (), .
:
-. , . . , , , .
. :
. . , .
. , , .
. «» : , .
, . , .
? , . , — , — . : .
, . , . , , .
— (end-to-end) . . , , .
, . , , , . - , .
: . , , . .
— . , .
, . , , . - , .
- , , . : , .
— — , (end-to-end) . - , . . , .
. ; . , . , , . .
, ; . .
? : , . . , . , .
- CAP. , : (consistency) , (availability), (partition tolerance).
:
1. CAP ;
2. . — , , - Amazon — . .
: -, , .
. . , . , . . , .
. : ; - — ; - .
, – . : . , .
. - , -, — . ; , , (, ). CRUD- - .
— API, (, ). . , . , — .
« » « »
« » . . , , , .
« » . . , .
, : , . « ». — , -, — « » , -. -, .
-
Aspectos de bons testes de unidade
Para que serve o teste de integração?