Buscar

Investigandoestrategiasteste-Costa-2022



Continue navegando


Prévia do material em texto

Universidade Federal do Rio Grande do Norte
Instituto Metrópole Digital
Programa de Pós-graduação em Tecnologia da
Informação
Mestrado Profissional em Tecnologia da
Informação
Investigando Estratégias de Teste de
Regressão: Um Estudo de Caso na
STI-UFRN
Samuel Alves da Costa
Natal-RN
Julho de 2022
Samuel Alves da Costa
Investigando Estratégias de Teste de Regressão: Um
Estudo de Caso na STI-UFRN
Dissertação de Mestrado apresentada ao Pro-
grama de Pós-graduação em Tecnologia da
Informação da Universidade Federal do Rio
Grande do Norte como requisito parcial para
a obtenção do grau de Mestre em Tecnologia
da Informação.
Universidade Federal do Rio Grande do Norte – UFRN
Instituto Metrópole Digital – IMD
Programa de Pós-Graduação em Tecnologia da Informação – PPgTI
Orientador: Dr. Sérgio Queiroz de Medeiros
Coorientador: Dra. Roberta de Souza Coelho
Natal-RN
2022
Costa, Samuel Alves da.
 Investigando Estratégias de Teste de Regressão: Um Estudo de
Caso na STI-UFRN / Samuel Alves da Costa. - 2022.
 75 f.: il.
 Dissertação (mestrado) - Universidade Federal do Rio Grande
do Norte, Instituto Metrópole Digital, Programa de Pós-Graduação
em Tecnologia da Informação, Natal, RN, 2022.
 Orientador: Prof. Dr. Sérgio Queiroz de Medeiros.
 Coorientador: Profa. Dra. Roberta de Souza Coelho.
 1. Teste de software - Dissertação. 2. Testes automatizados
