SCoTUAM: uma abordagem para seleção de componentes para testes unitários em Aplicações Móveis - Lima, Josias Gomes (2018)
O teste de unidade é o nível de teste de software pelo qual partes individuais do código fonte são testadas. A realização deste tipo de teste traz alguns benefícios, tais como redução de falhas em recursos já existentes, melhoram a estrutura do código, diminuem os efeitos colaterais (side effects) e reduzem o medo da alteração do código (Burke e Coyner, 2017). No entanto, a atividade de teste para aplicações móveis tem o tempo reduzido, fazendo com que alguns desenvolvedores optem por não criar os testes de unidade. O tempo reduzido faz com que a automatização dos testes se torne uma necessidade. Nesse contexto, este trabalho propõe um plugin para auxiliar os desenvolvedores na seleção de componentes que tenham um maior valor em relação ao custo x benefício do teste de unidade em aplicações móveis da plataforma Android. Para medir o valor do custo e benefício dos componentes, foram escolhidas as seguintes métricas: halstead effort (HE), custo de manutenção futura (CMF), cheiros de código (CS), frequência de chamadas (FC), risco de falhas (RF), vulnerabilidade de mercado (VM) e valor de negócio VN. O plugin proposto possui três processos principais: (1) Extração de métricas estáticas, (2) Extração de métricas dinâmicas, de mercado e de negócio e (3) Execução do algoritmo genético para seleção dos componentes a serem testados. O plugin chamado SCoTUAM pode ser adicionado à interface de desenvolvimento da IDE Android Studio. Neste trabalho foram realizados dois estudos empíricos para avaliação do plugin proposto. No primeiro estudo, o propósito foi analisar a correlação das métricas, onde o resultado mostrou a possibilidade de usar as métricas CMF, CS, FC, RF, VM e VN combinadas em uma solução multiobjetivo. No segundo estudo, o objetivo foi analisar a eficácia do plugin em selecionar componentes com erro comparado com a seleção manual realizada por especialistas em teste de unidade em aplicações móveis Android, onde o resultado mostrou a viabilidade da proposta em auxiliar o desenvolvedor na seleção de componentes para o teste de unidade.