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

Evolução de técnicas e ferramentas para automação de teste de software

Evolução de técnicas e ferramentas para automação de teste de software

Palestra apresentada pelo Eliane Collins na 49º Python Floripa on-line https://www.youtube.com/watch?v=BcXqayDSp-I

Python Floripa

July 25, 2020
Tweet

More Decks by Python Floripa

Other Decks in Technology

Transcript

  1. Apresentação • Eliane Collins • +15 anos de experiência na

    área Teste de Software (Pesquisa, Gerenciamento, Planejamento, Processo de Teste e Automação de Teste). • Gerente de Projetos no INDT • co-Fundadorada Testing and Play • Professora da pós da Uniciv • Doutoranda de Ciência da Computaçãona USP. • CTAL-TM – Certified Test Advanced Level (BSTQB/ISTQB), CSD – Certified Scrum Developer (Scrum Alliance) • Publicações SBC: SBQS, CBSOFT. • Publicações IEEE: ICTSS , AST, ICGSE, COMPUSAC. • Capítulode livros: Introduçãoao Teste de Software 2016 e Automação de Teste de Sofware da SBC 2018 • E-mail: [email protected][email protected] 2
  2. Aprendizado de Máquina Agenda 3 Inteligência Artificial 1. Teste de

    Software 2. Automação de Testes 3. Desafios da Automação de testes 4. Ferramentas e Tendências 5. Habilidades 6. Referencias
  3. Teste de Software Testing is the process of executing a

    program with the intent of finding errors (Myers).
  4. Teste de Software Testes em cada camada de software •

    Unit Testing – Teste da lógica do código • Integration Testing – Teste da camada de API e integração entre as classes • System Testing – Teste em nível de sistema • Acceptance Testing – Teste de aceitação do usuário.
  5. Teste de Software Técnicas de teste • Teste Estático -

    sw não está em execução • Revisão : revisões de documentos e de código. • Análise estática de código: análise automática do código em busca de anomalias (catch vazio, fluxo não encerrado...) • Teste Dinâmico - sw em execução • Caixa branca: teste de fluxo de comandos, todos os caminhos. • Caixa Preta: partição de equivalência, análise de valor limite, tabela de decisão, teste exploratório ...
  6. Automação de Teste de Software Conceito Automatizar testes significa fazer

    uso de outros softwares que controlem a execução dos casos de teste. O uso desta prática pode reduzir o esforço necessário para os testes em um projeto de software, ou seja, executar maiores quantidades de testes em tempo reduzido (TUSCHLING, 2008). 7
  7. Automação Teste de Software O que e como automatizar? •

    Planejamento é essencial para a automação de teste. • Automação de casos de teste repetitivos poupam tempo para que o testador se dedique aos testes de regras de negócio que agrgam valor ao software. • É necessário ter um ambiente de teste com ferramentas necessárias e integradas ao ambiente de desenvolvimento. • A escolha de ferramentas é fundamental para um bom ambiente de automação. 8
  8. Vantagens • O esforço necessário para os testes, ou seja,

    executar maiores quantidades de testes em tempo reduzido. • Documentos e relatórios de teste são gerados automaticamente. • Testes manuais repetitivos que levam horas para serem totalmente executados, levam minutos ou segundos se automatizados. • Segurança na execução, reusabilidade de testes, manutenibilidade e histórico. • Executar mais possibilidades de dados de entrada no sistema. • O Analista de teste se concentra nas regras de negócio do cliente. • O Retorno sobre Investimento em testes automatizados se dá, principalmente, pela economia no valor investido em testes manuais e na redução do tempo na execução dos teste. 10 Automação Teste de Software
  9. Teste Tradicional Teste Ágil Teste Contínuo Teste Digital Robótica IOT

    Inteligência Artificial Realidade Virtual/ Aumentada etc DevOps Automação Teste de Software
  10. Teste Tradicional Teste Ágil Teste Contínuo Teste Digital Robótica IOT

    Inteligência Artificial Realidade Virtual/ Aumentada etc DevOps • Valores do Manifesto Ágil • Reação rápida à mudanças • Teste Proativo • Integração Contínua • Automação de Teste • TDD, BDD ... Automação Teste de Software
  11. Teste Tradicional Teste Ágil Teste Contínuo Teste Digital Robótica IOT

    Inteligência Artificial Realidade Virtual/ Aumentada etc DevOps Automação Teste de Software
  12. Automação Teste de Software Teste Tradicional Teste Ágil Teste Contínuo

    Teste Digital Robótica IOT Inteligência Artificial Realidade Virtual/ Aumentada etc DevOps • Colaboração • Testes logicamente compostos, incrementais e repetitivos; os resultados devem ser determinísticos e significativos. • Todos os testes precisam ser executados em algum momento no pipeline, mas nem todos os testes precisam ser executados o tempo todo. • Elimine os dados de teste e as restrições do ambiente. • Enfatizar o teste de APIs durante testes de GUI
  13. • Pirâmide de Mike Cohn. 15 Pirâmide de automação de

    teste de Mike Cohn (adaptado de CRISPIN e GREGORY, 2010) Testes Manuais Automação Teste de Software
  14. Desafios da Automação de Teste Evaluate tools x create new

    tool Tools selection activities definition, level of tests ... Test Automation Scope Test Report Results and Analysis Define resources, cronogram, people... Strategic Planning Test automation environment configuration Environment Configuration implementation of test scenarios, code review, continuous integration Test Scripts implementation code analysis • Entrada manual de script de teste é considerada um gargalo • Scripts devem ser de fácil manutenção • Alta dependência de supervisão humana • Imprevisibilidade • Alinharcom as expectativasdo projeto
  15. Teste Tradicional Teste Ágil Teste Contínuo Teste Digital Robótica IOT

    Inteligência Artificial Realidade Virtual/ Aumentada etc DevOps Desafios da Automação Teste de Software Desafio : Teste de Software não determinístico
  16. • Linguagens script (Python,Ruby...) emergem como principais para automação de

    teste . • Compatibilidade de comunicação e acessos (ex. Android adb) • Preferência por ambientes portáveis e multiplataforma • Facilidade para integração com outras bibliotecas de outras plataformas. 19 Ferramentas e Tendências
  17. • Pytest #!/usr/bin/env python3 import algo def test_min(): values =

    (2, 3, 1, 4, 6) val = algo.min(values) assert val == 1 def test_max(): values = (2, 3, 1, 4, 6) val = algo.max(values) assert val == 6 20 Ferramentas e Tendências
  18. • Robot framework • Pode ser usado com Selenium e

    Appium 23 Ferramentas e Tendências
  19. Testing Tools • Evosuíte (free)- unit test case generation -

    genetic algorithm ◦ http://www.evosuite.org/ • Intellij Plugin Microsoft Intellitest - .Net ◦ https://docs.microsoft.com/en- us/visualstudio/test/intellitest- manual/?view=vs-2019
  20. Outras Tendências... • Test.ai builder- para appium (free) - end

    to end testing ◦ Java client ◦ Python client ◦ Node client ◦ Ruby client ◦ https://github.com/testdotai/classifier-builder • Testim - commercial tool https://www.testim.io/test-automation-tool/ • SmartAPI Test Generation - commercial tool - https://docs.parasoft.com/display/SOA9106/Traini ng+the+Smart+API+Test+Generator
  21. Habilidades • Conhecimento em técnicas de teste de software tanto

    para caixa branca como para caixa preta • Conhecimento em lógica, linguagens de programação e padrões de programação • Conhecimento em integração contínua • Conhecimento de métricas de qualidade • Estudar tecnologias emergentes, como Análise de dados. Aprendizado de máquina, e outras plataformas.
  22. Considerações • O teste de software passa por rápidas transformações

    de acordo com as novas tecnologias emergindo. • Clientes cada vez menos tolerantes a falhas em produtos. Testar não é negociável. • Há falta de profissionais capacitados • Cultura de Experimentação em Teste de Software. • “Learning how to work smarter, not harder” • “Não são as espécies mais fortes que sobrevivem, nem as mais inteligentes, e sim as mais suscetíveis a mudanças. “(Charles Darwin)
  23. Referências • DELAMARO, M. E.; MALDONADO, J. C.; JINO, M.,

    eds. Introducao Ao Teste de Software, segunda edicao ed, Rio de Janeiro: Elsevier Editora Ltda., p. 297 – 325, 2016. • GAO, J.; BAI, X.; TSAI, W. T.; UEHARA, T. Mobile application testing: A tutorial. Computer, v. 47, n. 2, p. 46–55, 2014. • Appium, http://appium.io/ • Robot Framework,https://robotframework.org/ • Selenium webdriver, https://www.selenium.dev/ • Kirubakaran, B. and V. Karthikeyani. “Mobile application testing — Challenges and solution approach through automation.” 2013 International Conference on Pattern Recognition, Informatics and Mobile Engineering (2013): 79-84. • DevOps: Are You Pushing Bugs to Clients Faster, by Wayne Ariola and Cynthia Dunlop, PNSQC October 2015 28