de sistema - Dissertação. 3. Classe de equivalência -
Dissertação. 4. UI.Vision - Dissertação. 5. STI - Dissertação.
I. Medeiros, Sérgio Queiroz de. II. Coelho, Roberta de Souza.
III. Título.
RN/UF/BCZM CDU 004.41
Universidade Federal do Rio Grande do Norte - UFRN
Sistema de Bibliotecas - SISBI
Catalogação de Publicação na Fonte. UFRN - Biblioteca Central Zila Mamede
Elaborado por Ana Cristina Cavalcanti Tinoco - CRB-15/262
Dissertação de Mestrado sob o título Investigando Estratégias de Teste de Regressão: Um
Estudo de Caso na STI-UFRN apresentada por Samuel Alves da Costa e aceita pelo
Programa de Pós-graduação em Tecnologia da Informação da Universidade Federal do Rio
Grande do Norte, sendo aprovada por todos os membros da banca examinadora abaixo
especificada:
Prof. Dr. Sérgio Queiroz de Medeiros
Presidente
ECT – Escola de Ciências e Tecnologia
UFRN – Universidade Federal do Rio Grande do
Norte
Profa. Dra. Roberta de Souza Coelho
Examinador
DIMAp – Departamento de Informática e
Matemática Aplicada
UFRN – Universidade Federal do Rio Grande do
Norte
Prof. Dr. Eiji Adachi Barbosa
Examinador
IMD – Instituto Metrópole Digital
UFRN – Universidade Federal do Rio Grande do
Norte
Prof. Dr. Uirá Kulesza
Examinador
DIMAP – Departamento de Informática Aplicada
UFRN – Universidade Federal do Rio Grande do
Norte
Prof. Dr. Rodrigo Bonifácio de Almeida
Examinador
CIC – Departamento de Ciência da Computação
UnB – Universidade de Brasília
Natal-RN, 18 de julho de 2022.
Samuel Alves da Costa
Investigando Estratégias de Teste de Regressão: Um
Estudo de Caso na STI-UFRN
Dissertação de Mestrado apresentada ao Pro-
grama de Pós-graduação em Tecnologia da
Informação da Universidade Federal do Rio
Grande do Norte como requisito parcial para
a obtenção do grau de Mestre em Tecnologia
da Informação.
Trabalho aprovado. Natal-RN, 18 de julho de 2022.
Prof. Dr. Sérgio Queiroz de Medeiros
Orientador
Profa. Dra. Roberta de Souza Coelho
Examinador
Prof. Dr. Eiji Adachi Barbosa
Examinador
Prof. Dr. Uirá Kulesza
Examinador
Prof. Dr. Rodrigo Bonifácio de
Almeida
Examinador
Natal-RN
2022
Dedico este trabalho aos meus pais: Helena e Manoel.
Agradecimentos
Agradeço a Deus por permitir minha chegada até aqui.
Agradeço aos meus pais Helena e Manoel e aos meus irmãos Daniel e Raquel por
todo apoio.
Agradeço à Universidade Federal do Rio Grande do Norte pela oportunidade de
crescimento profissional.
Agradeço aos meus orientadores, Professor Dr. Sérgio Queiroz de Medeiros e
Professora Dra. Roberta de Souza Coelho, que com paciência, compreensão, empenho e
disciplina me guiaram nesta jornada.
Agradeço ao Professor Dr. Uirá Kulesza que trouxe significativas contribuições ao
trabalho.
Agradeço a Clarissa Lorena, Diretora de Sistemas da Superintendência de Tecno-
logia da Informação - STI-UFRN, pelo incentivo desde o primeiro momento que apresentei
a proposta para cursar o mestrado.
Agradeço a toda minha prezada equipe de trabalho do SIGAA, ao pessoal da
secretaria e a todos os demais colaboradores da STI; em especial Rafael Gomes.
Agradeço ao corpo docente e administrativo do PPgTI (Programa de Pós-Graduação
em Tecnologia da Informação) a todos os demais funcionários do IMD (Instituto Metrópole
Digital).
Agradeço aos meus colegas de turma do PPgTI.
Agradeço a todos que de forma direta ou indireta contribuíram nessa jornada.
Muito obrigado!
O sucesso é a soma de pequenos esforços repetidos dia após dia.
Robert Collier
Resumo
A Superintendência de Tecnologia da Informação - STI, é responsável por desenvolver
e manter os sistemas computacionais da UFRN. Cada sistema possui equipes de testes
responsáveis pelos testes de sistemas. Um destes sistemas é o Sistema Integrado de Gestão
de Atividades Acadêmicas - SIGAA, ele possui mais de 5 mil casos de uso. A equipe de teste
dele realiza testes exploratórios e de regressão manualmente, contudo, para um sistema
desse porte, realizar teste de regressão manual é inviável, de modo que os testes de regressão
acabam sendo feitos em quantidade pouco significativa, porém aumenta-los continuando
da forma manual irá tirar a capacidade de fazer muitos outros testes exploratórios. Devido
ao alto número de casos de uso, é inviável automatizar todos os testes de regressão.
Assim, deseja-se realizar testes automatizados de regressão para funcionalidades que
apresentam maiores chances de falhar e dessa forma encontrar indicadores que irão mostrar
os casos de uso mais relevantes para terem os testes automatizados, permitindo assim
que a equipe de testes possa focar nos testes exploratórios e, de maneira geral, expandir
a cobertura dos testes sem precisar aumentar o número de membros da equipe. Dessa
forma, esta pesquisa buscou estratégias de seleção de funcionalidades para construção
de testes automatizados de sistemas por meio de um estudo de caso na STI-UFRN. A
pesquisa identifica características de casos de uso do SIGAA que devem ter os testes
automatizados priorizados; para isso foram realizados dois estudos que buscaram medir
a influência de critérios como: diferentes complexidades da tela e de tempos da última
alteração; e funcionalidades que demandaram maior tempo de testes manuais durante o
período de um mês. Assim, os testes das funcionalidades escolhidas foram automatizados
com o UI.Vision, considerando as classes de equivalência e happy path na construção deles.
Com base nos resultados das execuções diárias destes testes, foi possível perceber que os
critérios que apresentaram maior relevância para terem os testes automatizados foram:
telas que dependem de serviços externos ao sistema e funcionalidades que demandaram
muitos testes manuais recentemente.
Palavras-chave: Teste de Software; Testes Automatizados de Sistema; Classe de Equivalên-
cia; UI.Vision; STI.
Abstract
The Superintendência de Tecnologia da Informação - STI is responsible for developing and
supporting UFRN’s computational systems. Each system has a testing team responsible
for system testing. One of these systems is the Sistema Integrado de Gestão de Atividades
Acadêmicas - SIGAA, it has more than 5 thousand use cases. The test team performs
exploratory and regression tests manually, however, for a system of this size, performing
manual regression tests is unfeasible, thus the regression tests end up being done in a
negligible amount, but the task to increase the amount of regression tests is not easy,
especially if the are performed manually, given that it will will take away the ability to do
many other exploratory tests. Due to the high number of use cases, it is impracticalto
automate all regression tests. Therefore, the aim is to perform automated regression tests
for features that are most likely to fail and then find indicators that will show the most
relevant use cases at which the automated tests are justified, thus allowing the testing
team to focus on exploratory tests, and, generally speaking, expand test coverage without
having to increase the number of team members. Thus, this research sought strategies for
selecting features for building automated system tests through a case study at STI-UFRN.
This study identifies features from use cases of SIGAA which must have automated tests
prioritized, in order to do this it was performed two studies which sought to measure the
influence of criterias such as: different screen complexity and time from the last change,
features that demanded more time of manual tests during the period of one month. Thus,
the tests of the chosen features were automated with UI.Vision, considering the equivalence
classes and happy path in their construction. Based on a daily execution of these tests,
it was possible to note that the criterias which were more relevant in order to determine
which tests would be automatized were: screens that are dependent on external services
and features which required a large amount of manual tests recently.
Keywords: Software Testing; Automated System Tests; Equivalence Class; UI.Vision; STI.
Lista de ilustrações
Figura 1 – Processo Simplificado de Testes no Fluxo de Sustentação . . . . . . . . 17
Figura 2 – Quadro de tarefas da Versão Atual no GAS (Adaptado) (GAS, 2022) . 18
Figura 3 – Recorte da tela do Relatório de Erros no Inspectore (STI, 2022) . . . . 19
Figura 4 – Print(recorte) da planilha de Acompanhamento - Métricas de Testes
do SIGAA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Figura 5 – Modelo V (PRESSMAN; MAXIM, 2016). . . . . . . . . . . . . . . . . 26
Figura 6 – Fluxo do processo Scrum (PRESSMAN; MAXIM, 2016). . . . . . . . . 28
Figura 7 – Cadastrar Discente (SIGAA, 2021). . . . . . . . . . . . . . . . . . . . . 40
Figura 8 – Cadastrar Componente Curricular (SIGAA, 2021). . . . . . . . . . . . 41
Figura 9 – Recorte da planilha de registro de dados dos testes automatizados . . 47
Figura 10 – Percentual de testes automatizados que com sucesso e falha na execução 50
Figura 11 – Porcentagem de erros relacionados a ambiente/serviço externo e código 51
Figura 12 – Porcentagem de quebras por UC . . . . . . . . . . . . . . . . . . . . . 52
Figura 13 – Porcentagem de UC do G5 que foram testados novamente em maio e
em junho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Figura 14 – Cadastrar Discente de Graduação (imagem completa) (SIGAA, 2021). . 66
Lista de tabelas
Tabela 1 – Os princípios dos métodos ágeis (SOMMERVILLE, 2011). . . . . . . . 28
Tabela 2 – Classes de Equivalência do programa identifier (BARBOSA et al., 2000). 31
Tabela 3 – Classes de Equivalência de Nome (Oficial/Social) . . . . . . . . . . . . 42
Tabela 4 – Classes de Equivalência de Ano de Conclusão (do ens. médio) . . . . . 42
Tabela 5 – Classes de Equivalência de Código (componente curricular) . . . . . . . 43
Tabela 6 – Grupos de casos de uso do Estudo 1 . . . . . . . . . . . . . . . . . . . 45
Tabela 7 – Casos de uso que apresentaram quebra no teste . . . . . . . . . . . . . 47
Tabela 8 – Casos de uso do Estudo 2 . . . . . . . . . . . . . . . . . . . . . . . . . 54
Tabela 9 – Casos de uso do Estudo 2 que demandaram testes em maio . . . . . . 57
Tabela 10 – Casos de uso do Estudo 2 que demandaram testes em junho . . . . . . 57
Lista de Abreviaturas e Siglas
API Application Programming Interface (interface de programação de aplicações)
CSV Comma-separated values
FAT Facilidade de Automação
DAS Diretoria de Atenção à Saúde do Servidor
GAS Gerenciador de Atividades de Sistemas
ISTQB International Software Testing Qualifications Board
RNP Rede Nacional de Ensino e Pesquisa
RPA Robotic Process Automation
SIG Sistema Integrado
SIGAA Sistema Integrado de Gestão de Atividades Acadêmicas
SIGPS Sistema Integrado de Gestão de Processos Seletivos
SiSU Sistema de Seleção Unificada
SPI Software Process Improvement (Melhoria do Processo de Software)
STI Superintendência de Tecnologia da Informação
UC Use case
Sumário
Capítulo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1 INTRODUÇÃO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.1 Contexto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
1.2 Problema de Pesquisa . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.3 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
1.4 Estrutura do Documento . . . . . . . . . . . . . . . . . . . . . . . . . 23
Capítulo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2 CONCEITOS RELACIONADOS . . . . . . . . . . . . . . . . . . . . 24
2.1 A STI e o SIGAA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2 Atividades de Testes do SIGAA . . . . . . . . . . . . . . . . . . . . . 25
2.3 Processo de desenvolvimento na STI baseado no Scrum . . . . . . . 27
2.4 Técnicas de Testes de Software . . . . . . . . . . . . . . . . . . . . . 29
2.4.1 Técnica Estrutural . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4.2 Técnica Funcional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.4.3 Classes de Equivalência . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.5 Utilização do UI Vision na Automatização de Testes . . . . . . . . . 31
Capítulo 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3 TRABALHOS RELACIONADOS . . . . . . . . . . . . . . . . . . . . 33
3.1 Critérios para priorização de testes de regressão . . . . . . . . . . . . 33
3.2 Definindo critérios para priorizar a automação de testes de UC . . . 35
3.3 Critérios para estimar complexidade do UC (página do UC) . . . . . 37
3.4 Discussões acerca dos trabalhos relacionados . . . . . . . . . . . . . 38
Capítulo 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
4 ESTUDO DE CASO NA STI UFRN . . . . . . . . . . . . . . . . . . 39
4.1 UC do SIGAA para exemplificar classes de equivalência . . . . . . . 39
4.1.1 Classes de equivalência para Cadastrar Discente . . . . . . . . . . . . . . . 41
4.1.2 Classes de equivalência em Cadastrar Componente Curricular . . . . . . . . 42
4.2 Estudo 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.3 Estudo 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
Capítulo 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
5 CONSIDERAÇÕES FINAIS . . . . . . . . . . . . . . . . . . . . . . . 59
5.1 Conclusão . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2 Contribuições da pesquisa à STI . . . . . . . . . . . . . . . . . . . . . 61
5.3 Lições Aprendidas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.4 Trabalhos Futuros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
REFERÊNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
APÊNDICES 65
APÊNDICE A – CLASSIFICAÇÃO DA COMPLEXIDADE EM CASO
DE USO . . . . . . . . . . . . . . . . . . . . . . . 66
APÊNDICE B – PLANILHA DE COLETA DIÁRIA DOS TESTES
DO ESTUDO 1 . . . . . . . . . . . . . . . . . . . 68
APÊNDICE C – PLANILHA DE COLETA DIÁRIA DOS TESTES
DO ESTUDO 2 . . . . . . . . . . . . . . . . . . . 74
15
1 Introdução
Com o natural aumento de tamanho e complexidade dos sistemas de software, o
maior desafio na engenharia de software é garantir a confiança desses sistemas; e para
confiar em um sistema é importante saber que ele estará disponível quando necessário e
executará conforme o esperado (SOMMERVILLE, 2011). Dessa forma, além da necessidade
de possuir boa infraestrutura física, é necessário que o sistema funcione de acordo com o
que seespera dele, por isso um software adequadamente testado proporcionará melhor
experiência ao usuário. Sendo que a atividade de teste é crucial para o sucesso de um
projeto de software, mas essa atividade geralmente requer cerca de 50% dos recursos de
desenvolvimento de software (BEIZER, 2003).
Nesse contexto, notoriamente a sociedade demanda por contínuas soluções tec-
nológicas que possam resolver problemas e promover melhor qualidade de vida. Por isso,
softwares cada vez mais complexos precisam ser gerados em tempos menores e com maior
qualidade (SOUZA; OLIVEIRA; MORAES, 2020). Além disso, as soluções em software
propiciam melhor gerenciamento da dinâmica necessária à disseminação do conhecimento,
possibilitando inclusive interiorização das instituições de ensino do País de forma inclusiva.
Diante de tais necessidades da sociedade, é imprescindível investir em estratégias
que contribuam para o desenvolvimento de sistemas, contudo diversos desafios diários
precisam ser vencidos. Realizar controle de qualidade de software é um desafio devido
à alta complexidade do produto e diversas dificuldades relacionadas ao processo de
desenvolvimento, que envolve questões humanas, técnicas, burocráticas, negociais e políticas
(BERNARDO; KON, 2008). Nessa perspectiva, equipes responsáveis por executar as
atividades de controle de qualidade lidam com múltiplos problemas, onde o gerenciamento
das demandas como criação e execução de planos de testes, verificações e validações
diversas são determinantes para o bom funcionamento da ferramenta.
Por isso, para que todos os sistemas funcionem com qualidade, em especial os da
Universidade Federal do Rio Grande do Norte - UFRN que são usados em diversas intuições
brasileiras, eles precisam passar por processos de Teste de Software e serem validados
nas suas respectivas Equipes de Testes, só assim as versões são lançadas no ambiente de
produção. E para cada nova versão a ser lançada os impactos dela são previamente avaliados
e novos testes são refeitos a fim de que as soluções atendam da melhor forma às expectativas
dos usuários sem causar impactos negativos às funcionalidades já estáveis nas versões
anteriores. Por tudo isso, a realização de testes de software, em especial os de regressão1,
1 O teste de regressão envolve a execução de conjuntos de testes que tenham sido executados com
sucesso, após as alterações serem feitas em um sistema. Este teste verifica se essas mudanças não
Capítulo 1. Introdução 16
permite identificar erros gerados pelas melhorias ou correções no software, proporcionam
maior qualidade ao sistema e aumento da confiança nas soluções desenvolvidas.
1.1 Contexto
A Superintendência de Tecnologia da Informação - STI-UFRN é responsável pelo
desenvolvimento dos sistemas SIG da Universidade (STI, 2021), como o Sistema Integrado
de Gestão de Atividades Acadêmicas - SIGAA e o Sistema Integrado de Gestão de Processos
Seletivos - SIGPS que são sistemas acadêmicos; já o Sistema Integrado de Gestão de
Recursos Humanos - SIGRH, e o Sistema Integrado de Patrimônio, Administração e
Contratos - SIPAC, compõem os sistemas administrativos (UFRN, 2021).
Todos esses sistemas citados possuem dois fluxos de desenvolvimento: Fluxo de
Sustentação e Fluxo de Evolução. Em Sustentação são realizadas contínuas manutenções
e correções das funcionalidades do sistema, já o Fluxo de Evolução é onde as novas
funcionalidades são implementadas em sprints seguindo adaptações da metodologia Scrum.
Entre esses sistemas SIG, o SIGAA é um dos que mais se destaca pela quantidade
de funcionalidades, ele possui um total de 5268 casos de uso, de acordo com levantamento
de 2017. Nele, além da Equipe de Codificação e de Requisitos, o sistema possui a Equipe de
Testes que é responsável por realizar todos os testes de sistemas do software desenvolvido.
E nesse contexto a Equipe de Testes atua tanto no Fluxo de Sustentação quanto no Fluxo
de Evolução.
Dessa forma, este trabalho de pesquisa identifica características de funcionalidades
do SIGAA que devem ter os testes automatizados priorizados; para isso foram realizados
dois estudos que buscaram medir a influência de critérios como: diferentes complexidade
da tela e de tempos da última alteração; funcionalidades que demandaram maior tempo
de testes manuais durante o período de um mês. Assim, os testes das funcionalidades
escolhidas foram automatizados com a ferramenta UI.Vision, considerando as classes de
equivalência e happy path na construção deles.
E com base nos resultados das execuções diárias destes testes, foi possível perceber
que os critérios que apresentaram maior relevância para terem os testes automatiza-
dos foram: telas que dependem de serviços externos ao sistema e funcionalidades que
demandaram muitos testes manuais recentemente.
É importante destacar que a STI apresenta um processo de testes de sistemas com
características como: existir uma política e estratégia de testes; realiza planejamento de
introduziram novos bugs no sistema e se o novo código interage com o código existente conforme o
esperado (SOMMERVILLE, 2011). Dessa forma é possível verificar se uma correção/atualização pode
gerar impactos negativos no que já funcionava
Capítulo 1. Introdução 17
testes; monitoramento e controle do teste; modelagem e execução do teste; e utilizar-se de
ambiente próprio para realização dos testes e boa relação com os stakeholders (as partes
interessadas).
Para Sustentação, o processo de testes é mostrado de forma simplificada na
Figura 1, que mostra todas as principais etapas desde o momento inicial do desenvolvimento
até a validação da tarefa, de forma que para uma tarefa ser validada, ela deve passar por
todas as etapas.
Figura 1 – Processo Simplificado de Testes no Fluxo de Sustentação
Já o fluxo de evolução envolve uma complexidade maior de mensurar o tempo de
testes, haja vista que os testes e correções nele ocorrem, na prática, de forma simultânea
e o fluxo não é contínuo (muitos dias, semanas ou meses entre o fim de uma sprint e
início da próxima, e nesse intervalo o fluxo de trabalho fica pausado, de modo que toda
equipe é realocada para trabalhar apenas em Sustentação que tem em geral demandas
mais urgentes). Por estes motivos, apenas o fluxo de Sustentação foi selecionado para ser
trabalhado nesta pesquisa.
Nesse contexto, todas as tarefas são gerenciadas no Gerenciador de Atividades de
Sistemas - GAS, que é responsável por todo acompanhamento das demandas, como ilustra
a Figura 2 (adaptada para preservação de informações) na qual é exibido o quadro da
"Versão atual" que irá ser lançada e facilmente identifica-se as tarefas prontas para integrar,
tarefas testando, aguardando correções ou validadas por testes. Além disso, diversas
outras informações relevantes como prioridade, número da tarefa e pessoa responsável são
Capítulo 1. Introdução 18
facilmente encontradas, haja vista o quadro permitir uma visão geral da versão.
Além disso, o número de tarefa (número que identifica a tarefa) apresentado no
quadro permite que os membros da equipe possam clicar nele e ter todo o detalhamento
da tarefa, como histórico dos logs com observações relacionadas a ela,pessoa que criou,
status nos quais a tarefa passou, entre outras informações.
Figura 2 – Quadro de tarefas da Versão Atual no GAS (Adaptado) (GAS, 2022)
Paralelamente ao GAS é usado o Inspectore, um sistema integrado ao GAS e
responsável pelo gerenciamento dos erros nas tarefas, como ilustra a Figura 3 que mostra
parte do relatório de erros de uma tarefa. É no Inspectore onde cenários e narrativas são
criados e o Relatório de Erros é gerado com os erros que são cadastrados por tarefa. O
Inspectore permite também o gerenciamento dos status de cada erro (erros cadastrados,
corrigidos, desconsiderados, finalizados, reincidentes), de modo que o processo de testes e
correções é bastante transparente entre todos os membros que compõem o SIGAA.
Contudo, apesar da Equipe de Testes realizar testes exploratórios manuais exaus-
tivos, ela possui uma limitaçãopara realizar os testes de regressão. No entanto, existe a
necessidade de aumentar o fluxo de funcionalidades testadas e inserir os testes automatiza-
dos de regressão de forma ampla e estratégica, a fim de conseguir melhor aproveitamento
da força de trabalho já existente.
Nesse sentido, é importante destacar que o teste de regressão é caro e geralmente
impraticável quando um sistema é testado manualmente, pois os custos com tempo e
esforço são altos. Assim, a aplicação da estratégia de testes de regressão é importante para
Capítulo 1. Introdução 19
Figura 3 – Recorte da tela do Relatório de Erros no Inspectore (STI, 2022)
a garantia da qualidade, mas pode ser custosa dependendo do tamanho do conjunto de
casos de teste de um projeto (MALIMPENSA, 2018).
Todavia, realizar os testes de regressão de forma automatizada é algo viável e
permite reduzir os custos com testes de regressão manual. Haja vista que os testes existentes
podem ser executados novamente de forma rápida e barata (SOMMERVILLE, 2011).
Dessa forma, realizar os testes de regressão de forma automatizada representa
diversos ganhos para o desenvolvimento, como maior capacidade de testes em menor
intervalo de tempo. O que consequentemente impacta de forma positiva nos custos,
qualidade e tempo total de desenvolvimento do produto de software. Gerando assim maior
capacidade de desenvolvimento e maior credibilidade aos responsáveis pela criação do
produto.
Capítulo 1. Introdução 20
1.2 Problema de Pesquisa
A instituição utiliza metodologia ágil para o desenvolvendo do SIGAA e o fluxo
de novas tarefas é bastante intenso, sejam elas de correção ou ajustes, estando no contexto
de Sustentação ou de Evolução; ou seja, em uma frequência bastante elevada novas
atualizações com correções do software são lançadas no ambiente de produção. Contudo,
a correção de um defeito pode introduzir outros erros (CUNHA, 2010) e essas novas
atualizações podem acarretar novos erros em produção, por isso é necessário e importante
realizar testes de regressão, que verificam se essas mudanças e correções não introduziram
novos bugs no sistema e se o novo código interage com o já existente conforme esperado
(SOMMERVILLE, 2011).
Nesse contexto, é importante que a inclusão de testes automatizados de regressão
siga critérios adequados, inclusive, conforme (VIANA, 2006) menciona: um problema
clássico no caso de automação de testes de regressão é identificar que casos de testes devem
ser automatizados para que seja possível obter bons resultados dos testes executados.
Dessa forma, nesta pesquisa é proposta uma abordagem para auxiliar a gerência de testes
a selecionar quais os casos de uso devem ter prioridade na criação dos testes automatizados
de sistemas e assim formar suítes de testes automatizados que possam complementar os
testes manuais.
Assim é importante identificar qual seria um bom critério para automatização de
testes de sistemas no contexto de uma instituição com as características gerais da STI.
Com essas ações, espera-se aumentar a visibilidade por parte da liderança/gerência
de testes no sentido de auxiliar na tomada de decisões, como avaliar os testes automatizados
que devem ou não serem continuados, bem como avaliar os benefícios da automatização
usando as métricas de número de testes realizados a cada execução e quantidade de testes
novos e antigos em uso.
Contudo, é importante destacar que os testes automatizados se somam aos testes
manuais, de modo que a gravação com o UI.Vision, se refere principalmente à etapa de
testar o happy path que antecede a realização dos testes exploratórios, que por sua vez são
testes manuais, porém gravados e executados para o teste de regressão (com Replay do
teste).
1.3 Metodologia
Inicialmente foi realizada uma revisão da literatura à procura de conceitos e
publicações relacionadas a este trabalho de pesquisa. Em seguida foi realizada uma
avaliação com dois estudos que são analisados ao longo do trabalho a fim de identificar os
Capítulo 1. Introdução 21
melhores critérios para automatização dos testes com base nos critérios vistos a seguir,
mas sem destaque para comparações entre os tempos de testes manuais e automatizados.
Em ambos os estudos foram coletados dados diários dos testes que são discutidos com
relação às possíveis melhores estratégias para priorizar os testes dos casos de uso a serem
automatizados, considerando os resultados obtidos em 5 diferentes grupos, que serão vistos
em detalhe nos estudos.
No estudo 1 é analisado o comportamento de testes automatizados criados com
base na complexidade da tela do caso de uso2 e no tempo da última alteração do código
relacionado a ele. Neste estudo os testes automatizados são implementados a fim de se
avaliar o comportamento deles ao longo da pesquisa. Para a análise considera as quebras
dos testes e a influência da complexidade da tela na quantidade de quebras do testes
automatizados. Assim o estudo 1 possui quatro grupos (G1 a G4) que consideram estes
aspectos nas suas respectivas formações.
Já no estudo 2 os testes automatizados foram criados com base nos testes manuais
que consumiram os maiores tempos de testes durante um período (neste trabalho este
período foi fixado em um mês). Assim, seis casos de uso que demandaram maiores tempo
de testes manuais tiveram os testes automatizado a fim de ser avaliado diariamente o
comportamento das execuções desses testes, considerando se havia significativa quebra
dos testes automatizados e também se havia necessidade de novos testes para os casos
de uso que consumiram os maiores tempos. A partir destes critérios, foi criado o quinto
grupo (G5) para ser analisado e neste estudo observou-se que os testes automatizados
não tiveram quebras, porém os testes manuais que tiveram maiores tempos de testes em
determinado mês, tendem a demandar também considerável tempo de teste nos meses
subsequentes, o que indica que é vantajoso automatizar estes testes manuais
Para automação dos testes foi utilizada a ferramenta UI.Vison no contexto do
Sistema Integrado de Gestão de Atividades Acadêmicas - SIGAA/UFRN, contudo, outras
ferramentas que possibilitem a automatizar também poderiam ser usadas. Assim, de
acordo com a complexidade do caso de uso (UC, do inglês use case) e o tempo da última
correção nele, levando-se em consideração os grupos citados acima, os testes automatizados
são implementados considerando as classes de equivalências envolvidas na funcionalidade
(exceto o G4) e à medida que os testes são executados, são coletadas informações que
posteriormente serão analisadas com base em aspectos como quantidade de falhas e sucesso
das execuções.
Todos os dados coletados foram armazenados em planilhas. A primeira palhinha
2 Um caso de uso representa uma utilização do sistema por um ator, que pode ser uma pessoa, dispositivo
físico, mecanismo ou subsistema que interage com o sistema alvo, utilizando algum de seus serviços
(NAKAGAWA, 2019). No contexto abordado neste trabalho, um caso de uso é uma funcionalidade do
sistema; por exemplo, o caso de uso Cadastrar Discente que será visto ao longo do trabalho.
Capítulo 1. Introdução 22
do G5, denominada planilha de acompanhamento, foi compartilhada com a Equipe de
Testes, como ilustra a Figura 4, onde todos os testadores da Equipe de Testes do SIGAA
tiveram acesso. Nessa planilha, todas as vezes que determinada tarefa entrou no fluxo de
testes, importantes informações foram cadastradas pelo testador que realizou o teste, como
o módulo do sistema, caso de uso envolvido, número da tarefa e tempo de início e fim do
teste, de forma que o tempo de teste apresentado na coluna “Tempo Gasto” (coluna G) é
calculado automaticamente na respectiva linha da tarefa. Todos esses dados são coletados
diariamente de modo que para cada mês de coleta existe uma aba relacionada na planilha.
Figura 4 – Print(recorte) da planilha de Acompanhamento - Métricas de Testes do SIGAA.
Dessa forma, os dados coletados nos testes exploratórios desta planilha de acom-
panhamento foram utilizados paraselecionar casos de uso que demandaram mais tempo de
testes em determinados períodos da coleta (para este trabalho o período foi o mês de abril
de 2022). Assim, a segunda planilha do estudo 2 é utilizada para armazenar os resultados
de sucesso ou falhas da execução diária dos testes automatizados do G5, ou seja, ela segue
a mesma lógica de registo dos outros grupos (G1 a G4) no estudo 1.
Por fim, com os dados analisados são gerados gráficos a fim de permitir melhor
visualização das informações. Dessa forma é possível facilmente observar diversas relações
como porcentagem de falhas dos testes automatizados. E isso contribui para a identifi-
cação de critérios de priorização de casos de uso que devem ter os testes automatizados
implementados.
Capítulo 1. Introdução 23
1.4 Estrutura do Documento
Este texto possui mais quatro capítulos além deste introdutório. O Capítulo 2
apresenta os conceitos relacionados a testes de software no contexto da Superintendência
de Tecnologia da Informação da UFRN, ferramentas utilizadas, atividades desempenhadas
e a dinâmica de como os testes de sistemas ocorrem. O Capítulo 3 aborda trabalhos
relacionados com a definição de critérios para priorizar a automação de testes de casos de
uso e critérios para estimar a complexidade de telas do caso de uso. O Capítulo 4 traz os
estudos realizados na STI, utilização de classes de equivalência na automatização de testes
e avaliação dos estudos realizados na pesquisa. Por fim, no Capítulo 5 são apresentadas as
considerações finais, as conclusões, as contribuições da pesquisa à STI, lições aprendidas e
trabalhos futuros.
24
2 Conceitos Relacionados
Neste capítulo são apresentados os principais conceitos e temas abordados no
trabalho. Eles estão relacionados ao local onde são desenvolvidos os testes de software
bem como às tecnologias utilizadas no contexto da Engenharia de Software.
2.1 A STI e o SIGAA
A Superintendência de Tecnologia da Informação (STI) é um órgão diretamente
subordinado à Reitoria da UFRN e é responsável por planejar, desenvolver, manter e
administrar os sistemas computacionais e a infraestrutura de rede da Universidade. A STI
elabora, em conjunto com os demais órgãos administrativos, toda a política de informática
da Instituição (STI, 2021).
Além de produzir e manter sistemas para UFRN, a STI também está presente
em diversas outras instituições do país por meio de acordos de cooperação técnica dos
sistemas SIG-UFRN, ou seja, os sistemas desenvolvidos na Superintendência são usados
em diversas universidades, institutos federais, órgãos ligados à segurança, entre outros.
Tais acordos de cooperação consistem na transferência de tecnologia da UFRN
para instituições cooperadas, permitindo capacitação delas para implantar os sistemas e
assim promover a informatização dos processos de trabalho nas Áreas Administrativas
(SIPAC), de Recursos Humanos (SIGRH) e Acadêmica (SIGAA) na busca da excelência
da gestão e dos serviços prestados à sociedade (UFRN, 2021). Dessa forma, soluções
desenvolvidas na STI têm implantações a nível nacional. Logo, o SIGAA é usado em
diversas universidades e institutos federais com suas respectivas adaptações, de forma
que, de acordo com estimativas recentes da STI, ele possui mais de 1 milhão de usuários,
levando-se em consideração todos os 31 parceiros que utilizam o Sistema.
O Sistema Integrado de Gestão de Atividades Acadêmicas - SIGAA, é um pacote
de soluções modernas para os procedimentos relacionados à área acadêmica da UFRN,
permitindo o gerenciamento das informações e atividades em todos os níveis de ensino
(STI, 2021).
O Sistema foi desenvolvido, utilizando a linguagem Java, pela STI-UFRN no ano
de 2006 e continua em pleno uso com constantes evoluções; atualmente o SIGAA/UFRN
possui 67.438 usuários considerando os mais diversos públicos da UFRN (discente, docente,
técnicos, entre outros) e tem um total de 165.458 vínculos ativos (dados de novembro
de 2021) - no caso um mesmo usuário pode ter um ou mais vínculos ativos. Além disso,
Capítulo 2. Conceitos Relacionados 25
o SIGAA possui mais de 5 mil casos de uso distribuídos entre 36 módulos/portais. A
Plataforma está na versão 4.7.5 (de 09/07/22) e se encontra disponível em <https:
//sigaa.ufrn.br/>.
2.2 Atividades de Testes do SIGAA
Os testes realizados na STI seguem o modelo em V, Figura 5, que descreve a
relação entre ações de garantia da qualidade e ações associadas à comunicação, modelagem
e atividades de construção iniciais. E à medida que a equipe de software desce em direção ao
lado direito do V, os requisitos básicos do problema são refinados em representações cada
vez mais detalhadas. Após gerado o código, as equipes responsáveis (de desenvolvimento,
testes, requisitos) passam para o lado direito do V, realizando uma série de testes (ligados
a ações de garantia da qualidade) que validam cada um dos modelos criados à medida que
se sobe pelo lado esquerdo (PRESSMAN; MAXIM, 2016).
Os testes realizados pela Equipe de Testes envolvem em especial os testes Funcio-
nais, ocorrendo apenas no nível de Teste de Sistema. Dessa forma os testes de sistemas
verificam o SIGAA como um todo, eles são realizados em ambientes de testes que têm toda
a infraestrutura necessária para execução dos testes, ou seja, eles simulam adequadamente o
ambiente real (ambiente de produção). Entre os testes de sistema, fatores como adequação
das funcionalidades aos requisitos, usabilidade e desempenho são pontos exaustivamente
testados. Dessa forma os testes manuais exercitam a interação do sistema com o usuário.
Nesse contexto são usados atualmente apenas testes exploratórios, ou seja, não se
usa de forma sistemática testes automatizados1, contudo todas as funcionalidades só são
lançadas em produção após passarem por processo de testes na Equipe de Testes que é
responsável por testes de sistemas de todos os módulos.
No que se refere à equipe responsável por cada nível de testes, considerando os
diferentes níveis de testes, como é exibido na Figura 5 criada por Pressman e Maxim
(2016), existe uma divisão de responsabilidades no SIGAA para os níveis apresentados.
Assim, considerando o modelo, cada nível do lado direito do V tem uma relação com os
artefatos do lado esquerdo, como mostram as setas saindo do lado direto para o lado
esquerdo, dessa forma existe a seguinte relação na STI:
1 Testes automatizados são programas ou scripts que executam funcionalidades do sistema sendo testado
e fazem verificações automáticas nos efeitos colaterais obtidos. A grande vantagem desta abordagem é
que todos os casos de teste podem ser facilmente e rapidamente repetidos a qualquer momento e com
pouco esforço (BERNARDO; KON, 2008). Dessa forma, a utilização de testes automatizados facilita o
processo de teste de regressão uma vez que podem ser executados novamente de forma automática.
https://sigaa.ufrn.br/
https://sigaa.ufrn.br/
Capítulo 2. Conceitos Relacionados 26
Figura 5 – Modelo V (PRESSMAN; MAXIM, 2016).
• Os níveis "testes de unidade" e "testes de integração", que utilizam técnica estrutural
e focam respectivamente no teste da menor unidade do programa e a integração
entre elas, ficam a cargo da Equipe de Desenvolvimento (codificação);
• A Equipe de Testes é focada no nível de "testes de sistemas" que são os mais
demorados. Para isso, utiliza-se predominantemente da técnica funcional (caixa preta)
para realização dos testes, empregando planos de testes e exploração do sistema
como um todo de forma manual. Dessa forma, oficialmente, a Equipe de Testes atua
apenas com testes de sistemas;
• Por fim, o último nível, "teste de aceitação", é de responsabilidade da Equipe de
Requisitos que usa para essa atividade apenas a técnica funcional. Nesse teste,
que utiliza ambiente de testes específico, acontece o aceite final diretamente com o
usuário. Nesse caso apenas os analistas de requisitos responsáveis pelo módulo onde
a tarefa se encontra podem realizar esse teste. Por exemplo, se a tarefa envolve o
módulo de Graduação, apenas os analistasresponsivos por esse módulo fazem esse
teste; diferentemente da Equipe de Testes onde qualquer membro pode atuar em
qualquer módulo.
Além disso, cabe destacar que diversos termos usados durante o desenvolvimento,
como defeitos, erros e falhas, têm conceitos bem específicos, mas que comumente na prática
Capítulo 2. Conceitos Relacionados 27
acabam se confundindo ou usados como sinônimos.
Conforme (NETO; CLAUDIO, 2007) explica, defeito é a inserção inconsciente de
instrução ou comando incorreto durante o desenvolvimento. O erro é uma manifestação
concreta de um defeito em um artefato de software. Já a falha é um comportamento
operacional de um software diferente do esperado pelo usuário, de forma que uma falha
pode ter sido causada por vários erros e alguns erros podem nunca gerar uma falha.
Durante o dia a dia de trabalho é comum se usar o termo “erro” para se referir
a “falha”. Por exemplo, na STI, se no sistema ocorre um comportamento inesperado é
exibido para o usuário a tela conhecida como “Erro Vixe”. Ou seja, mesmo sendo um
comportamento incorreto do sistema, o que é uma falha, é conhecido como erro. Já no que
se refere aos testes, por serem focados na técnica funcional (caixa-preta) as situações de
defeito em geral não são abordadas pela Equipe de Testes.
2.3 Processo de desenvolvimento na STI baseado no Scrum
Métodos ágeis são estratégias de desenvolvimento incremental que se concentram
em desenvolvimento rápido, releases frequentes do software, redução de overheads dos
processos e produção de códigos de alta qualidade; bem como o envolvimento do cliente
diretamente no processo de desenvolvimento (SOMMERVILLE, 2011). Como é abordado
por Dantas e Junior (2016), os diversos benefícios do seu uso, entre eles o melhoramento
contínuo, e as entregas mais rápidas, bem como equipes auto organizáveis, vêm motivando
o aumento da adoção por parte de instituições dos mais diversos portes nos últimos anos.
Os métodos ágeis possuem importantes princípios norteadores, entres eles o de
manter a simplicidade. Na Tabela 1, recortada de Sommerville (2011), são mostrados os
princípios dos métodos ágeis e suas respectivas descrições que sintetizam a abordagem
ágil.
Dentre os métodos ágeis mais usados tem-se o Extreme Programming (XP) e o
Scrum. Porém, como o Scrum é o método usado na STI, é dada ênfase a ele nesta seção.
De forma resumida, o método Scrum é uma metodologia ágil que fornece um
framework de gerenciamento de projetos. É centralizado em torno de um conjunto de
sprints, que são períodos determinados de tempo, quando um incremento de sistema é
desenvolvido (SOMMERVILLE, 2011). A Figura 6, retirada de Pressman e Maxim (2016),
mostra o "fluxo do processo Scrum", onde são abordados importantes conceitos como
"Backlog do produto", "Backlog da sprint", período de 30 dias de duração da sprint e como
é o acompanhamento diário.
Cabe destacar que é comum cada instituição, inclusive a STI, fazer as adaptações
Capítulo 2. Conceitos Relacionados 28
Tabela 1 – Os princípios dos métodos ágeis (SOMMERVILLE, 2011).
Princípios Descrição
Envolvimento do cliente
Os clientes devem estar intimamente envolvidos no processo de
desenvolvimento. Seu papel é fornecer e priorizar novos requisitos
do sistema e avaliar suas interações.
Entrega incremental O software é desenvolvido em incrementos com o cliente,especificando os requisitos para serem incluídos em cada um.
Pessoas, não processos
As habilidades da equipe de desenvolvimento devem ser
reconhecidas e exploradas. Membros da equipe devem desenvolver
suas próprias maneiras de trabalhar, sem processos prescritivos.
Aceitar as mudanças Deve-se ter em mente que os requisitos do sistema vão mudar.Por isso, projete o sistema de maneira a acomodar essas mudanças.
Manter a simplicidade
Focalize a simplicidade, tanto do software a ser desenvolvido
quanto do processo de desenvolvimento. Sempre que possível,
trabalhe ativamente para eliminar a complexidade do sistema.
necessárias às suas respectivas necessidades, onde, por exemplo, a sprint pode ter duração
diferente de trinta dias, assim como as reuniões diárias podem demorar um tempo maior
ou menor que quinze minutos.
Figura 6 – Fluxo do processo Scrum (PRESSMAN; MAXIM, 2016).
Na STI, considerando especificamente o contexto do SIGAA, a duração da sprint
é de vinte dias úteis, mas pode ser atribuído um prazo diferente a depender do escopo a
ser desenvolvido e o time escalado. De modo que em uma mesma sprint os membros são
os mesmos do início ao fim.
Antes de iniciar a fase de desenvolvimento, todos os membros envolvidos (gerente
Capítulo 2. Conceitos Relacionados 29
de projetos, analistas de requisitos, desenvolvedores e testadores) avaliam as demandas,
discutem e estimam a complexidade do que será desenvolvido. Feito isso, em seguida são
organizadas e distribuídas as atividades e no dia seguinte já começa a contar o primeiro
dia de sprint. Durante os vinte dias, em todos eles tem-se uma rápida reunião onde os
membros, de forma sucinta, dizem o que fizeram desde a reunião anterior, se tem algum
impedimento e em que estão trabalhando.
Todas as atividades da Equipe de Testes estão dentro do Scrum, logo o geren-
ciamento leva em consideração as diversas fases do framework em especial no contexto
de testes de sistemas, mas também considerando as etapas de codificação e correção de
erros. Dessa forma, o gerenciamento (de testes) acompanha a evolução da codificação para
prever possíveis atrasos da chegada das demandas para testes, bem como acompanhamento
de todas as demandas já em testes a fim de realizar tomadas de decisões com base em
planejamento e gestão dinâmica adequada à necessidade do momento.
2.4 Técnicas de Testes de Software
As técnicas de teste são classificadas de acordo com a origem das informações
utilizadas para estabelecer os requisitos de teste (NETO; DIAS, 2007), e como será visto a
seguir, existem as técnicas estrutural e funcional:
2.4.1 Técnica Estrutural
Em linhas gerais, o teste estrutural ou de caixa branca é uma abordagem siste-
mática para testes nos quais o conhecimento do código-fonte do programa é usado para
projetar testes de defeitos. O conjunto de testes deve garantir que todo caminho lógico do
programa seja executado, com a consequência de que cada declaração do programa seja
executada ao menos uma vez (SOMMERVILLE, 2011). Dessa forma, a técnica do teste
estrutural avalia o comportamento da estrutura do software.
Este tipo de teste é desenvolvido analisando-se o código fonte e elaborando-se
casos de teste que cubram todas as possibilidades do componente de software (NETO;
DIAS, 2007). Dessa forma a realização desses testes exigem acesso ao código fonte da
aplicação, diferentemente dos testes funcionais.
2.4.2 Técnica Funcional
De forma sucinta, o teste funcional, também chamado de teste de caixa-preta ou
comportamental, focaliza os requisitos funcionais do software. De forma que tenta encontrar
erros nas categorias de "funções incorretas ou ausentes", "erros de interface", "erros em
Capítulo 2. Conceitos Relacionados 30
estruturas de dados ou acesso a bases de dados externas", "erros de comportamento ou de
desempenho"e "erros de inicialização e término"(PRESSMAN; MAXIM, 2016).
Dessa forma o testador realiza as operações de testes sem ter acesso ao código
fonte, ou seja, o código fonte está em uma "caixa-preta", e o testador se preocupa com a
entrada e saída de valores no programa e não com o comportamento interno do componente
de software.
Essa técnica tem se mostrado positiva nos testes de sistemas utilizados na Supe-
rintendência, de modo que ela é amplamente aplicada nos sistemas SIG, como é o caso do
SIGAA.
A seção seguinte aborda os conceitos de classe de equivalência. Elas são usadas
para proporcionar uma boa cobertura dos casos de testes.
2.4.3 Classes de Equivalência
O Particionamento de Equivalência, também conhecido como Teste de Classe de
Equivalência, é usado em testes para agrupar em classes valores de entrada que devem
se comportar da mesma maneira.Essas classes são chamadas classes de equivalência e
representam um conjunto de estados válidos e inválidos para uma condição de entrada.
Dessa forma, particionamento de equivalência é um método de teste caixa-preta que divide
o domínio de entrada de um programa em classes de dados a partir das quais podem ser
criados casos de teste (PRESSMAN; MAXIM, 2016).
Uma classe de equivalência representa um conjunto de estados válidos (classe de
equivalência válida) ou inválidos (classe de equivalência inválida) para condições de entrada.
Tipicamente, uma condição de entrada é um valor numérico específico, um intervalo de
valores, um conjunto de valores relacionados ou uma condição booleana(PRESSMAN;
MAXIM, 2016).
Ao utilizar a classe de equivalência pode-se ter uma ampla cobertura de testes com
uma quantidade reduzida de casos de testes, pois pode-se utilizar apenas um caso de teste
de cada classe definida. De forma sucinta, particionamento em classes de equivalência tem
por objetivo minimizar o número de casos de teste, selecionando apenas um caso de teste
de cada classe, pois em princípio todos os elementos de uma classe devem se comportar de
maneira equivalente (NETO; DIAS, 2007).
Para exemplificar: em (BARBOSA et al., 2000) é abordado a aplicação de classes
de equivalência para o programa identifier. Em resumo, o programa deve determinar se
um identificador é válido ou não, de modo que: "Um identificador válido deve começar com
uma letra e conter apenas letras ou dígitos. Além disso, deve ter no mínimo um caractere
e no máximo seis caracteres de comprimento".
Capítulo 2. Conceitos Relacionados 31
Para essa situação, como visto na Tabela 2, é possível a identificação das classes
de equivalência válidas e inválidas. Dessa forma, para ser válido um identificador deve
atender às condições (1), (3) e (5); e inválido quando se encaixa em pelo menos uma das
condições (2), (4) ou (6).
Com base nas classes de equivalência, pode-se ter conjuntos de casos de testes (T),
por exemplo: T0 = [(s1,Válido), (3A2, Inválido), (Y-31, Inválido), (B2c3D4h, Inválido)].
Onde o valor de entrada no sistema, "s1", cobre as classes (1), (3) e (5); "3A2"cobre a
classe (4); "Y-31"cobre a classe (6); e "B2c3D4h"cobre a classe (2). Dessa forma é possível
realizar os testes com base nas classes de equivalência.
Tabela 2 – Classes de Equivalência do programa identifier (BARBOSA et al., 2000).
Condição de Entrada Classes Válidas Classes Inválidas
Tamanho t do identificador 1 ≤ t ≤ 6(1)
t >6
(2)
Primeiro caractere é uma letra Sim(3)
Não
(4)
Só contém caracteres válidos Sim(5)
Não
(6)
A seção seguinte aborda a ferramenta UI Vision que é utilizada nos testes auto-
matizados nesta pesquisa.
2.5 Utilização do UI Vision na Automatização de Testes
UI Vision é um software RPA (Robotic Process Automation) gratuito que auto-
matiza aplicativos da web e de desktop no Windows, Mac e Linux. A ferramenta UI.Vision
RPA é uma extensão de navegador, possui código aberto, é gratuita e pode ser estendida
com aplicativos locais para automação de IU de desktop. O núcleo do UI Vision é de código
aberto e garante segurança de nível empresarial. Os dados manipulados nele nunca saem
da máquina do testador que o executa, conforme documentação da ferramenta (UIVISON,
2021).
Ele permite a gravação do teste com a possibilidade de diversas leituras e arma-
zenamentos dos elementos/valores da tela, bem como possibilita a importação de dados
(função Import CSV ) para serem usados na execução dos testes. Em especial para leitura
dos elementos da tela do SIGAA a ferramenta se apresentou bastante satisfatório, uma vez
que dificilmente se perde a referência dos elementos e quase nunca os testes "quebram"por
esse motivo.
Para este trabalho o UI.Vision é usado na versão 6.2.8, instalado no navegador
Google Chrome (Versão 95.0.4638.69, 64 bits) e sistema operacional Windows 10 Pro.
Capítulo 2. Conceitos Relacionados 32
Para o contexto aqui abordado cabe destaque à testabilidade, que conforme
Pressman e Maxim (2016), se refere ao conjunto de esforços necessários para testar um
programa de modo a garantir que ele funcione conforme planejado.
O Capítulo 3 a seguir traz e discute alguns dos trabalhos relacionados a esta
pesquisa.
33
3 Trabalhos Relacionados
Neste capítulo abordamos trabalhos relacionados à definição de critérios e modelos
para priorizar casos de uso a terem os testes automatizados, testes de regressão a serem
priorizados, bem como trabalhos que abordem a utilização de critérios para classificar a
complexidade de formulários em web page. Tendo em vista que isso tem relação com esta
pesquisa desenvolvida na STI que considera, por exemplo, a quantidade de elementos de
preenchimento na tela para classificação da complexidade do caso de uso. Dessa forma,
na seção 3.1 discutimos trabalhos relacionados à definição de critérios para priorização
de testes de regressão. Já na seção 3.2 abordamos trabalhos relacionados à definição de
critérios para priorizar a automação. Na seção 3.3 discutimos trabalhos relacionados a
critérios para estimar complexidade de UC (página do UC). E na seção 3.4 trazemos
considerações acerca dos trabalhos relacionados.
3.1 Critérios para priorização de testes de regressão
Almeida, Jino e Fantinato (2010) fazem um experimento e implementação de uma
técnica de seleção de casos de teste de "caixa preta" baseada em dados históricos coletados
de software para Web. Os autores comparam três técnicas de seleção de testes de regressão
considerando: eficiência na detecção de defeitos; e confiabilidade do software atingida com
sua aplicação. Como resultado do estudo, a técnica priorização de Park, chamada pelos
autores de Retest Using Historical Data (RuHD), mostrou-se mais eficiente na detecção de
defeitos e produziu uma melhora maior na confiabilidade do software, quando comparada
com as técnicas Reteste de Casos de Uso de Maior Risco e Reteste por Perfil Operacional.
A técnica de priorização considera, entre outros fatores, os custos (tempos de
execução, em minutos, de cada caso de testes), severidades de falha relativas totais, tempos
de execução e as criticidades de falha.
Esta técnica considera o histórico dos testes e se baseia nos testes de "caixa preta",
assim como o estudo 2, o que a princípio poderia também ser usada na pesquisa realizada
na STI, porém a técnica usa variáveis que apresentam certo grau de subjetividade no
cálculo do valor histórico, como é o caso de criticidades de falha; além disso, a quantidade
de casos de testes no estudo, 40, representa um valor relativamente baixo e ainda precisa
de uma maior quantidade de análises para validar a técnica RuHD. Sendo assim, optou-se
por não adotar esta estratégia na pesquisa realizada na STI, contudo um valor histórico
do tempo de testes gasto, que pode ser entendido como o tempo que a funcionalidade foi
testada, é considerando no estudo 2.
Capítulo 3. Trabalhos Relacionados 34
Já Malimpensa (2018) explica uma abordagem de priorização de casos de teste
baseada em rastreabilidade. Esta estratégia foi usada para priorizar um conjunto de
casos de teste de regressão a partir de vários requisitos. A abordagem faz uso da Matriz
de Rastreabilidade de Requisitos (RTM-E) proposta por Ditomaso (2014) para obter a
dependência entre os requisitos, porém, diferentemente dele, que classifica essa dependência
calculada em forte, fraca ou inexistente para selecionar os casos de teste associados; esta
abordagem considera o valor da dependência entre os requisitos para priorizar os casos de
teste.
Em linhas gerais, Malimpensa (2018) desenvolveu um plug-in de priorização de
casos de teste e utiliza um conjunto casos de teste no qual: para cada requisito da sprint
ele seleciona um requisito da sprint e em seguida seleciona todos os casos de teste que
pertencem àquele requisito e adiciona esses casos de teste à lista de casos de teste de
regressão com 100% de importância. A partir disto ele gerar a Matriz de Rastreabilidade
de Requisitos (RTM-E). Posteriormente ele selecionatodos os casos de teste pertencentes
aos requisitos que têm alguma dependência com o requisito em questão e os adiciona à
lista de casos de teste de regressão com a importância equivalente à dependência que seus
respectivos requisitos têm com o requisito em questão. Feito isto, ele normaliza os valores
de importância dos casos de teste e prioriza a lista de casos de teste de regressão pelo
valor de importância. Como resultado final tem-se uma lista de casos de teste de regressão
que não são redundantes.
A abordagem de Malimpensa (2018) se assemelha à proposta na pesquisa rea-
lizada na STI, pois visam priorizar de casos de testes a serem automatizados; contudo,
a rastreabilidade de requisitos considerada é uma abordagem muito diferente do atual
contexto de trabalho da Equipe de Testes e demandaria considerável tempo para equipe
se adaptar a essa estratégia, de mosto que optou-se por utilizar-se de técnicas que fossem
mais próximas às atuais atividades já desenvolvidas pela equipe.
Oliveira e Machado (2013) explicam uma nova técnica de reteste seletivo baseada
em modificações que considera o valor de cada caso de teste e a similaridade entre casos
de testes, a fim de selecionar os mais importantes e reduz de 70% a 80% o tamanho do
conjunto de casos de testes, sem afetar a capacidade de detecção de defeitos.
Para essa técnica é construída uma matriz de similaridade entre pares de casos
de teste provenientes de dois conjuntos de casos de teste diferentes. Dessa matriz são
removidos os casos de teste: obsoletos; os que não interagem com nenhuma modificação
realizada no modelo; e os menos importantes, dentre os que interagem com as modificações.
Assim reduz o tamanho do conjunto de casos de testes, o que permite melhor uso dos
recursos disponíveis para a realização do teste de regressão, e mesmo assim consegue ter
uma cobertura satisfatória dos testes.
Capítulo 3. Trabalhos Relacionados 35
Diferentemente do trabalho de pesquisa na STI, que prioriza os casos de testes
a serem automatizados, o trabalho de Oliveira e Machado (2013) aborda uma técnica
de seleção de conjunto de testes já automatizados; assim, essa técnica não pode ser
usada no trabalho de pesquisa, haja vista que ainda não há testes automatizados a serem
selecionados pela Equipe de Testes. Contudo, em um aprofundamento da pesquisa na STI,
será importante a priorização de casos de testes que vierem a ser automatizados, bem
como a remoção de casos de testes automatizados que estiverem redundantes.
3.2 Definindo critérios para priorizar a automação de testes de UC
Viana (2006) propõe um método com o objetivo de contribuir com a seleção de
testes de regressão para automatização. O método proposto baseia-se em critérios que
permitem calcular uma pontuação para os casos de testes analisados; os que possuem
maior pontuação serão considerados os melhores candidatos para automação.
Para o cálculo da pontuação são usadas diferentes métricas como "Tempo médio
de Execução do Teste", "Vida Útil do Teste", "Fator de Exposição ao Risco", "Facilidade
de Automação", entre outras. Todas elas, juntamente com pesos, compõem uma expres-
são matemática com 12 variáveis que permitem obter o valor referente à prioridade da
automatização do teste do caso de uso.
É possível observar que o trabalho de Viana (2006) tem relação com esta dissertação
no sentido de definir uma estratégia da melhor seleção de casos de uso para automatizar. Ela
utiliza uma pontuação para priorizar a automatização de testes de UC, já diferentemente
da abordagem dela, nesta dissertação foi utilizado, por exemplo, critérios de quantidade
de maior tempo gasto em testes manuais no último mês, como será visto com estudo 2.
A estratégia abordada por Viana (2006) não se mostra adequada para o contexto
da STI, haja vista a complexidade de mensurar diversos valores que são subjetivos, como,
por exemplo, a “Facilidade de Automação” (FAT) que se refere a quão fácil é a criação do
teste automatizado, sendo classificada em "Alta" (valor FAT =9 na expressão matemática
do cálculo da complexidade), "Média" (FAT = 3) e "Baixa" (FAT = 1). Porém atribuir
essa classificação é algo subjetivo uma vez que o critério não traz mais detalhes, ficando a
cargo da interpretação individual de cada testador.
O fato da expressão de cálculo da complexidade usada por ela conter muitas
variáveis, diferentes pesos e subjetividades, faz com que a abordagem dela não seja prática
no cenário real com fluxo intenso de atividades, como é o caso da STI, uma vez que
gera considerável trabalho para análise e classificação. Assim, neste trabalho de pesquisa
optou-se por adotar uma forma mais simples para classificar a complexidade de um caso
de uso (e consequentemente do testes automatizado relacionado a ele).
Capítulo 3. Trabalhos Relacionados 36
Cartaxo, Neto e Machado (2007) explica uma estratégia para seleção automática
de casos de testes já automatizados. Essa estratégia partiu da necessidade de diminuir
custos de produção (testes) e manter a qualidade do produto com testes que consigam
fazer coberturas adequadas. A estratégia é baseada no uso de uma função de similaridade,
e sempre que a cobertura total da geração de casos de teste baseada em modelo for
inviável e/ou os casos de teste forem redundantes, uma função de similaridade pode ser
aplicada para descartar automaticamente casos de teste semelhantes, mantendo os mais
representativos e aqueles que ainda geram uma cobertura adequada. Com base no grau de
similaridade entre cada par de casos de teste, os casos de teste a serem eliminados são
aqueles que têm o maior grau de similaridade: um deles é eliminado. Os autores mostram
que essa escolha é feita observando o caso de teste que possui o menor caminho, ou seja, o
menor número de funcionalidades.
Esse trabalho tem relação com o estudo na STI no sentido de ambos tentarem
encontrar melhor estratégia para seleção dos melhores casos de testes a fim de consigam
fazer a melhor cobertura dos testes de maneira eficiente e com a melhor utilização do
tempo de execução de testes. No caso Cartaxo, Neto e Machado (2007) usam uma função
de similaridade; e este trabalho de pesquisa utiliza classes de equivalência no estudo 1, de
forma que os dois tentam minimizar testes desnecessários ou redundantes.
Porém o trabalho de Cartaxo, Neto e Machado (2007) aborda a seleção de testes
já automatizados, diferentemente do estudo na Superintendência que tenta encontrar
uma melhor estratégia para seleção de casos de uso a terem o teste automatizado no
contexto do SIGAA, por isso a estratégia deste artigo não é adequada para o estudo na
STI, todavia, em possíveis aprofundamentos do estudo, a estratégia de seleção dos casos de
uso já automatizados pode trazer significativas contribuições para avanço desta pesquisa.
Walters (2005) explica uma estratégia geral de automação, de modo que para
priorizar os casos de testes de regressão que são candidato a automatização é calculada
uma pontuação (score); os casos de testes que obtiverem maior pontuação indica que são
bons candidatos em potencial para serem automatizados. Para o cálculo da pontuação de
cada caso de teste são considerados os critérios: "Tempo de execução manual", "Execuções
por mês" e “Multiplicador de criticidade". E a pontuação é calculada multiplicando-se os
critérios.
Dessa forma, os casos de testes que possuem maior pontuação são considerados
mais prioritários para automatização. Em outros testes, além dos de regressão, Walters
(2005) recomenda evitar selecionar para automação os casos de difícil automatização e os
que testam novas funcionalidades, inclusive o autor recomenda remoção da casos de testes
que sua Obsolescência seja iminente.
O trabalho de Walters (2005) também usa pontuação para priorização dos casos
Capítulo 3. Trabalhos Relacionados 37
de testes a serem automatizados, porém, diferente de Viana (2006), utiliza a métrica do
“Tempo de execução manual”, que é utilizada também nesta dissertação.
Contudo Walters (2005) também faz uma abordagem subjetiva,pois para o “Mul-
tiplicador de criticidade” (valor que classifica o caso de testes de acordo com a visibilidade
e impacto no caso de ocorrência de falhas na funcionalidade coberta pelo caso de teste)
foram utilizados os valores "1", "3" e "5" onde 1 indica baixa visibilidade/impacto limitado,
3 – visibilidade moderada/impacto médio, e 5 - alta visibilidade/impacto significativo; de
modo que essa classificação não é prática e objetiva para o contexto da STI.
3.3 Critérios para estimar complexidade do UC (página do UC)
Cleary (2000) propôs o método de contagem Web Points, que baseia-se no número
e complexidade de páginas HTML para estimar tamanho e esforço para Web sites. Neste
método, a complexidade de cada página é classificada em três níveis (baixa, média e alta)
de acordo com dois fatores: contagem de palavras e combinação de números de hyperlinks
internos e externos, mais o número de componentes não textuais de cada página. Para
cada nível de complexidade é utilizado um valor de referência que compõe a contagem.
O método proposto por Cleary (2000) que também é explicado de maneira didática
e prática por Drach (2005), é bastante objetivo, uma vez que realizada a contagem simples
dos elementos da página é possível classificar a complexidade, seguindo uma abordagem
semelhante ao desta dissertação no sentido de contar elementos da página (da tela do caso
de uso que contém mais campos a serem preenchidos).
Contudo, o método Web Points não é adequado para o estudo na STI, haja vista
que para mensurar a complexidade ele considera a quantidade de palavras e links na tela,
o que não é relevante para a abordagem na Superintendência uma vez que esses elementos
não influenciam na quantidade de campos a serem preenchidos nos formulários dos casos
de uso e consequentemente nos testes realizados.
Reifer (2002) propõe o método Web Objects. Este método é voltado para aplicações
Web, ele estende a contagem de Pontos de Função tradicional e acrescenta quatro outros
grupos de elementos funcionais que são: links, componentes multimídia, scripts, e blocos
de construção. O autor justifica a adição desses elementos dizendo que o método original
aborda características de aplicações mais tradicionais, como o número de entradas e saídas;
dessa forma, utilizando estes grupos adicionais é possível entender e contabilizar diferentes
elementos de uma aplicação, incluindo os específicos para Web.
Assim, os passos para contagem são: identificação e contagem do número de
elementos funcionais; identificação e contagem do número de operadores; identificação e
contagem do número de operações únicas executadas sobre os operadores identificados.
Capítulo 3. Trabalhos Relacionados 38
Uma vez calculado o número de Web Objects pode ser usado em cálculos de esforço e
duração de projetos Web.
Este método tem relação com o usado no estudo realizado na STI no sentido de
ambos mensurar a complexidade considerando, por exemplo, os elementos da tela, porém
a abordagem explicada por Reifer (2002) é bastante ampla, pois considera elementos,
como links, que não são relevantes na execução definida para automatização de testes na
Superintendência, e mesmo que o método não considerasse a adição dos quatro grupos, a
contagem de Pontos de Função ainda se torna muito ampla para avaliação da complexidade
que se desejou utilizar no estudo no SIGAA.
A seção seguinte discute a respeito dos trabalhos vistos acima.
3.4 Discussões acerca dos trabalhos relacionados
Nenhum dos trabalhos relacionados que foram citados acima apresenta uma
estratégia que pudesse ser completamente adequada à abordagem proposta para o estudo
na STI, porém eles serviram de inspiração para aprofundamento e discussões das estratégias
usadas. Assim, para este trabalho de pesquisa foi necessário estabelecer e utilizar critérios
que fossem adequados à classificação de complexidade da página (baixa, média ou alta),
bem como definição dos próprios critérios para avaliar a priorização de casos de uso a
terem os testes automatizados, como é visto no Capítulo 4 a seguir.
39
4 Estudo de Caso na STI UFRN
Neste capítulo, discutimos o estudo de caso feito na STI-UFRN que buscou definir
critérios para priorizar a automação de testes de casos de uso do SIGAA. Ele descreve os
critérios de escolhas para divisão de grupos para automatização de testes de casos de uso
e os estudos realizados, bem como toda dinâmica utilizada na coleta de dados. Além disso,
traz uma visão geral da utilização de classes de equivalência em testes automatizados na
ferramenta UI.Vison e ilustra como os testes automatizados dos casos de uso Cadastrar
Discente e Cadastrar Componente Curricular (ambos do SIGAA) podem ser realizados
usando classes de equivalência. Ao final de cada seção são apresentadas, respectivamente,
considerações relacionadas à utilização de classes de equivalência, ao estudo 1 e ao estudo
2.
A avaliação foi realizada com dois estudos a fim de encontrar melhores estratégias
para automatizar testes de casos de uso. O objetivo do estudo 1 foi: automatizar os testes
com base na complexidade da tela do caso de uso e no tempo da última alteração no
código relacionado a ele. Já o objetivo do estudo 2 foi: automatizar os testes de casos de
uso que demandaram mais tempo de testes manuais recentemente.
Todos os UC utilizados na avaliação pertencem ao SIGAA e estão apresentados
nas Tabelas 6 e 8, respectivamente para os estudos 1 e 2, como é apresentado nas próximas
seções.
A seção seguinte aborda como acontece a utilização de classes de equivalências na
criação dos testes automatizados com UI.Vison.
4.1 UC do SIGAA para exemplificar classes de equivalência
Os dois casos de uso (UC) aqui abordados neste exemplo são do Módulo Graduação,
relacionados à gestão acadêmica, e foram escolhidos com base na alta frequência de
utilização e retestes por parte da Equipe de Testes. São eles:
Cadastrar Discente: O caso de uso de Cadastrar Discente, ilustrado na Figura 7,
como o próprio nome já diz, é um dos casos de uso responsáveis por cadastrar discentes de
cursos de graduação da Universidade. Finalizado o cadastro, o discente passa a ter vínculo
no Sistema (caso ele já possua um vínculo anterior, passa a ter um novo vínculo).
Esse caso de uso está disponível apenas para usuários que atuam na gestão de
graduação e pode ser acessado em "SIGAA > Módulo Graduação > Alunos > Cadastrar
Discente > Cadastrar Discente".
Capítulo 4. Estudo de Caso na STI UFRN 40
Figura 7 – Cadastrar Discente (SIGAA, 2021).
Cadastrar Componente Curricular: Esse caso de uso não é tão utilizado quanto
outros da área administrativa, porém recentemente muitas alterações foram realizadas
nele, como adição, por exemplo, de Carga Horária de Aula Extensionista entre outras, que
necessitam de vários testes relacionados à criação de componentes curriculares. Esse UC,
ilustrado na Figura 8, é utilizado para cadastrar todos os tipos de componentes (Disciplina,
Atividade, Módulo e Bloco; presencial ou a distância). Ao final da operação de cadastro, é
criado o componente que fica associado a uma unidade responsável e pode ser utilizado no
cadastro/alteração de estrutura curricular e criação de turmas.
Dependendo da Unidade responsável selecionada, se ela já tem componentes
cadastrados, o Sistema sugere um código de componente a ser utilizado. Isso é muito bom,
porém os testes para esse momento, a fim de verificar as classes de equivalência, não irão
usar a sugestão de código.
Esse caso de uso é restrito a usuários que atuam na gestão de graduação e está
disponível em "SIGAA > Módulo Graduação > DDP > Componentes Curriculares >
Capítulo 4. Estudo de Caso na STI UFRN 41
Cadastrar".
Figura 8 – Cadastrar Componente Curricular (SIGAA, 2021).
4.1.1 Classes de equivalência para Cadastrar Discente
Para o caso de uso de Cadastrar Discente, por exemplo, pode-se definir classes de
equivalência para diferentes campos, como é o caso dos campos Nome e Ano de Conclusão
(do ensino médio), como destacados na Figura 7.
Dessa forma, no caso docampo Nome existe a regra negocial que de forma sucinta
diz: O Nome (Oficial/Social) precisa ter no mínimo 3 e no máximo 80 caracteres, podendo
ser números, letras ou caracteres especiais (como @, &, #), porém precisa ter no mínimo um
espaço entre o primeiro e segundo nome (ou seja, deve ser nome composto por pelo menos
duas expressões separadas por espaço). Ex.: não pode ser apenas "Pedro" ou "AbCD1@",
precisa ser no mínimo "Pedro Sobrenome" ou "AbCD!@ AbCD1@". De modo que na Tabela
3 é possível ver as classes de equivalência que podem ser elencadas.
Capítulo 4. Estudo de Caso na STI UFRN 42
Tabela 3 – Classes de Equivalência de Nome (Oficial/Social)
Condição de Entrada (Nome) Classes Válidas Classes Inválidas
Quantidade de caracteres (Qc) 3 ≤ Qc ≤ 80("1")
Qc <3
("2")
Qc >80
("2b")
Tem pelo menos um espaço entre
nomes (expressões)?
Sim
("3’)
Não
("4") -
Permite a entrada de caracteres
especiais?
Sim
("5’)
Não
("6") -
Já para o campo Ano de Conclusão do ensino médio existe a regra negocial que
diz: O campo Ano de Conclusão do ensino médio precisa ter exatamente 4 caracteres
inteiros, de forma que o ano seja maior ou igual a 1900 e menor ou igual a 2022 (sempre o
ano atual que no caso é 2022). De forma que a Tabela 4 reflete classes de equivalência que
podem ser extraídas com base nessa regra.
Tendo as classes de equivalência definidas, é possível elencar representantes dessas
classes que são valores usados durante os testes, de forma que em um arquivo .csv tem
os valores que serão usados para testar as classes de equivalência válidas e em um outro
arquivo .csv classes inválidas. Ao excetuar os testes, a ferramenta Ui.Vision irá percorrer
todos os valores dos arquivos .csv e usá-los para testes automatizados; com isso será
possível testar a funcionalidade com todos os valores elencados no arquivo.
Tabela 4 – Classes de Equivalência de Ano de Conclusão (do ens. médio)
Condição de Entrada (Ano) Classes Válidas Classes Inválidas
Quantidade de caracteres (Qt) Qt = 4("1")
Qt <4
("2")
Qt >4
("2b")
Ano de conclusão (Ac) 1900 ≤ Ac ≤ 2022("3’)
Ac <1900
("4")
Ac >2022
("4b")
Apenas números inteiros Sim("5")
Não
("6") -
4.1.2 Classes de equivalência em Cadastrar Componente Curricular
Para o cadastro de componente curricular, como destacado na Figura 8, um campo
que pode ser bastante explorado é o do Código do componente. Esse código deve seguir um
padrão para criação e como exemplos, alguns códigos válidos são "ECT1105" para Escola
de Ciências e Tecnologia; "DCA0105" para o Departamento de Engenharia de Computação
e Automação, de forma que a regra geral é assim descrita:
• O código do componente deve ser composto por sete caracteres;
• Os três primeiros caracteres devem ser a sigla da unidade responsável (exemplo:
ECT, EAJ, DCA);
Capítulo 4. Estudo de Caso na STI UFRN 43
Tabela 5 – Classes de Equivalência de Código (componente curricular)
Condição de Entrada (Cod. Componente) Classe Válida Classe Inválida
Quantidade de caracteres (Qc) Qc = 7("1")
Qc <7
("2")
Qc >7
("2b")
Os três primeiros caracteres são letras? Sim("3’)
Não
("4") -
Os quatro útimos caracteres são números? Sim("5’)
Não
("6") -
Permite a entrada de qualquer caractere? Não("7’)
Sim
("8") -
O sistema já possui o código que se deseja
cadastrar?
Não
("9’)
Sim
("10") -
• Os quatro últimos caracteres devem ser números inteiros;
• O sistema não deve permitir cadastrar um código já existente;
• Nenhum componente curricular pode ser cadastrado sem atender a todos os itens
anteriores.
De forma que as classes de equivalências elencadas com base na regra geral são
apresentadas na Tabela 5, que apresenta cinco classes válidas e seis classes inválidas.
Tendo as classes de equivalência definidas, deve-se seguir a mesma estratégia
citada na seção anterior para criação do arquivo .csv.
Criados os arquivos .csv para cada caso de uso, um arquivo formado com valores
representantes das classes de equivalência válidas e outro arquivo com os valores represen-
tantes das classes inválidas, procede-se com a inserção deles no UI.Vison que possibilita
construir testes com as variáveis presentes no arquivo .csv, de modo que as variáveis são
lidas em sequência no arquivo, permitindo assim a gravação dos passos realizados nos testes
manuais. Posteriormente os passos gravados são executados para os testes automatizados.
A utilização das classes de equivalência para os testes permitiu explorar a funcio-
nalidade de forma satisfatória e sem criar testes redundantes, o que possibilita um teste
mais assertivo e evita esforços desnecessários para execução deles. Seria possível também
ter optado por utilizar a análise do valor limite para criação dos casos de testes, o que
geraria, por exemplo, uma quantidade maior de caos de testes; dessa forma, optou-se por
utilizar as classe de equivalência, pois atendem adequadamente aos objetivos de criação de
casos de testes da pesquisa.
Além disso, tendo em vista que as classes de equivalência possibilitam testes com
abordagens tanto em alto quanto em baixo nível, neste trabalho as classes não focam em
alto nível. Dessa forma, utiliza, por exemplo, a quantidade de caracteres como condição
Capítulo 4. Estudo de Caso na STI UFRN 44
de entrada na avaliação de classes válidas e inválidas, o que representa um nível baixo.
Essa estratégia foi utilizada porque ela é trabalhada no fluxo de atividades da Equipe de
Testes e por restrições de tempo não foi possível aprofundar para classes de alto nível.
Contudo, para utilização de classes em alto nível, poderia, por exemplo, definir
classes que envolvam o cadastro de discentes que já estivessem na base de dados do SIGAA
(devido a vínculo anterior com a UFRN). Nessa situação, quando o usuário insere o CPF
da pessoa que será cadastrada para determinado curso, o sistema já reconhece o CPF do
estudante e automaticamente preenche o formulário de cadastro com as informações que
estão na base, sendo necessário apenas confirmações do usuário até a finalização do fluxo
de cadastro. Eventualmente o uso das classes de equivalência com foco em testes de nível
mais elevado pode ser abordado em trabalhos futuros a fim de aprofundar as discussões.
A seção seguinte aborda o estudo 1.
4.2 Estudo 1
O estudo 1 é baseado (i) na data da última alteração do caso de uso e (ii) na
complexidade da tela do caso de uso. Em situações onde o caso de uso possui mais de uma
tela, selecionou-se a tela que continha mais campos a serem preenchidos.
A complexidade se refere à quantidade de campos a serem preenchidos na tela do
caso de uso, ou seja, os campos são elementos de preenchimento, especialmente do tipo
form, mas também combobox e checkbox. De forma que a complexidade foi definida em três
níveis (I, II e III), sendo: I - de complexidade baixa os UC que apresentam até 10 campos;
II - de complexidade média os que apresentam de 11 a 25 campos e III - de complexidade
alta, formado por casos de uso que apresentam mais de 25 campos. A explicação detalhada
da classificação de complexidade pode ser vista no Apêndice A.
Este estudo é composto por 24 casos de uso, o que representa aproximadamente
0,5% dos casos de uso do SIGAA, haja vista o sistema possuir um total de 5268 UC (como
visto no Capítulo 2). Os casos de uso desse estudo foram divididos em quatro grupos (G1,
G2, G3, G4), como visto na Tabela 6. De modo que a formação dos grupos considera o
tempo da última alteração relacionada ao caso de uso (com base no GAS) e complexidade
da tala.
Dessa forma, houve a seguinte definição dos grupos:
• G1 é formado por casos de uso nos quais a última alteração foi entre 1 e 6 meses;;
• G2 é formado por casos de uso nos quais a última alteração foi entre 6 e 12 meses;
• G3 é formado por casos de uso que apresentarem última alteração há mais 12 meses;
Capítulo 4. Estudo de Caso na STI UFRN 45
• G4 é formado por casos de uso cuja última alteração foi há menos de 1 mês;
• Para cada um dos grupos G1, G2 e G3, foram selecionados sete casos de uso,
sendo três de maior complexidade,