-
Así que nos pasamos un montón de tiempo
-
en el último par de conferencias
-
hablando sobre los diferentes tipos de pruebas
-
sobre la unidad de pruebas frente a pruebas de integración
-
acerca de cómo uso RSpec
-
realmente aislar las partes del código que desee probar
-
tienes además, sabes, porque de deberes 3,
-
y otra cosas, que hemos estado haciendo BDD,
-
donde hemos estado usando pepino para activar las historias de usuario
-
en esencia, pruebas de integración y aceptación
-
Has visto pruebas en un par de diferentes niveles
-
Y la meta aquí es una especie de hacer algunas observaciones
-
ustedes saben, vamos a respaldar un poco
-
y ver el panorama
-
Así que esto abarca una especie de material
-
abarca tres o cuatro secciones del libro
-
y quiero que acaban de golpear los puntos altos en Conferencia
-
Por lo tanto una pregunta surge
-
Estoy seguro de que ha llegado para todos ustedes
-
como ha estado haciendo deberes
-
es: "cuánto pruebas es suficiente?"
-
Y, lamentablemente, durante mucho tiempo
-
tipo de si esta pregunta en la industria
-
la respuesta fue básicamente
-
"Tenemos un plazo de envío
-
¿cuánto podemos hacer pruebas
-
eso es cuánto".
-
¿Verdad? Eso es lo que tienes tiempo.
-
Por lo tanto, ustedes saben, eso de voltear un poco
-
Obviamente no es muy buena
-
¿Puede hacer un poco mejor, derecho?
-
Allí están algunas medidas estáticas
-
como el número de líneas de código tiene su app
-
y ¿cuántas líneas de pruebas tienes?
-
Y no es inusual en la industria
-
en una pieza de software comprobada
-
el número de líneas de pruebas
-
ir mucho más allá del número de líneas de código
-
Así, entero múltiplos no son inusuales
-
Y creo que incluso para una especie de, ya saben,
-
código de investigación o trabajos
-
una relación de ustedes saben, tal vez 1.5 no es razonable
-
por lo tanto una veces y media la cantidad de código de prueba
-
como el código de la aplicación
-
Y una gran cantidad de sistemas de producción
-
donde realmente importa sobre pruebas
-
es mucho mayor que
-
Quizás una mejor pregunta
-
¿En lugar de decir: pruebas de cuánto es suficiente?
-
¿es preguntar: Qué buena es la prueba que estoy haciendo ahora?
-
¿Cómo profundo es?
-
Más adelante en este semestre
-
Profesor Sen hablará sobre
-
un poco más acerca de los métodos formales
-
y ordenar lo que es las fronteras de la prueba y depuración
-
Pero un par de cosas podemos hablar
-
basado en lo que ya sabe
-
es algunos conceptos básicos acerca de la cobertura de la prueba
-
Y aunque yo diría
-
ustedes saben, que hemos estado diciendo todo el tiempo
-
métodos formales, realmente no funcionan en grandes sistemas
-
Creo que esa declaración, en mi opinión personal
-
realmente es mucho menos cierto lo que solía ser
-
Creo que hay un número de lugares específicos
-
especialmente en pruebas y depuración
-
donde métodos formales son realmente avanzando rápido
-
y Koushik Sen es uno de los líderes que
-
Por lo que tendrás la oportunidad de conocer más acerca de que más tarde
-
pero parece por el momento, tipo de pan y mantequilla
-
es vamos a hablar de la medición de cobertura
-
porque es donde la goma cumple la carretera
-
en términos de cómo serán evaluados
-
Si estás haciendo esto de verdad
-
¿Qué es algunos aspectos básicos?
-
Aquí es una clase realmente simple que se puede utilizar
-
para hablar sobre diferentes formas de medir
-
¿cómo nuestra prueba cubre este código
-
y existen unos niveles diferentes
-
con terminologías diferentes
-
No es realmente universal a través de todas las casas de software
-
pero un común conjunto de terminología
-
que expone el libro
-
es que podríamos hablar de S0
-
donde sólo podría significar que has llamado cada método una vez
-
Así que ya sabéis, si llame foo, y se llama bar
-
Que es la cobertura de S0: no terriblemente profundo
-
Es un poco más estrictas S1
-
se podría decir, que estamos llamando cada método
-
desde cada lugar que podría llamarse
-
Así que ¿qué significa eso?
-
Esto significa, por ejemplo
-
no basta con llamar a bar
-
Tiene que asegurarse de que hay que llamarlo
-
al menos una vez desde aquí
-
así como llamar una vez
-
desde cualquier función exterior podría llamar
-
C0 que es lo que mide SimpleCov
-
aquellos de ustedes que has metido SimpleCov funcionando
-
Básicamente dice que ha ejecutado cada declaración
-
ha tocado cada instrucción en el código una vez
-
Pero la advertencia de allí es que
-
condicionales realmente sólo cuentan como una sola instrucción
-
Así que, si usted, no importa qué rama de este "si" tomó
-
como tocó una de la otra rama
-
ha ejecutado el "si" declaración
-
Así que incluso C0 es todavía, ustedes saben, excedente de superficial
-
Pero, como veremos
-
es la forma que desee leer esta información:
-
Si está recibiendo mala cobertura en el nivel de C0
-
a continuación, tiene realmente muy mala cobertura
-
Así que si no son amables de decisiones
-
Este nivel simple de cobertura superficial
-
a continuación, la prueba es probablemente deficiente
-
C1 es el siguiente paso que
-
Podríamos decir:
-
Pues bien, tenemos que tener cada rama en ambas direcciones
-
Por eso, cuando estamos haciendo esta declaración de "si"
-
Tenemos que asegurarnos de que
-
hacemos la "si x" parte de una vez
-
y la parte "si no x" al menos una vez
-
C1, usted puede aumentar con cobertura de decisión
-
diciendo: bueno, si somos gonna…
-
Si tenemos statments "si" donde la condición
-
se compone de varios términos
-
Tenemos que asegurarnos de que cada subexpresión
-
ha sido evaluado en ambas direcciones
-
En otras palabras, esto significa que
-
Si vamos a fallar esta declaración de "si"
-
Tenemos que asegurarnos de dejar al menos una vez
-
porque fue falsa en al menos una vez y porque era falso z
-
En otras palabras, cualquier subexpresión podría
-
cambiar independientemente del resultado de la condición
-
tiene que ejercerse en ambas direcciones
-
Y, a continuación, de la que, sabes, muchas personas aspiran a
-
pero hay desacuerdo sobre cuánto más valioso es
-
es que tomar cada ruta a través del código
-
Obviamente, esto es algo difícil porque
-
tiende a ser exponencial en el número de condiciones
-
y en general es difícil
-
para evaluar si has tomado cada ruta a través del código
-
Hay técnicas formales que se pueden utilizar
-
que le diga dónde están los agujeros
-
pero la conclusión es
-
en las casas de software comerciales más
-
diría yo, no hay un consenso completo
-
en cuánto más valioso C2
-
en comparación con C0 y C1
-
Por eso, creo, con el propósito de nuestra clase
-
Not Synced
y unir esas cosas
-
Not Synced
antes de ese plazo
-
Not Synced
haya terminado
-
Not Synced
Derecho