Este artículo es una sinopsis del libro " Principios de las pruebas unitarias ".
Comencemos enumerando las propiedades de las buenas pruebas unitarias.
Primero. Integrado en el ciclo de desarrollo. Solo las pruebas que utiliza activamente son útiles; de lo contrario, no tiene sentido escribirlos.
Segundo. Solo se prueban las partes más importantes de su código. No todo el código de trabajo merece la misma atención.
Tercero. Proporcione la máxima protección contra errores con costos mínimos de mantenimiento. Para hacer esto, necesita poder reconocer pruebas efectivas y escribirlas.
Sin embargo, reconocer y redactar una prueba eficaz son dos habilidades diferentes. Y para adquirir la segunda habilidad, primero debes dominar la primera. El resto de este artículo le mostrará cómo reconocer una prueba eficaz. También se considerará la pirámide de pruebas y pruebas de acuerdo con el principio de "caja negra" / "caja blanca".
Cuatro aspectos de las buenas pruebas unitarias
Una buena prueba unitaria debe tener los siguientes atributos: protección contra errores, resistencia a la refactorización, retroalimentación rápida y facilidad de mantenimiento.
Estos cuatro atributos son fundamentales. Se pueden utilizar para analizar cualquier prueba automatizada, ya sea unitaria, de integración o de un extremo a otro.
Comencemos con el primer atributo de una buena prueba unitaria: protección contra errores. Un error (o regresión) es un error de software. Como regla general, estos errores ocurren después de realizar cambios en el código.
Cuanta más funcionalidad, mayor será la probabilidad de que agregue un error a la nueva versión. Por eso es tan importante desarrollar una buena protección contra errores. Sin dicha protección, será imposible o muy difícil asegurar el crecimiento del proyecto a largo plazo debido al número de errores en constante aumento.
Para evaluar el rendimiento de una prueba en términos de protección contra errores, considere lo siguiente:
la cantidad de código ejecutado por la prueba;
la complejidad de este código;
la importancia de este código en términos de lógica empresarial.
, , . , (assertions).
, -. , -, — .
, . - -.
- — . , .
. : . — .
. : , , . , , . , .
? . - . , .
:
, . . .
. -, . , .
?
, , . , . : . — , , .
— , . , , . — , .
- ( ) . , . - : , .
, . ( ), , ( ).
, , , : ( ).
, , . : . . — II .
, : , . . .
: , . :
( , );
( , ).
. 3, . — (), . — (), .
:
-. , . . , , , .
. :
. . , .
. , , .
. «» : , .
, . , .
? , . , — , — . : .
, . , . , , .
— (end-to-end) . . , , .
, . , , , . - , .
: . , , . .
— . , .
, . , , . - , .
- , , . : , .
— — , (end-to-end) . - , . . , .
. ; . , . , , . .
, ; . .
? : , . . , . , .
- CAP. , : (consistency) , (availability), (partition tolerance).
:
1. CAP ;
2. . — , , - Amazon — . .
: -, , .
. . , . , . . , .
. : ; - — ; - .
, – . : . , .
. - , -, — . ; , , (, ). CRUD- - .
— API, (, ). . , . , — .
« » « »
« » . . , , , .
« » . . , .
, : , . « ». — , -, — « » , -. -, .
-
Aspectos de buenas pruebas unitarias
¿Para qué sirven las pruebas de integración?