Escolar Documentos
Profissional Documentos
Cultura Documentos
COORPORATIVO DE TI
Leonardo Mayer de Souza
Resumo: Qualidade de software é assunto cada vez mais abordado dentro da Engenharia de
Software, pois um sistema sem qualidade dificilmente será bem aceito pelos usuários. Assim, os
testes de software são utilizados para aferir a confiabilidade de um sistema. Porém, caso os
testes sejam executados somente dentro de um contexto de uma fase do desenvolvimento,
validações importantes podem ser esquecidas e o tempo de execução também tende a ser alto.
Nesse sentido, este estudo de caso propõe uma melhoria sobre o processo de testes utilizado em
uma empresa de desenvolvimento de software de Florianópolis que começou a adotar a
metodologia ágil como metodologia de desenvolvimento de seus sistemas.
1 INTRODUÇÃO
Acontece que nos últimos anos a tecnologia está se desenvolvendo de forma bastante
acelerada no mercado de trabalho. Muitas empresas, demandas, inovações, competitividade.
Essa competitividade faz com que os empresários busquem diferenciais. A qualidade de
software é um dos diferenciais que uma empresa de tecnologia pode ter atualmente.
“Em muitos aspectos a engenharia de software pode ser comparada à engenharia civil.
Na engenharia civil o projeto, em geral, tem os seguintes passos: contexto, arquitetura, projeto
técnico, construção e validação.” (MARTINS, 2008, p. 10). O ponto que se quer chegar neste
trabalho se apresenta na última palavra da frase de Martins (2008): Validação.
O objetivo deste artigo foi elaborar uma proposta de organização de estrutura de testes
de sistema, identificando onde os níveis, tipos e técnicas de teste devem ser utilizados e em qual
momento para aperfeiçoar o processo já existente.
Foi realizada uma pesquisa bibliográfica, visto que referenciais teóricos relativos ao
tema foram discutidos e o estudo de caso, visto que foi uma pesquisa em uma empresa da área
de desenvolvimento de software.
Com a inovação dos computadores após a segunda guerra mundial teve-se um grande
aumento na dinamização da indústria de computadores e, por conta disso, o processo de
construir softwares para que os mesmos automatizassem os processos que eram manuais e
pudessem facilitar situações complexas que fazem parte do dia-a-dia das organizações.
A partir deste cenário que surgiu a necessidade de criar modelos de desenvolvimento de
software que pudessem atender as novas demandas e ao mesmo tempo ser utilizados na
elaboração de softwares. Conforme Bezerra (2015, p.31), “O desenvolvimento de um sistema
envolve diversas fases e a um encadeamento específico dessas fases para a construção do
sistema dá-se o nome de Modelo de Ciclo de Vida”.
Segundo Audy e Prikladnicki (2007, p.14), o modelo cascata “é um ciclo de vida que
utiliza um método sistemático e sequencial, em que o resultado de uma fase constitui a entrada
de outra, cada fase é estruturada como um conjunto de atividade que podem ser executadas por
pessoas diferentes, simultaneamente ou não”. Este modelo é constituído pelas atividades de
análise, projeto, codificação, teste e implementação. Nota-se que neste processo a atividade de
testar o produto ocorre somente após as três primeiras.
Testes de unidade:
Segundo Wazlawick:
Testes de integração:
Para Humble e Fearley (2014, p.97), devem ser aplicados “se sua aplicação se comunica
com vários sistemas externos por meio de diferentes protocolos, ou se a aplicação em si consiste
em uma série de módulos de baixo acoplamento com interações complexas entre eles”.
Testes de sistema:
Conforme Pressman (2011, p.409), são “...uma série de diferentes testes cuja finalidade
primária é exercitar totalmente o sistema”. Os testes de sistema são executados pensando no
sistema como um todo e em como o usuário vai utilizar o mesmo.
Testes automatizados:
5. Você considera que o fluxo de trabalho da sua área está bem definido? Explique
porquê.
R: - As vezes não fica muito claro o que é prioridade e se faz necessário
perguntar ao líder.
6. Você considera que existe alguma atividade que poderia ser incluída no seu
fluxo de trabalho? Qual?
R: - Gostaria de aprender a automatizar os testes.
9. Em qual etapa do processo você acha que os casos de teste devem começar a
serem automatizados?
R: - Quando a regra de negócio estiver bem sólida
10. Gostaria de manifestar algo que acha importante e as perguntas acima não
contemplam? Caso positivo, o que?
R: Não.
15/08/2016 08:20 – Automatizador de Teste 1:
5. Você considera que o fluxo de trabalho da sua área está bem definido? Explique
porquê.
R: - Sim, raramente a rotina muda.
6. Você considera que existe alguma atividade que poderia ser incluída no seu
fluxo de trabalho? Qual?
R: - Não
9. Em qual etapa do processo você acha que os casos de teste devem começar a
serem automatizados?
R: - Desde a etapa de desenvolvimento, existem testes que podem ser feitos a
nível de código.
10. Gostaria de manifestar algo que acha importante e as perguntas acima não
contemplam? Caso positivo, o que?
R: Gostaria de propor que os testadores manuais escrevessem casos de teste para que os
automatizadores programem no Selenium, assim os testes ficariam mais completos pois
teriam a visão de duas pessoas.
15/08/2016 16:30 – Automatizador de Teste 2:
5. Você considera que o fluxo de trabalho da sua área está bem definido? Explique
porquê.
R: - Sim, as atividades mudam por conta da demanda, mas o fluxo sempre é o
mesmo.
6. Você considera que existe alguma atividade que poderia ser incluída no seu
fluxo de trabalho? Qual?
R: - Automatizar os casos de teste junto às equipes ágeis.
9. Em qual etapa do processo você acha que os casos de teste devem começar a
serem automatizados?
R: - Acho que na construção do produto dentro das equipes ágeis os testadores
podem começar.
10. Gostaria de manifestar algo que acha importante e as perguntas acima não
contemplam? Caso positivo, o que?
R: - Não
16/08/2016 09:00 – Analista de Teste 2:
5. Você considera que o fluxo de trabalho da sua área está bem definido? Explique
porquê.
R: - Sim, acho que um exemplo disso é o tempo que um funcionário novo leva
pra se adaptar que é bem rápido, o sistema é grande e complexo mas o fluxo de
trabalho é simples.
6. Você considera que existe alguma atividade que poderia ser incluída no seu
fluxo de trabalho? Qual?
R: - Poderíamos ter testadores direto nas equipes ágeis.
9. Em qual etapa do processo você acha que os casos de teste devem começar a
serem automatizados?
R: - Acho que quando o desenvolvimento estiver pronto e tiver certeza que não
irá mudar nenhum requisito do sistema.
10. Gostaria de manifestar algo que acha importante e as perguntas acima não
contemplam? Caso positivo, o que?
R: Não
17/08/2016 11:45 – Analista de Teste 3:
5. Você considera que o fluxo de trabalho da sua área está bem definido? Explique
porquê.
R: - Com certeza, pois não tenho dúvidas sobre o que eu preciso fazer no meu
dia-a-dia.
6. Você considera que existe alguma atividade que poderia ser incluída no seu
fluxo de trabalho? Qual?
R: - Acho que seria interessante acompanharmos o trabalho do desenvolvedor e
testar em paralelo a ele, assim pode ser que evitemos que o bug seja integrado na
versão.
9. Em qual etapa do processo você acha que os casos de teste devem começar a
serem automatizados?
Não conseguiu responder.
10. Gostaria de manifestar algo que acha importante e as perguntas acima não
contemplam? Caso positivo, o que?
R: - Sim, gostaria de dar uma sugestão: gostaria que a rotatividade dos testes dos módulos fosse
mais frequente pois gostaria de aprender outras partes do sistema que ainda não testei.
Essa sugestão faz com que seja frequente a participação dos testadores na concepção
das regras de negócio dos softwares, onde poderiam auxiliar no impacto em que as mudanças de
requisitos sofrem no desenvolvimento do sistema. Nesta etapa o teste do tipo funcional deve ser
utilizado, pois é neste momento que os requisitos funcionais são fabricados. Os testadores
também receberão as alterações do sistema previamente tendo assim a oportunidade de realizar
os testes no momento em que o sistema é desenvolvido. Neste momento predominaria o teste do
tipo exploratório, para garantir que falhas na aplicação não sejam integradas ao sistema.
Com a presença de testadores exclusivos para cada equipe ágil, mais uma possibilidade
de melhoria foi citada pelo automatizador de teste 2, na pergunta número 6, quando perguntado
se existe alguma atividade que poderia ser inclusa no seu fluxo de trabalho, o mesmo
respondeu: “Automatizar os casos de teste junto às equipes ágeis.”
Se algum tempo for investido com treinamento de automatização aos testadores das
equipes ágeis em parceria com os desenvolvedores, é possível que o laboratório consiga
trabalhar em testes a nível de código, testando as possibilidades de entrada e saída
automaticamente. Como consequência, a abrangência de um nível de teste que o Laboratório
não possui hoje: Testes de unidade.
Outra questão levantada foi referente a importância da automatização e onde os testes
começam a ser automatizados. Sobre a importância da automatização, o padrão de resposta se
repetiu entre os entrevistados. Quando foi falado da importância que se tem em automatizar e os
benefícios que a mesma trás, poupando tempo de teste manual e até mesmo garantindo cenários
repetitivos que é inviável para os testes manuais abordarem, ouve um padrão de concordância
nas respostas. Um dos analistas de teste ainda disse:
Não precisamos nos preocupar em testar os mesmos campos todos os dias pois se
estiver automatizado já estará fazendo esse trabalho. (Analista de teste 2, pergunta 8
do questionário)
Através da entrevista foi possível perceber também que há retrabalho quando o roteiro
de testes de um requisito novo é desenvolvido. As mudanças que os clientes solicitam no
decorrer do desenvolvimento do software impactam diretamente nos casos de teste
automatizados que param de funcionar e precisam ser refatorados. Diante desses pontos de
vista, podemos concluir que no Laboratório Bridge, podemos utilizar a automatização de testes
nos níveis de teste de unidade e de sistema, contemplando os tipos de teste: de componente,
funcionais e de regressão.
Gostaria de propor que os testadores manuais escrevessem casos de teste para que os
automatizadores programem no Selenium, assim os testes ficariam mais completos,
pois teriam a visão de duas pessoas. (Automatizador de Teste 1, pergunta 10 do
questionário)
Esta sugestão mostrou que seria muito mais produtivo se os testadores manuais
compartilharem os casos de testes feitos para com os automatizadores, a fim de abranger o
ponto de vista de mais de uma pessoa a um determinado módulo ou requisito. A outra sugestão
foi feita pelo analista de teste 3 e diz respeito as tarefas que são realizadas, o testador pede para
que a rotatividade da distribuição dos módulos seja feita com mais frequência para aprender
mais sobre o mesmo:
Gostaria que a rotatividade dos testes dos módulos fosse mais frequente pois gostaria
de aprender outras partes do sistema que ainda não testei. (Analista de teste 3,
pergunta 10 do questionário)
Após a entrevista, através de uma conversa informal, foi esclarecido que essa
rotatividade é feita a cada mês, pois é o tempo necessário para o testador aprender o módulo de
forma mais profunda. O testador concordou que este realmente era o melhor cenário e não tinha
pensado por esse ponto de vista.
3 CONCLUSÕES
A qualidade dos softwares tem cada vez mais importância para as corporações, uma vez
que a sua falta pode ocasionar prejuízos financeiros e de imagem aos usuários que utilizam
sistemas com funcionamentos que não se comportam conforme esperado, ou até mesmo que
possuem falhas ou erros. Assim, os testes são utilizados para garantir e aferir a qualidade dos
produtos seja para confirmar que o software está funcionando como esperado ou descobrindo
erros. Baseando-se nisso, este artigo foi feito para melhorar o processo de testes de uma
empresa de desenvolvimento de software afim de promover uma melhoria na qualidade dos
produtos. O estudo foi realizado em forma de entrevista, coletando informações do processo
com alguns dos colaboradores da empresa. Após as entrevistas uma análise dos dados foi
realizada apresentando propostas de melhoria e visando uma qualidade do produto superior ao
que era anteriormente.
Audi, Jorge; Prikladnicki, Rafael. Desenvolvimento Distribuído de Software. ed. Elsevier: 2007.
Bartié, Alexandre.Garantia da qualidade de software: adquirindo maturidade organizacional,
Campus, 2002.
Bezerra, Eduardo. Princípios de Análise e Projeto de Sistemas com UML, 2015
GIL, Antonio Carlos. Métodos e técnicas de pesquisa social. 6 ed. São Paulo: Atlas, 2008.
Humble, Jez; Fearley, David. Entrega Contínua: Como Entregar Software de Forma Rápida e
Confiável. Ed. Bookman: 2014
Martins, José Carlos Cordeiro. TÉCNICAS PARA GERENCIAMENTO DE PROJETOS DE
SOFTWARE. ed. Brasport Livros e Multimídia Ltda: 2007.
Pezzè, Mauro; Young, Michal. TESTE E ANÁLISE DE SOFTWARE. ed. Bookman: 2008.
Pressman, Roger. Engenharia de Software: Uma Abordagem Profissional. Ed McGraw Hill
Brasil: 2009
Wildt, Daniel; Moura, Dionatan; Lacerda, Guilherme; Helm, Rafael. eXtreme Programming. ed.
Casa do Código: 2008.
Schach, Stephen R. Engenharia de Software. ed. AMGH: 2010.
Wazlawick, Raul. Engenharia de Software: Conceitos e Práticas. Ed Elsevier: 2011