El documento discute diferentes tipos y técnicas de pruebas de software, incluyendo pruebas basadas en valores de entrada, condiciones de frontera, valores no esperados, combinaciones de pruebas, rutas de ejecución, cobertura de código, pruebas guiadas por datos, pruebas pairwise, y pruebas basadas en riesgos. El autor argumenta que la cobertura de código por sí sola no es suficiente y que se deben considerar factores como los valores de entrada y las rutas de ejecución para realizar pruebas efectivas.
Pseudocódigo
Diagramas de flujo
Entorno de desarrollo VBA
Variables
Estructuras de control (Primera parte)
En programación, lenguaje artificial e informal útil para programadores para el desarrollo de algoritmos. No es un lenguaje de programación verdadero y, por lo tanto, no puede ser compilado y ejecutado.
Es un diagrama que permite visualizar la solución de un algoritmo, se utilizan símbolos y un lenguaje natural para describir los pasos de este.
A partir de ahora, vamos a crear nuestros propios macros, de tal forma que vamos a tener el control soluciones personalizadas, creadas tras bambalinas (IDE, entorno de desarrollo) de la hoja de cálculo.
¿Qué es una variable?
Una variable en programación es un espacio reservado en memoria que se usa para almacenar un dato, que un programa utiliza para realizar cálculos.
Conceptos básicos sobre funciones en C: que son, para qué sirven, cómo declararlas, cómo implementarlas, cómo pasar parámetros tanto por valor como por referencia, etc
Apunte de pseudocódigo conteniendo los temas segun sea (switch) y las subrutinas (funciones y procedimientos) creado por Alejandro Canosa para el Plan 111 Mil programadores.
Mis Paginas Web :
Mi web Principal" Rivera & G ":
Descarga la biblia de java y manual de windows 8.
http://riverasn.p.ht/
Mi web Company.Rivera&G :
Descarga mis Aplicaciones y Proyectos en visual basic 2012 ,java,C#,PHP,HTML,JavaScript
http://santosrl.p.ht/
Mi web "El Hacker 2013":
Descarga el manual de visual basic 2010 y visual basic 6.0 portable a full
http://riverayg.zz.mu/
Mi facebook:
https://www.facebook.com/PatrickNilsdeAlesandro.RiveraLujan
Mi grupo de programadores :
https://www.facebook.com/groups/398604720248657/
Mi grupo de soporte tecnico PC :
https://www.facebook.com/groups/145173492332702/
Mi web JIMBO:
http://riverasn.jimdo.com/
Mi twitter.com:
https://twitter.com/RIVERALUJANSANT
Pseudocódigo
Diagramas de flujo
Entorno de desarrollo VBA
Variables
Estructuras de control (Primera parte)
En programación, lenguaje artificial e informal útil para programadores para el desarrollo de algoritmos. No es un lenguaje de programación verdadero y, por lo tanto, no puede ser compilado y ejecutado.
Es un diagrama que permite visualizar la solución de un algoritmo, se utilizan símbolos y un lenguaje natural para describir los pasos de este.
A partir de ahora, vamos a crear nuestros propios macros, de tal forma que vamos a tener el control soluciones personalizadas, creadas tras bambalinas (IDE, entorno de desarrollo) de la hoja de cálculo.
¿Qué es una variable?
Una variable en programación es un espacio reservado en memoria que se usa para almacenar un dato, que un programa utiliza para realizar cálculos.
Conceptos básicos sobre funciones en C: que son, para qué sirven, cómo declararlas, cómo implementarlas, cómo pasar parámetros tanto por valor como por referencia, etc
Apunte de pseudocódigo conteniendo los temas segun sea (switch) y las subrutinas (funciones y procedimientos) creado por Alejandro Canosa para el Plan 111 Mil programadores.
Mis Paginas Web :
Mi web Principal" Rivera & G ":
Descarga la biblia de java y manual de windows 8.
http://riverasn.p.ht/
Mi web Company.Rivera&G :
Descarga mis Aplicaciones y Proyectos en visual basic 2012 ,java,C#,PHP,HTML,JavaScript
http://santosrl.p.ht/
Mi web "El Hacker 2013":
Descarga el manual de visual basic 2010 y visual basic 6.0 portable a full
http://riverayg.zz.mu/
Mi facebook:
https://www.facebook.com/PatrickNilsdeAlesandro.RiveraLujan
Mi grupo de programadores :
https://www.facebook.com/groups/398604720248657/
Mi grupo de soporte tecnico PC :
https://www.facebook.com/groups/145173492332702/
Mi web JIMBO:
http://riverasn.jimdo.com/
Mi twitter.com:
https://twitter.com/RIVERALUJANSANT
Las Pruebas de Software son todavía una de las áreas más desatendidas del desarrollo y espliegue de los productos de software. Las Pruebas de Software son predominantemente vistas como una actividad periférica, casi una formalidad, antes del espliegue del software. Un cambio de actitud y un buen programa de estudios como fundamento hacia las Pruebas de Software pueden reducir tremendamente los problemas normalmente asociados con el lanzamiento del nuevo software y minimizar el riesgo implicado. El programa de estudio del ISTQB (International Software Testing Qualifications Board) Probador Certificado (Certified Tester) ofrece el mejor
entrenamiento estandarizado del mundo para los probadores de software.
Este libro le proporcionará el conocimiento esencial para ser un profesional en Pruebas, que incluye:
Fundamentos de Pruebas
Pruebas a través del Ciclo de Vida de Software
Técnicas Estáticas
Técnicas de Diseño de Pruebas
Gestión de Pruebas
Soporte de las Herramientas de Pruebas
Adquisición de Herramientas y Software en General en una Organización
Más de 200 preguntas de examen de muestra con soluciones
Ejercicios prácticos y soluciones por cada tema cubierto
Caso real, resuelto, como ejemplo a lo largo de los temas
Dos exámenes de simulación del examen real
Estándares de Pruebas
Excelente Bibliografía
Cabe señalar que este libro no es sólo para los probadores sino también para quienes están encargados de la adquisición de software en general, gerentes de tecnología, gerentes del Aseguramiento de la Calidad/Control de la Calidad (QA/QC), gerentes de sistemas, jefes de proyectos de software, analistas, arquitectos, desarrolladores, estudiantes y profesores de TI.
Asimismo este libro está diseñado para el autoestudio. El contenido comprende el programa de estudios necesario para aprobar el examen de certificación nivel básico definido por el ISTQB versión 2011 (Syllabus 2011).
Kent Beck dice “No sé si soy un gran programador, pero definitivamente son un programador con grandes prácticas”. ¿Cuáles son estas grandes prácticas? Test Drive Development y Clean Code son dos de ellas. La adopción de estas prácticas nos ayuda como programadores para que perdamos el miedo a usar código nuevo y confiemos en nuestros compañeros de equipo. También ayuda a reducir la tan odiada documentación o peor, tener documentación incorrecta (como comentarios obsoletos) . Esta presentación incluye una demostración de TDD en Java.
Expositor: Guillermo Winkler
Resumen:
Sabiendo que nunca vamos a lograr escribir tests que prueben que el código es correcto, en esta charla vamos a ver cómo en lugar de escribir tests para casos específicos de entradas de nuestro sistema, podemos declarar propiedades que tiene que cumplir nuestro sistema, y que sea la propia infraestructura que encuentre los casos para los cuáles dichas propiedades no se cumplen.
Un repaso a la historia e implementación de QuickCheck con casos prácticos en Clojure y Javascript.
Mejorar la calidad de los tests con Mutation testing.pdfIsmail Ismailov
Todos estamos escribiendo tests y tenemos controlado el code coverage, pero 100% code coverage solo significa que todas las líneas se han ejecutado al menos una vez por nuestros tests, pero no dice nada sobre la precisión de los tests o la integridad de los casos de uso, y es por eso que el mutation testing es muy importante.
Mutation testing se utiliza para diseñar nuevos tests y evaluar la calidad de los tests existentes. La idea es modificar el código cubierto por tests de forma sencilla, comprobando si el conjunto de tests existente para este código detectará y rechazará las modificaciones.
Cada cambio en el código se llama mutante y da como resultado una versión alterada del programa, llamada mutación. La calidad de los tests se mide en función del porcentaje de mutación eliminada.
¿Cómo mantener tu javascript?: Buenas prácticasjaespinmora
Buenas práctias en el desarrollo de software con javascript. Código limpio, mantenible, escalable, tests,... Charla perteneciente al evento Betabeers Murcia del día 9 de Mayo de 2014
Universidad Nacional Experimental de Caracas UNEXCA
Programa Nacional de Formación Ingeniería Informática PNFI
Unidad curricular Ingeniería del software II - Código ISC339
Trimestre 3 - Tema 2
Contenido: concepto, tipos, escenarios, casos de uso vs casos de prueba, atributos e importancia.
Seminario de introducción a Test Driven Development organizado por Paradigma Tecnológico y javaHispano. El seminario fue impartido por Carlo Scarioni el 23 de Abril 2010
Mas info: http://www.paradigmatecnologico.com/historico/seminario-de-test-development-driven/
Similar a ¿En qué la estamos regando en pruebas de software? (20)
Exploring Elixir Codebases with ArcheometerAgustin Ramos
Legacy code is a liability, or so they say. Nevertheless legacy code is at least a part of most software projects. If you work on a system with legacy code, you better have a nice map that clearly marks where the dragons roam. On the other hand, as software developers, most of us switch between projects every once in a while and many times we arrive at humongous codebases. How to deal effectively and efficiently with so much code? The usual mantra is “read the code!”, but it’s not easy at all to quickly understand tens (or even hundreds) of thousands of lines of code.
What if we could obtain metadata that describes a software system from another perspective instead of just raw code? And better yet, what if this data was queryable? This is the goal of Archeometer: to gather different kinds of useful information about the system and make it available for your exploration.
Think of Archeometer as a device you can use to get an understanding of the overall design and quality of an Elixir based system, a lab in which you can interactively tune parameters and adjust zoom levels to get a pretty good grasp of a perhaps huge and not so pretty code base, an oracle for answering questions like: which are the core modules of the system? which are the parts of the system most difficult to understand? which are the ones I must be most careful dealing with? which parts are nice, safe and green?
¿En qué la estamos regando en pruebas de software?
1. ¿En qué la estamos regando
en pruebas de software?
Agustín Ramos
@MachinesAreUs
2. ¿Cuántas pruebas necesita ésta función?
function partition(items, left, right) {
var pivot = items[Math.floor((right + left) / 2)],
i
= left,
j
= right;
while (i <= j) {
while (items[i] < pivot) { i++; }
while (items[j] > pivot) { j—; }
if (i <= j) {
swap(items, i, j);
i++;
j--;
}
}
return i;
}
3. ¿Cuántos tipos de pruebas necesita esta función?
function partition(items, left, right) {
var pivot = items[Math.floor((right + left) / 2)],
i
= left,
j
= right;
while (i <= j) {
while (items[i] < pivot) { i++; }
while (items[j] > pivot) { j—; }
if (i <= j) {
swap(items, i, j);
i++;
j--;
}
}
return i;
}
4. ¿Cuántos tipos de pruebas necesita esta función?
Valores en rangos esperados
Condiciones de frontera.
Valores no esperados (e.g. nulos)
Combinaciones de los anteriores
Valores que ejerciten las distintas rutas.
5. ¿Cuántas rutas de ejecución tiene este
programa?
function partition(items, left, right) {
var pivot = items[Math.floor((right + left) / 2)],
i
= left,
j
= right;
while (i <= j) {
while (items[i] < pivot) { i++; }
while (items[j] > pivot) { j—; }
if (i <= j) {
swap(items, i, j);
i++;
j--;
}
}
return i;
}
6. Complejidad Ciclomática
Métrica.
Thomas J. McCabe, 1976
Mide el número de rutas de
ejecución linealmente
independientes dentro de un
programa.
Formalmente
M = E − N + 2P
Aproximador: 2^N - 1
donde N es el número de
bifurcaciones en el código (bloques
if, where, for, etc.)
11. ¿Cobertura?
Una línea de código que está “cubierta” (se ha
ejecutado durante una prueba) no me dice nada del
contexto en el cual se ejecutó (e.g. los parámetros de
entrada de la función, el número de iteración si se
encuentra dentro de un bloque, etc), y por lo tanto
no me dice que no puede fallar o tener un
comportamiento distinto en un contexto distinto.
15. DDT en Cucumber
Feature: Addition
I want to be told the sum of two numbers
!
Scenario Outline: Add two numbers
Given I have entered <input_1> into the calculator
And I have entered <input_2> into the calculator
When I press <button>
Then the result should be <output> on the screen
!
Examples:
| input_1 | input_2 | button | output |
| 20
| 30
| add | 50
|
|2
|5
| add | 7
|
|0
| 40
| add | 40
|
16. DDT en Spock
class HelloSpock extends spock.lang.Specification {
def "length of Spock's and his friends' names"() {
expect:
name.size() == length
!
where:
name | length
"Spock" | 5
"Kirk" | 4
"Scotty" | 6
}
}
17. ¿De dónde salen los casos?
A mano.
En general, no acabas.
¿Cómo sabes que son suficientes?
¡Son solo los que se te ocurren!
Generación automatizada.
Random.
¿Cómo sabes que son suficientes?
Todas las posibles combinaciones de entradas/condiciones…
20. Pairwise testing
“Pairwise (a.k.a. all-pairs) testing is an effective test case
generation technique that is based on the observation
that most faults are caused by interactions of at
most two factors. Pairwise-generated test suites cover all
combinations of two therefore are much smaller than
exhaustive ones yet still very effective in finding defects.”
http://www.pairwise.org/
most ~ > 90 %
24. Pruebas Basadas en Riesgos
Dados recursos finitos ¿cómo escoger qué probar
más y qué menos?
Estrategia:
Objetivo: Encontrar los defectos más importantes
tan pronto como sea posible y con el menor costo.
No hay riesgo => No hay pruebas.
Decisión de negocio
26. Pruebas Basadas en Riesgos
La fórmula
R(f) = P(f) * C(f)
R(f) - Riesgo calculado de la función f
P(f) - Probabilidad de falla de la función f
C(f) - Costo de falla de la función f
28. Pruebas Basadas en Riesgos
Formulación original (James Bach):
http://www.satisfice.com/articles/hrbt.pdf
Presentación (con más tips):
http://www.cs.tut.fi/tapahtumat/testaus04/schaefer.pdf
30. Property-Based Testing
Si tenemos una función
reverse :: String -> String
Entonces una propiedad puede definirse como:
reverse (reverse xs) == xs
Y podemos permitir que herramientas como
QuickCheck generen “aleatoriamente" ejemplos de xs y
verifiquen que estos ejemplos cumplan con la propiedad