Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Eliane Collins - A Aprendizagem de Máquina na Automação de teste - Os Próximos passos para automação eficiente e ágil

Agile Testers
November 14, 2017

Eliane Collins - A Aprendizagem de Máquina na Automação de teste - Os Próximos passos para automação eficiente e ágil

A Aprendizagem de Máquina, atualmente é uma área importante e em evidência. As técnicas de aprendizado de máquina são usadas em inúmeras aplicações como carros autônomos, sistemas de recomendação, sistemas de identificação. robótica e inclusive no teste de software para gerar casos de teste, classificar, agrupar e prever defeitos. Em se tratando de automação de testes, na maioria das vezes há demanda de recursos, de supervisão e constante manutenção de seu ambiente, nesse sentido, as técnicas de aprendizagem de máquina podem ajudar na previsão e decisão de testes que facilitem a agilidade do processo.

Agile Testers

November 14, 2017
Tweet

More Decks by Agile Testers

Other Decks in Technology

Transcript

  1. A Aprendizagem de Máquina na Automação de teste - Os

    Próximos passos para automação eficiente e ágil. MSc. Eliane Collins
  2. Apresentação Eliane Collins • +13 anos de experiência na área

    Teste de Software (Gerenciamento, Planejamento e Execução de Processo de Teste e Automação de Teste). • Consultora Quality Assurance na empresa americana Primotus • Co-Fundadora da Testing and Play • Doutoranda de Ciência da Computação na USP. • CTAL-TM – Certified Test Advanced Level (BSTQB/ISTQB) • Publicações SBQS, CBSOFT, ICTSS, AST, ICGSE, COMPUSAC, Global Scrum Gathering, Revista Engenharia de Software Magazine – ESM (DEVMedia). • Capítulo de livro: Introdução ao Teste de Software e Automação de Teste de Sofware da SBC. • E-mail: [email protected][email protected] 2
  3. Aprendizagem de Máquina Definição de Tom Mitchell: • Machine Learning

    is the study of computer algorithms that improve automatically through experience. • Para aprender com a experiência passada, para isso é empregado o princípio de inferência denominado Indução. 3
  4. Aprendizagem de Máquina Aplicações: • Reconhecimento de fala • Previsão

    da taxa de cura de pacientes com doenças • Carros autônomos • Detecção de fraude de cartão de crédito • Jogador de xadrez • Diagnóstico do câncer através da análise genética 4
  5. Aprendizagem de Máquina - Categorias 8 Supervisionado • Classificação •

    KNN, Logistic Regression, Naive Bayes, SVM • Decision Tree • Random Forest • Regressão • Linear • Polinomial Não Supervisionado • Agrupamento • SVD, PCA, K-means • Associação • A PRIORI • FP Growth • Sumarização Reforço • Value Function • Sampling • Policy Search
  6. Aprendizagem de Máquina - Categorias 9 Supervisionado • Classificação •

    KNN, Logistic Regression, Naive Bayes, SVM • Decision Tree • Random Forest • Regressão • Linear • Polinomial Não Supervisionado • Agrupamento • SVD, PCA, K-means • Associação • A PRIORI • FP Growth • Sumarização Reforço • Value Function • Sampling • Policy Search Semi-Supervisionado
  7. Aprendizagem de Máquina - Categorias 10 Supervisionado • Classificação •

    KNN, Logistic Regression, Naive Bayes, SVM • Decision Tree • Random Forest • Regressão • Linear • Polinomial Não Supervisionado • Agrupamento • SVD, PCA, K-means • Associação • A PRIORI • FP Growth • Sumarização Reforço • Value Function • Sampling • Policy Search Semi-Supervisionado o resultado é conhecido por um “supervisor“ externo e o objetivo é aprender uma regra que mapeia as entradas para prever resultados. Os dados são rotulados
  8. Aprendizagem de Máquina - Categorias 11 Supervisionado • Classificação •

    KNN, Logistic Regression, Naive Bayes, SVM • Decision Tree • Random Forest • Regressão • Linear • Polinomial Não Supervisionado • Agrupamento • SVD, PCA, K-means • Associação • A PRIORI • FP Growth • Sumarização Reforço • Value Function • Sampling • Policy Search Semi-Supervisionado Não há dados rotulados. O objetivo deste paradigma é aprender a agrupar ou associar itens similares.
  9. Aprendizagem de Máquina - Categorias 12 Supervisionado • Classificação •

    KNN, Logistic Regression, Naive Bayes, SVM • Decision Tree • Random Forest • Regressão • Linear • Polinomial Não Supervisionado • Agrupamento • SVD, PCA, K-means • Associação • A PRIORI • FP Growth • Sumarização Reforço • Value Function • Sampling • Policy Search Semi-Supervisionado Neste paradigma o decisor após uma sequência de ações, recebe feedback, sob a forma de recompensa
  10. Aprendizagem de Máquina - Categorias 13 Supervisionado • Classificação •

    KNN, Logistic Regression, Naive Bayes, SVM • Decision Tree • Random Forest • Regressão • Linear • Polinomial Não Supervisionado • Agrupamento • SVD, PCA, K-means • Associação • A PRIORI • FP Growth • Sumarização Reforço • Value Function • Sampling • Policy Search Semi-Supervisionado Existem dados rotulados e não rotulados
  11. Aprendizagem de Máquina Que paradigma/técnica/algoritmo usar? • Depende do problema

    a ser modelado. Exemplos: • Supervisionado pode prever a probabilidade de as transações de cartão de crédito serem fraudulentas. • Não Supervisionado podem ser usados para recomendações e verificar valores discrepantes de dados • Reforço é muito usado na robótica e jogos 14
  12. Sobre o Teste de Software 15 Planejamento e Controle •Definir

    objetivos do teste •Especificar as atividades para alcançar os objetivos •Comparar progresso atual com o que foi planejado •Tomar ações para alcançar os objetivos do projeto Análise e Modelagem •Transformar objetivos gerais em condições e modelos de teste tangíveis •Avaliar a testabilidade dos requisitos do sistema •Identificar e prioriza condições ou requisitos levando em consideração os dados de teste •Exeritar as condições de uso do software •Projetar e Priorizar os casos de teste de alto nível •Criar uma rastreabilidade entre requisitos e casos de teste Implementação e execução •Preparar ambiente para teste •Finalizar, implementar e priorizar os casos de teste •Criar procedimentos de teste •Agrupar os casos em suítes de teste para testes eficientes •Escrever scripts automatizados para teste •Executar testes manuais ou automatizados •Registrar resultados da execução do teste •Analisar e reportar incidentes •Comparar resultados Avaliação dos critérios de saída e relatórios •Checar logs de teste mediante critério de encerramento especificado no planejamento •Avaliar se são necessários testes adicionais •Elaborar relatório resumido de teste para os interessados Atividades de encerramento de teste •Checar os entregáveis entregues •Documentar aceite do sistema •Levantar lista de mudançar que permaneceram em aberto para futuras correções •Finalizar e armazenar o testware para reutilização •Escrever e analisar lições aprendidads •Aplicar melhorias na maturidade do processo a partir das informações coletadas •Escrever resumo de teste
  13. Teste de Software • Na maioria das empresas há pouco

    tempo para as atividades de teste. • Grande parte das empresas mantém testes funcionais de sistema manuais. • Não há pessoas suficientes para testar. • Equipes de teste sobrecarregadas demais para analisar os resultados e promover melhorias 16
  14. Teste de Software • Mesmo em metodologias ágeis, o teste

    automático não substitui a necessidade do teste manual. • Lidar com a “Imprevisibilidade” do ser humano. • A automação de teste precisa de constante manutenção e supervisão humana. • Script de teste sem inteligência 17
  15. Solução Aprendizagem de Máquina no Teste de Software 18 Vários

    tipos de dados podem ser coletados ao testar o software. Por exemplo, execução e informações de cobertura para casos de teste podem ser capturados em diferentes níveis de detalhes.
  16. Aprendizagem de Máquina no Teste de Software Principais Aplicações •

    Especificação de teste e refinamento de suítes de teste. • Localização de falhas • Predição de defeitos • Oráculos de teste • Geração de Caso de Teste / Priorização • Otimização de processo testes • Análise de dados de teste 19
  17. Aprendizagem de Máquina no Teste de Software Aplicações • Especificação

    de teste e refinamento de suítes de teste. • Localização de falhas • Predição de defeitos • Oráculos de teste • Geração de Caso de Teste / Priorização • Otimização de processo testes • Análise de dados de teste 20 Ferramentas da IBM, HP, Appdiff, Amazon robot já incorporaram Aprendizagem de máquina
  18. Aprendizagem de Máquina no Teste de Software Como é feita?

    • Primeiro ponto é gerar uma base de teste de software e realizar tratamento para evitar redundância, ruídos ou informações incompletas. • Base com histórico de casos de teste, execuções, falhas... 21
  19. Aprendizagem de Máquina no Teste de Software • Gerar casos

    de teste executar testes seguem um princípio parecido • A partir de uma base de dados com as técnicas e com as informações do software, como requisitos ou código, um algoritmo poderá ser treinado. • A geração de casos de teste poderá ser redundante e precisará fazer refinamento • Os casos de teste refinados deverão ser priorizados. • Técnicas de Aprendizagem de máquina semi-supervisionada por e por reforço estão sendo utilizadas e pesquisadas nesses cenários 26
  20. Aprendizagem de Máquina no Teste de Software Implementação em várias

    linguagens • Python • Java • Mathlab • R. • C++ • C. • JavaScript. • Scala. • Julia. 27
  21. Aprendizagem de Máquina no Teste de Software Como saber se

    está certo? Principais Indicadores • Área de cálculo sob a curva (AUC) avalia as taxas positivas falso positivo e verdadeiro usando a curva. • Característica de operação do receptor (ROC) em diferentes configurações de limite. O gráfico ROC significa que o canto superior esquerdo do enredo é o ponto "ideal“. 28
  22. Aprendizagem de Máquina no Teste de Software Como saber se

    está certo? Principais Indicadores • A Precisão é uma medida de correção e fornece uma relação entre defeitos de software corretamente classificados • F1_score é uma média ponderada da precisão • F1 atinge seu melhor valor em 1 e pior pontuação em 0. encontrar todas as amostras positivas. 29
  23. Aprendizagem de Máquina no Teste de Software É importante lembrar

    • A solução gerada para um determinado padrão de dados não terá o mesmo desempenho em um padrão diferente. • Por exemplo: Uma maquina de aprendizado para reconhecimento de voz não será a mesma para reconhecimento de imagem ou de texto. • Técnicas e parâmetros devem ser ajustados e o algoritmo treinado. 31
  24. Aprendizagem de Máquina no Teste de Software Benefícios • Melhor

    qualidade - Previsão, prevenção e automação usando algoritmos de autoaprendizagem • Tempo para ir o mercado - Redução significativa dos esforços com cobertura completa do teste. • Cognitividade - localização de defeitos, auxiliando feedback inicial com execução autônoma. • Rastreabilidade - cobertura de teste e requisito, bem como, identificando casos de testes resundantes 32
  25. Aprendizagem de Máquina no Teste de Software Benefícios • Agilidade

    ao processo de teste • Testes automáticos eficientes e mais ágeis • Análise de dados de teste e sistema de recomendação e auxílio de decisões (data mining) • Percepção de maior valor das atividades e informações de teste geradas 33
  26. Aprendizagem de Máquina no Teste de Software Desafios • Dados

    históricos de teste para compor a base de dados. • Processar e tratar os dados tomam tempo • Ajuste de parâmetros para cada técnica • Comparar resultados com base nos indicadores • Integração com outras ferramentas • Cloud Testing • Mudança de paradigma 34
  27. Aprendizagem de Máquina no Teste de Software Pesquisas na área

    de aplicação para teste funcional em crescimento nos últimos anos 35
  28. Aprendizagem de Máquina no Teste de Software Eles estão chegando....

    • CEO da Appdiff Jason Arbon • “In my experience, the most part of testing is repetitive. This work is solvable by AI (Artificial Inteligence). The real value in human-powered testing is the creativity required to either identify problems that are subjective or discover bugs that some of the smartest people around didn’t think” • O aprendizado de máquina vem mudando a forma que se desenvolve software. • O aprendizado de Máquina não acabará com o trabalho do Analista/Engenheiro de Teste mas poderá mudar a forma a qual trabalham dentro de alguns anos. 36
  29. Referências • COMMUNITY, S. Sklearn. 2017. Disponível em: <http://scikit-learn.org>. •

    MITCHEL Tom, Machine Learning, 1997. • Singh, N. Thakur and A. Sharma, "A review of supervised machine learning algorithms," 2016 3rd International Conference on Computing for Sustainable Global Development (INDIACom), New Delhi, 2016, pp. 1310-1315. • . Lessmann, B. Baesens, C. Mues and S. Pietsch, "Benchmarking Classification Models for Software Defect Prediction: A Proposed Framework and Novel Findings," in IEEE Transactions on Software Engineering, vol. 34, no. 4, pp. 485-496, July-Aug. 2008. doi: 10.1109/TSE.2008.35 • Briand, Lionel & Labiche, Yvan & Bawar, Zaheer. (2008). Using Machine Learning to Refine Black-Box Test Specifications and Test Suites. Proceedings - International Conference on Quality Software. 135-144. 10.1109/QSIC.2008.5.