Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Charla TestingUy 2019 - Patterns Para Enseñar Testing a Personas que No Desarrollan Software

128 views

Published on

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.

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Charla TestingUy 2019 - Patterns Para Enseñar Testing a Personas que No Desarrollan Software

  1. 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. 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
  3. 3. @herbert_juliana | #testinguy AgendaAgendaAgendaAgenda I. Contexto del Trabajo II. Testing de Software III. Patterns IV. Patterns Propuestos V. Consideraciones Finales
  4. 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. 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.
  6. 6. @herbert_juliana | #testinguy AgendaAgendaAgendaAgenda I. Contexto del Trabajo II. Testing de Software III. Patterns IV. Patterns Propuestos V. Consideraciones Finales
  7. 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
  8. 8. @herbert_juliana | #testinguy Testing de SoftwareTesting de SoftwareTesting de SoftwareTesting de Software Context-driven Testing
  9. 9. @herbert_juliana | #testinguy AgendaAgendaAgendaAgenda I. Contexto del Trabajo II. Testing de Software III. Patterns IV. Patterns Propuestos V. Consideraciones Finales
  10. 10. @herbert_juliana | #testinguy PatternsPatternsPatternsPatterns “The Gang of Four” 1994 1977
  11. 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
  12. 12. @herbert_juliana | #testinguy AgendaAgendaAgendaAgenda I. Contexto del Trabajo II. Testing de Software III. Patterns IV. Patterns Propuestos V. Consideraciones Finales
  13. 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. 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. 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. 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. 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. 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.
  19. 19. @herbert_juliana | #testinguy AgendaAgendaAgendaAgenda I. Contexto del Trabajo II. Testing de Software III. Patterns IV. Patterns Propuestos V. Consideraciones Finales
  20. 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. 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. 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!

×