Expositor: Juliana Herbert
Resumen: Los profesionales que confían en el software para la ejecución de actividades cada vez más críticas y complejas también deben saber probarlo. Aunque estos profesionales no sean testers, enseñarles técnicas de testing aumenta su poder de análisis y de crítica, pues así es posible una investigación técnica cualificada. Esta investigación puede realizarse en profundidad si el profesional sabe utilizar su conocimiento de dominio de forma dirigida, buscando la realización de pruebas eficientes (que revelen defectos).
Esta charla presenta cuatro patterns para enseñar pruebas de software a no desarrolladores. Estos patterns se derivaron a partir de la experiencia de la proponente como instructora y profesora en cursos de testing en varios niveles de formación, para profesionales sin experiencia en desarrollo de software. Los patterns consideran el enfoque basado en el contexto, utilizando la estrategia basada en el riesgo, testing exploratorio y de caja negra. Para definir los patterns, fueron consideradas “patterns pedagógicos”, que captan el conocimiento de la práctica de la enseñanza y el aprendizaje y “testing patterns”. Los patterns que serán presentados en esta charla pueden ayudar a los profesores e instructores a enseñar el testing de software de manera significativa, cambiando el comportamiento y no solo aprendiendo conceptos.
Charla TestingUy 2019 - Patterns Para Enseñar Testing a Personas que No Desarrollan Software
1. @herbert_juliana | #testinguy
CHARLA
Juliana Herbert
julianash@ufcspa.edu.br
@herbert_juliana
13 y 14 de mayo, 2019
testinguy.org
@testinguy | #testinguy
PATTERNS PARA ENSEÑAR
TESTING A PERSONAS
QUE NO DESARROLLAN
SOFTWARE
2. @herbert_juliana | #testinguy
PresentaciónPresentaciónPresentaciónPresentación
Creo, de todo el corazón, que el conocimiento debe serCreo, de todo el corazón, que el conocimiento debe serCreo, de todo el corazón, que el conocimiento debe serCreo, de todo el corazón, que el conocimiento debe ser
compartido y jamáscompartido y jamáscompartido y jamáscompartido y jamás elitizadoelitizadoelitizadoelitizado y/o restricto a un grupo específicoy/o restricto a un grupo específicoy/o restricto a un grupo específicoy/o restricto a un grupo específico
de personas.de personas.de personas.de personas.
Investigadora Asociada
PEDECIBA Informática
4. @herbert_juliana | #testinguy
Contexto del TrabajoContexto del TrabajoContexto del TrabajoContexto del Trabajo
16 carreras de graduación.
12 programas de posgraduación.
¡Todos en el área de la salud!
www.ufcspa.edu.br
5. @herbert_juliana | #testinguy
Contexto del TrabajoContexto del TrabajoContexto del TrabajoContexto del Trabajo
Personas con
conocimiento
sobre las técnicas
de testing.
Personas con
conocimiento
sobre el dominio
(áreas de la salud).
Cursos para la divulgación del área de testing
– “Validación y Verificación de Software en el
Área de la Salud”.
Proyecto para la definición de riesgos y
criticidades en varios dominios del área de la
salud.
7. @herbert_juliana | #testinguy
Testing de SoftwareTesting de SoftwareTesting de SoftwareTesting de Software
“Testing es el proceso de ejecutar el programa con la intención de encontrar
errores.”
Glendford Myers, 1979
“Una investigación técnica hecha para identificar información relacionada a
la calidad del producto en testing.”
Cem Kaner, 2004
11. @herbert_juliana | #testinguy
Estructura de Patterns Utilizada en este TrabajoEstructura de Patterns Utilizada en este TrabajoEstructura de Patterns Utilizada en este TrabajoEstructura de Patterns Utilizada en este Trabajo
2004 2012
Nombre del Pattern
Problema a ser Resuelto
Contexto
Ejemplo Motivacional
Fuerzas
Solución
Ejemplo con Solución Aplicada
Contexto Resultante
Racional
13. @herbert_juliana | #testinguy
PatternsPatternsPatternsPatterns PropuestosPropuestosPropuestosPropuestos
• Equilibrando Complejidad, Tiempo y Utilidad en Escenarios de Testing
• ¡No hay testing perfecto!
• ¡No hay un mundo perfecto para el testing!
• Defectos Similares en Situaciones Similares
14. @herbert_juliana | #testinguy
PatternsPatternsPatternsPatterns PropuestosPropuestosPropuestosPropuestos
NOME Equilibrando Complexidade, Tempo e Utilidade em Cenários de Teste
PROBLEMA
Para ensinar técnicas de teste de software caixa-preta, é importante caracterizar contextos através da
especificação de cenários nos quais o teste será realizado. Estes cenários devem ser simples o suficiente
para serem utilizados durante as aulas, e complexos o suficiente para mostrarem as características das
práticas e técnicas de teste. Ao mesmo tempo, devem ser representativos o suficiente para que o aluno
facilmente possa escalá-los a problemas reais.
Como definir cenários de teste simples o suficiente para serem utilizados em aula e complexos o
suficiente para facilmente serem escalados a problemas reais?
CONTEXTO
Cursos de técnicas de teste caixa-preta para profissionais sem conhecimento em desenvolvimento de
software têm a duração de 30 horas. Aproximadamente 10 horas são utilizadas para a apresentação de
conceitos sobre teste de software. Nas outras 20 horas, são realizados exercícios práticos aplicando os
conceitos utilizados, a partir de contextos compostos por cenários de teste definidos a partir de software
da área da saúde.
EXEMPLO MOTIVACIONAL
Alguns exemplos frequentemente utilizados na literatura e em cursos sobre técnicas de teste caixa-preta
clássicas tais como particionamento em classes de equivalência e análise de valores limite são o de um
programa que soma dois números inteiros e o de um programa que recebe três medidas de lados de um
triângulo e gera como saída o tipo do triângulo (isósceles, escaleno ou equilátero). Profissionais da área
da saúde que estão aprendendo estas técnicas dificilmente conseguem transpor os objetivos e a
dinâmica de utilização das técnicas a partir destes exemplos simples para o contexto de sistemas de
software críticos e complexos do domínio da saúde. Alguns exemplos: como aplicar as técnicas para um
software realiza a análise de um mapeamento genético ou de um software que auxilia na anamnese em
deficiências sensoriais, voltada a neurologia infantil? Por outro lado, professores ou instrutores que
ensinam as técnicas de teste normalmente não possuem este conhecimento avançado em domínios tão
específicos e complexos.
FORÇAS
É bastante frequente, na literatura, o uso de cenários de teste bastante simples. Ainda que sejam
didáticos, muitas vezes a simplicidade acaba passando ao aluno a ideia de que as técnicas são também
muito simples, não gerando valor em cenários da vida real.
Por outro lado, se cenários de um contexto real de aplicação são utilizados, a complexidade inerente à
situação torna a aplicação da técnica de teste recém aprendida muito difícil, o que também pode dar ao
aluno a impressão de que as técnicas de teste não são aplicáveis em cenários da vida real.
Também é importante considerar que as técnicas devem ser ensinadas de forma que os alunos não só
aprendam a utilizá-las, mas também desenvolvam a capacidade para entender quando estas podem ser
aplicadas com suas debilidades e seus pontos fortes, assim como para adaptá-las, caso necessário, para
situações específicas, sem perder o valor da sua essência nem ir contra os princípios que nortearam a
proposta da técnica.
SOLUÇÃO
Aproveite o fato de os alunos terem conhecimento de domínio e faça-os escolher o software e as
funcionalidades que serão submetidas ao teste.
Como os alunos do curso são profissionais que têm conhecimento de domínio de uma ou mais áreas da
saúde, e já utilizam alguns sistemas de software deste domínio, solicita-se, já no início do curso, que
estes próprios alunos selecionem o software que será testado. O software pode ser selecionado por
duplas de alunos, ou individualmente, deve ser da área da saúde. A partir da escolha do software, os
alunos identificam um conjunto restrito de funcionalidades que serão utilizadas para a aplicação das
técnicas de teste apresentadas.
O professor tem a responsabilidade de revisar a escolha do software, a identificação do subconjunto de
funcionalidades e a aplicação das técnicas, com o cuidado de equilibrar a complexidade a partir da
proposta dos alunos. Caso a aplicação das técnicas seja realizada de forma muito simplificada, ou esteja
sendo dificultada, o professor deve sugerir a ampliação ou a redução do escopo de teste.
EXEMPLO RESOLVIDO
O aprofundamento no conhecimento das técnicas de teste caixa-preta e sua aplicação em exemplos de
software fornecidos pelo próprio proporcionam uma interação de conhecimento entre
professores/instrutores e alunos. Por um lado, os professores/instrutores conhecem bem as técnicas de
teste, incluindo suas características relacionadas à análise de domínio. Por outro lado, os alunos
conhecem bem o domínio e o contexto de uso do software em teste. A integração destes conhecimentos
faz com que seja possível a utilização efetiva de técnicas de teste para a avaliação de atributos de
sistemas de software específicos da área da saúde, gerando valor para todos os envolvidos.
CONTEXTO RESULTANTE
Como a escolha do software a ser testado, para a aplicação das técnicas de teste propostas no curso, é
realizada pelos próprios alunos, estes tendem a escolher sistemas de software nos quais têm interesse.
Este é um fator de motivação para a realização dos testes, que ajudam nesta investigação das
funcionalidades do software.
Outro fator de motivação é que as funcionalidades do escopo de teste também são escolhidas pelo
aluno. Assim este é envolvido na problematização da situação.
Caso haja problemas na definição do escopo de teste, seja por este ser simples ou complexo demais, há
intervenção do professor, que deve realizar avaliações graduais do conteúdo apresentado. Os alunos
tendem a entender a intervenção do professor, já que estão realizando os testes de forma ativa, e não
apenas aprendendo as técnicas de maneira conceitual.
Ejemplo de descripción textual completa:
15. @herbert_juliana | #testinguy
Equilibrando Complejidad, Tiempo y Utilidad en Escenarios de TestingEquilibrando Complejidad, Tiempo y Utilidad en Escenarios de TestingEquilibrando Complejidad, Tiempo y Utilidad en Escenarios de TestingEquilibrando Complejidad, Tiempo y Utilidad en Escenarios de Testing
• PROBLEMA: ¿Cómo definir escenarios de testing suficientemente simples
para ser utilizados en el curso y suficientemente complejos para
fácilmente escalar a problemas reales?
• SOLUCIÓN: Aproveche el hecho de que los alumnos tengan conocimiento
de dominio y los haga elegir el software y las funcionalidades que serán
sometidas al testing.
16. @herbert_juliana | #testinguy
¡No hay testing perfecto!¡No hay testing perfecto!¡No hay testing perfecto!¡No hay testing perfecto!
• PROBLEMA: ¿Cómo no desmotivar a los alumnos con la imposibilidad de
testing exhaustivo?
• SOLUCIÓN: Presentar un template de plan de testing, con la estrategia
basada en riesgos, para ser utilizado en el proceso de testing del
software elegido.
17. @herbert_juliana | #testinguy
¡No hay un mundo perfecto para el testing!¡No hay un mundo perfecto para el testing!¡No hay un mundo perfecto para el testing!¡No hay un mundo perfecto para el testing!
• PROBLEMA: ¿Cómo enseñar a los alumnos la importancia de planificar y
documentar el testing, incluso en proyectos con fuertes restricciones de
presupuesto y de plazos?
• SOLUCIÓN: Enseñe al alumno a hacer la planificación del testing utilizando
niveles y formas de cobertura, además de hacerlo evaluar proyectos de
sus compañeros de clase.
Nivel 1 – Camino feliz.
Nivel 2 – Condiciones negativas y alternativas.
Nivel 3 – Por ejemplo, otros idiomas y otras plataformas.
Testing por profundidad.
Testing por alcance.
18. @herbert_juliana | #testinguy
Defectos Similares en Situaciones SimilaresDefectos Similares en Situaciones SimilaresDefectos Similares en Situaciones SimilaresDefectos Similares en Situaciones Similares
• PROBLEMA: ¿Cómo enseñar a profesionales que no son desarrolladores,
ni testers, la idea de clusters de defectos?
• SOLUCIÓN: Oriente la construcción de un catálogo de defectos que ayude
al alumno a entender el comportamiento de los defectos y la forma en
que éstos se agrupan en el software.
20. @herbert_juliana | #testinguy
Consideraciones FinalesConsideraciones FinalesConsideraciones FinalesConsideraciones Finales
• Difusión de la importancia Y del conocimiento técnico del testing.
• Importancia del conocimiento de dominios complejos.
• Los patterns ayudan a documentar soluciones para problemas que
normalmente no son considerados por las técnicas y estrategias de
testing.
21. @herbert_juliana | #testinguy
Referencias UtilizadasReferencias UtilizadasReferencias UtilizadasReferencias Utilizadas
Alexander, C. et al. A Pattern Language: Towns, Buildings, Construction. Center for
Environmental Structure Series (Book 2). Oxford University Press. 1977. 1171 p.
Gamma, E. et al. Design Patterns: Elements of Reusable Object-Oriented Software.
Addison-Wesley Professional. 1994. 416 p.
Herbert, J. Patterns to teach software testing to non-developers. SugarLoafPLoP '16
Proceedings of the 11th Latin-American Conference on Pattern Languages of
Programming – Proceedings. 2016.
Kaner, C. et al. Testing Computer Software – 2 ed. John Wiley & Sons. 1999. 496 p.
Kaner, C. et al. The Domain Testing Workbook. Context Driven Press. 2013. 488 p.
Myers, G. J. et al. The Art of Software Testing – 3 ed. Wiley. 2011. 240 p.
22. @herbert_juliana | #testinguy
Juliana Herbert
julianash@ufcspa.edu.br
@herbert_juliana
13 y 14 de mayo, 2019
testinguy.org | @testinguy | #testinguy
¿PREGUNTAS?
¡MUCHAS GRACIAS!