Name: | Description: | Size: | Format: | |
---|---|---|---|---|
3.54 MB | Adobe PDF |
Advisor(s)
Abstract(s)
Testing is a core component of software development, safeguarding the reliability of the code. However, some tests may provide unexpected outcomes, non-deterministically passing or failing. Such tests are deemed flaky. Known to delay releases and reduce the overall effectiveness and efficiency of testing these tests have become a key problem. Affecting the entire industry, awareness, and research on the topic have risen significantly in recent years. This dissertation presents a systematic literature review on flaky test research's state of the art. It details the research methodology used and provides an overview of recent developments in
the field. The review addresses four dimensions: causes, detection, repair, and tool integration. Each dimension is analyzed to classify flakiness and detail tools and methodologies capable of addressing different aspects of flakiness. In this manner, the dissertation comprehensively examines recent strategies for addressing flaky tests. Among the categories of flakiness, order-dependency has received the most research focus, with several tools available for detecting and repairing this category specifically. However, there is a notable lack of tools capable of both detecting and repairing flaky tests in a unified manner. By studying and evaluating individual tools, this dissertation assesses the potential compatibility between already existing and available methodologies, allowing for the development of a prototype for a unified order-dependency flakiness solution.
Evaluating this prototype against the individual execution of its components reveals that
integrating existing tools enhances usability while preserving comparable levels of recall and
execution time. This analysis highlights the necessity for standardizing the inputs and outputs
of order-dependency detection and repair tools. Additionally, it shows that complete detection
Os testes são um componente essencial do desenvolvimento de software, garantindo a confiabilidade do código. No entanto, alguns testes podem fornecer resultados inesperados, passando ou falhando de maneira não determinística. Estes testes são chamados flaky. Conhecidos por atrasar lançamentos e reduzir a eficácia e eficiência geral dos testes, esses testes tornaram-se um problema importante. Afetando toda a indústria, a consciencialização e a pesquisa sobre o tema aumentaram significativamente nos últimos anos. Esta dissertação apresenta um panorama geral sobre o estado da arte da pesquisa de testes flaky realizando uma revisão sistemática da literatura. Detalha a metodologia de pesquisa utilizada e fornece uma visão geral dos desenvolvimentos recentes na área. A revisão aborda quatro dimensões: causas, detecção, reparo e integração de ferramentas. Cada dimensão é analisada para classificar a flakiness e detalhar ferramentas e metodologias capazes de abordar diferentes aspectos da mesma. Desta forma, a dissertação examina de forma abrangente as estratégias recentes para lidar com testes flaky. Entre as categorias de flakiness, a dependência de ordem recebeu o maior foco de pesquisa, com várias ferramentas disponíveis para detectar e reparar especificamente essa categoria. No entanto, há uma falta notável de ferramentas capazes de detectar e reparar testes instáveis de maneira unificada. Ao estudar e avaliar ferramentas individuais, esta dissertação avalia a compatibilidade potencial entre metodologias existentes, abrindo caminho para o desenvolvimento de um protótipo para uma solução unificada de instabilidade por dependência de ordem. A avaliação deste protótipo em comparação com a execução individual dos seus componentes revela que a integração de ferramentas pré-existentes melhora a usabilidade, mantendo níveis comparáveis de recall e tempo de execução. Esta análise destaca a necessidade de padronizar as entradas e saídas de ferramentas de deteção e reparação de dependência de ordem. Adicionalmente, mostra que soluções completas de deteção e reparação podem ser desenvolvidas eficazmente utilizando componentes pré-existentes como base.
Os testes são um componente essencial do desenvolvimento de software, garantindo a confiabilidade do código. No entanto, alguns testes podem fornecer resultados inesperados, passando ou falhando de maneira não determinística. Estes testes são chamados flaky. Conhecidos por atrasar lançamentos e reduzir a eficácia e eficiência geral dos testes, esses testes tornaram-se um problema importante. Afetando toda a indústria, a consciencialização e a pesquisa sobre o tema aumentaram significativamente nos últimos anos. Esta dissertação apresenta um panorama geral sobre o estado da arte da pesquisa de testes flaky realizando uma revisão sistemática da literatura. Detalha a metodologia de pesquisa utilizada e fornece uma visão geral dos desenvolvimentos recentes na área. A revisão aborda quatro dimensões: causas, detecção, reparo e integração de ferramentas. Cada dimensão é analisada para classificar a flakiness e detalhar ferramentas e metodologias capazes de abordar diferentes aspectos da mesma. Desta forma, a dissertação examina de forma abrangente as estratégias recentes para lidar com testes flaky. Entre as categorias de flakiness, a dependência de ordem recebeu o maior foco de pesquisa, com várias ferramentas disponíveis para detectar e reparar especificamente essa categoria. No entanto, há uma falta notável de ferramentas capazes de detectar e reparar testes instáveis de maneira unificada. Ao estudar e avaliar ferramentas individuais, esta dissertação avalia a compatibilidade potencial entre metodologias existentes, abrindo caminho para o desenvolvimento de um protótipo para uma solução unificada de instabilidade por dependência de ordem. A avaliação deste protótipo em comparação com a execução individual dos seus componentes revela que a integração de ferramentas pré-existentes melhora a usabilidade, mantendo níveis comparáveis de recall e tempo de execução. Esta análise destaca a necessidade de padronizar as entradas e saídas de ferramentas de deteção e reparação de dependência de ordem. Adicionalmente, mostra que soluções completas de deteção e reparação podem ser desenvolvidas eficazmente utilizando componentes pré-existentes como base.
Description
Keywords
Flaky tests Non-determinism Software testing Order dependency Testes flaky Testes de software Não-determinismo Dependência de ordem