📑 Table of Contents
Processo de aceitação de testes

O teste de regressão é uma atividade de verificação e validação de sistemas presente na engenharia de software moderna.[1] Ele é responsável por garantir que as funcionalidades de um software não sejam danificadas com futuras atualizações, garantindo o comportamento esperado na especificação do produto. Espera-se que o valor do teste seja mantido se o código-fonte não for alterado. Porém, ele pode variar (e.g. de falso para verdadeiro e vice-versa) em diferentes execuções sem alterações no código. Este evento caracteriza o teste como flaky ou instável.

ATAF

editar

Considerando que instabilidades em testes são inevitáveis, no Facebook propuseram a seguinte abordagem: assumir que todos os testes possuem seu grau de instabilidade é mais seguro para que o desenvolvedor tenha maior atenção durante sua implementação e também reconheça os padrões de instabilidade em cada cenário de teste. Essa abordagem chama-se ATAF.[2]

As fases de testes mais comuns são: testes de unidade, testes de integração e testes de sistema (e.g. interface do usuário). Os testes de unidade geralmente são mais rápidos e testam funcionalidades de maneira isolada. Já os testes end-to-end e GUI podem ser mais lentos e necessitam de maior interação entre componentes e serviços. Existe a hipótese de que testes end-to-end e UI possuem custo mais elevado, principalmente quando aplicadas técnicas de re-execução para identificar flaky tests. Nesse cenário, tornar-se-ia mais relevante a utilização de técnicas mais rápidas, como aqueles que consideram o vocabulário de casos de teste flaky.

GUI Tests

editar

Em GUI os casos de teste são sequências de eventos, em vez de entradas simples. O resultado a ser testado pode ser um estado esperado para aplicação após a sequência de eventos, ou certa interface esperada. Isto possibilita a simulação de ações que são realizadas na interface em uma ordem específica. O estado atual da interface depende da entrada de eventos e da execução de funções assíncronas. Neste cenário, a instabilidade pode ocorrer por dois motivos: ordem incorreta de eventos ou atraso na execução de funções de callback que retornam dados para interface. Existem fatores associados ao flakiness, são eles: versão da linguagem (e.g. Java), sistema operacional, carga do sistema, ordem de execução, threads de cálculos, atrasos de retorno de dados. Todos esses elementos podem variar de certa maneira inesperada, ocasionando um flaky test.[3]

A instabilidade na maioria das vezes é resultado da dificuldade de se manter cenários de testes idênticos durante múltiplas execuções, revelando um grau de flakiness em todos tipos de testes.[4] Em testes GUI e end-to-end é difícil garantir que a disponibilidade da rede se mantenha, que as plataformas de execução sejam idênticas, e que os fatores ambientais envolvidos não interfiram no processo de teste. Este cenário é fértil para instabilidade relacionada a assincronicidade, diferença de plataformas e renderização de recursos.[5]

Referências

  1. Bell, Jonathan; Legunsen, Owolabi; Hilton, Michael; Eloussi, Lamyaa; Yung, Tifany; Marinov, Darko (27 de maio de 2018). «D e F laker: automatically detecting flaky tests». Gothenburg Sweden: ACM (em inglês): 433–444. ISBN 978-1-4503-5638-1. doi:10.1145/3180155.3180164. Consultado em 25 de abril de 2022 
  2. Harman, Mark; O'Hearn, Peter (setembro de 2018). «From Start-ups to Scale-ups: Opportunities and Open Problems for Static and Dynamic Program Analysis». Madrid: IEEE: 1–23. ISBN 978-1-5386-8290-6. doi:10.1109/SCAM.2018.00009. Consultado em 25 de abril de 2022 
  3. Memon, Atif M.; Cohen, Myra B. (maio de 2013). «Automated testing of GUI applications: Models, tools, and controlling flakiness»: 1479–1480. doi:10.1109/ICSE.2013.6606750. Consultado em 25 de abril de 2022 
  4. Morán, Jesús; Augusto, Cristian; Bertolino, Antonia; Riva, Claudio De La; Tuya, Javier (3 de junho de 2020). «FlakyLoc: Flakiness Localization for Reliable Test Suites in Web Applications». Journal of Web Engineering. ISSN 1544-5976. doi:10.13052/jwe1540-9589.1927. Consultado em 25 de abril de 2022 
  5. Romano, Alan; Song, Zihe; Grandhi, Sampath; Yang, Wei; Wang, Weihang (maio de 2021). «An Empirical Analysis of UI-Based Flaky Tests». IEEE. doi:10.1109/icse43902.2021.00141. Consultado em 25 de abril de 2022 

📚 Artikel Terkait di Wikipedia

Programa Apollo

Flights The Apollo Program NASA's Fortieth Anniversary Audio and Video Clips Apollo 11 30th anniversary The Apollo Program The Apollo Program Cobertura dos

Fast Infrared Exoplanet Spectroscopy Explorer

Spectroscopy Missions for the Post-TESS Era» (PDF). NASA Cosmic Origins Program Analysis Group (COPAG). Consultado em 28 de Abril de 2018  Science & Technology

Missão Hope Mars

objetivos científicos, a equipe de EMM consultou o Mars Exploration Program Analysis Group, um fórum internacional liderado pela NASA que considera as missões

ChatGPT

David N. (10 de agosto de 2023). «Who Answers It Better? An In-Depth Analysis of ChatGPT and Stack Overflow Answers to Software Engineering Questions»

Cromatografia gasosa bidimensional abrangente GC×GC

(GC×GC–TOFMS) in combination with multivariate analysis,Journal of Pharmaceutical and Biomedical Analysis,Volume 43, Issue 5,2007,Pages 1721-1727. Sampat

Herbert Kelman

estadunidense em 1940. Entre 1993 e 2003, foi diretor do Program on International Conflict Analysis and Resolution no Harvard's Weatherhead Center for International

Eleição presidencial no Brasil em 2026

12 de novembro de 2022  Paraguassu, Lisandra (14 de dezembro de 2021). «Analysis: A possible alliance in the making between Lula, former rival in Brazil

Reinhard Wilhelm

Sagiv, Jörg Bauer: An Appreciation of the Work of Reinhard Wilhelm. Program Analysis and Compilation, Theory and Practice (Springer, 2007), Lecture Notes