Escolar Documentos
Profissional Documentos
Cultura Documentos
Processo de Teste.
Qualidade de Software.
Planejamento;
Motivação;
Resolução de Conflitos.
Processo de Desenvolvimento de Software
É um processo organizado que norteia o desenvolvimento do
software desde a fase de levantamento de requisitos até a fase final de
entrega. Este processo é chamado também de Ciclo de Vida de
Desenvolvimento de Software. As fases desse processo veremos a
seguir.
Fases do Processo de Desenvolvimento do
Software
Iniciação
Define o escopo do Software – reuniões com cliente e venda do
sistema.
Elaboração
Definição de qual metodologia será usada para o desenvolvimento
do sistema, levantamento de requisitos e elaboração destes, definição
de arquitetura, banco de dados, cronogramas e etc.
Construção
Nesta fase é construído o sistema: desenvolvimento e teste de
software. É criada uma versão homologável para entrega.
Finalização
Aqui temos uma versão para implantação e o teste de Aceitação feito
pelo cliente.
Metodologias de Desenvolvimento de Software
Metodologias são os passos que descrevem como um software
será desenvolvido. São vários tipos de metodologias. Veremos a seguir
três tipos: Modelo Cascata, Modelo Prototipação e Scrum – Metodologia
Ágil de Desenvolvimento de Software.
Cascata
Modelo em que cada fase só se inicia após a anterior ser
completamente finalizada. É necessário para esse tipo de metodologia
requisitos abrangentes e estáveis, quando a duração do projeto é
pequena (até dois anos, ao menos). O sistema é entregue todo, de uma
só vez. Os passos estão na representação abaixo
Figura 18 – Processo
Explicando os Níveis
01 - O processo apenas completa o trabalho.
02 - Planejamento da execução e confronto do resultado com o que
foi planejado.
03 - Constrói-se diretrizes do processo que existe e estas são
documentadas formalmente.
04 - O processo é gerido quantitativamente através de relatórios,
estatísticas e técnicas adotadas pela empresa.
05 - O processo é norteado pela qualidade do que foi implantado e é
alterado e adaptado para atender às necessidades
negociais/estratégicas da empresa.
CMMI Representação por Estágios
Nesta representação são avaliados os níveis de maturidade em
uma sequência pré-determinada e cada uma deve ser considerada, pois
serve de base para os próximos níveis (Maturity Levels):
Nível 1: Inicial (Ad-hoc)
Nível 2: Gerenciado / Gerido
Nível 3: Definido
Nível 4: Gerido quantitativamente
Nível 5: Em otimização
Aqui a maturidade é organizada por um conjunto de processos e é
necessário que todos os processos avaliados estejam neste nível de
maturidade para que a empresa seja certificada. Exemplo: Se quase
todos os processos forem nível três, mas apenas um deles estiver no
nível dois a empresa não irá conseguir obter o nível 3 de maturidade.
Risco no Processo de Teste
A área de Risco é extensa e muito complexa. Para todo processo
é preciso que sejam avaliados os riscos inerentes ao implantá-lo e é
imprescindível que os resultados obtidos com esse processo sejam
satisfatórios para a empresa que o adotou.
Exemplo:
Selenium - http://seleniumhq.org
Watir - http://wtr.rubyforge.org
BadBoy - http://www.badboy.com.au
actiWATE - http://www.actiwate.com
Canoo WEBTest - http://WEBtest.canoo.com
Apodora - http://www.apodora.org
Testes de Desempenho
JMeter - http://jakarta.apache.org/jmeter
http://www.devmedia.com.br/usando-o-jmeter-para-teste-de-
performance/20302
Testes Unitários
PHPunit.
JUnit (http://junit.sourceforge.net/).
TestNG (http://testng.org).
NUnit (http://www.nunit.org/).
Caixa Preta – Teste Funcional
Teste Caixa Preta, teste funcional, teste manual, teste
exploratório, etc. Os testes Caixa Preta tem o objetivo de validar o
software na visão do usuário. Telas, campos, nomes de campos,
mensagens de ajuda, mensagens de alerta, cores, tipos de paginação....
Um mundo de validações que devem ser levadas a sério. É por conta
destas validações que resolvi escrever este livro.
Com o advento da automação, da rapidez, da agilidade, achou-se
que, os testes manuais ficariam obsoletos, mas não ficaram. A visão do
usuário sobre o sistema que ele pagou jamais será obsoleta. Os testes
manuais confirmam não só os documentos elaborados pela equipe de
requisitos, mas, as expectativas do cliente. Aquele olhar crítico
construtivo do Analista de Teste sobre o software traz incontáveis
benefícios ao sistema e evita retrabalhos e reclamações dos usuários.
Vou mais que conceituar os tipos de teste. Quero incluir vários exemplos
de como testamos e os tipos de testes para melhor visualização do
processo. Vamos lá!
Tipos de Teste Caixa Preta
Usabilidade – Valida a forma como o software pode ser navegado.
Exemplos:
- Hint
Hint é aquela frase que ao passar o mouse sobre um campo ela
explica o que ele faz. Existem botões, campos ou links que não são tão
didáticos quanto pensamos. Nós que temos a documentação do projeto
em mãos é fácil. Mas e o usuário? Às vezes, o usuário final do software
não é o mesmo que requisitou. Quem requisita é o Dono da empresa
para o seu setor de RH, por exemplo. Então é importante que este
auxiliador esteja no lugar certo e principalmente, informando uma
mensagem coerente e ortograficamente correta.
- Selecionar TODOS
Durante um teste onde o resultado da pesquisa nos dá mais de
50 registros por página, onde estes registros são selecionáveis, é
imprescindível um check box Selecionar Todos. Assim como no seu e-
mail que, ao acessar uma pasta que não lhe interessa mais seu
conteúdo, você pode ir no Check Box e Selecionar todas as mensagens
apresentadas da tela e excluir. Já pensou ter que selecionar um a um?
Isso torna o trabalho prático e com a usabilidade em dia.
Fonte: Elaborada pela autora
Fonte:
http://www.mantisbt.org/bugs/login_page.php?return=%2Fbugs%2Faccount_page.php
Figura 14 – Tela Minha Visão – Mantis.
Fonte:
http://www.mantisbt.org/bugs/login_page.php?return=%2Fbugs%2Faccount_page.php
A visão do Mantis é totalmente configurável. As telas apresentadas
aqui são a visão desejada para o projeto.
Quando uma ferramenta de gestão de defeitos é escolhida por uma
empresa, a visão dos itens importantes para aparecer na primeira tela
será decido em conjunto com a equipe de projetos, levando em
consideração o projeto, escopo, necessidades dos envolvidos e tudo
que nortear o objeto de teste.
O mais importante que quero trazer com essas telas:
É preciso ter a rastreabilidade e relatos conscientes dos
defeitos encontrados no sistema. Seja com ferramenta, seja com
planilha, seja com e-mails.
É preciso organizar e rastrear os bugs, suas classificações, seu
status e claro, o retrabalho – seja por problemas de documentação,
ambiente, entendimento da descrição, etc.
Figura 15 – Tela Relatar Caso – Selecionar Projeto – Mantis.
Fonte:
http://www.mantisbt.org/bugs/login_page.php?return=%2Fbugs%2Faccount_page.php
Fonte: http://www.mantisbt.org/bugs/login_page.php?return=%2Fbugs%2Faccount_page.php
Como vimos, os campos para relato de bug também são
configuráveis. Mas, sabemos o que não pode faltar, não é? Resumo,
descrição com o passo a passo e a tela para reprodução da falha não
podem ficar de fora de um bom relato de erro. A classificação e
priorização também ajuda o desenvolvedor a decidir qual item atacar
primeiro.
Métricas de Teste
Quando questionada sobre como poderíamos medir o produto do
Teste pensei em todas as questões que poderiam gerar embasamento
para valorizar o serviço de Teste de Software. A equipe usa a
Metodologia Scrum e como essa metodologia ágil não valoriza a
documentação, é mais complicado para nós analistas de teste. Sem
dados completos, e às vezes sem dado algum para teste, vamos na
experiência e na conversa com usuários e analistas para validar as
funcionalidades e o registro dos bugs, não para rastreabilidade, apenas
para que o desenvolvedor possa resolver o problema do sistema.
Bom, vamos as minhas sugestões de como seria a melhor
maneira de medir o Teste:
Medida – variável onde o valor é atribuído como resultado de uma
medição
Indicadores Sugeridos:
Plano de Teste
Contém os casos de uso, telas e projeto que serão testados,
responsáveis pelo teste, elaborar roteiros, criar ambiente, quais erros
podem ser encontrados, riscos do processo, etc. É o planejamento
inicial do Teste sobre a demanda enviada para a equipe.
Sumário de Teste
Documento de finalização do teste. Contém o relatório com os
bugs encontrados por tela/módulo, classificados e discriminados. Aqui
informamos se houve algum contratempo, alteração de escopo, causa
de atraso e etc.
Controle de Atividades
Controle das atividades do analista de teste. Caso a empresa não
tenha uma ferramenta de gestão de atividades é preciso que o
profissional de teste faça esse controle e mantenha a rastreabilidade
das suas atividades. Proatividade neste caso é fundamental, pois, para
o teste, os dados das execuções são as provas do trabalho. Até por que,
ao final do teste temos apenas o software funcional. Os bugs estão
fechados e os roteiros completamente executados. São os bugs e os
ciclos de teste que mostram as horas e o trabalho do analista de teste.
Outros Artefatos...
Você como responsável pela área de teste certamente, caso ainda
não exista, terá que desenvolver a estratégia de teste e a política de
teste da empresa. A política irá nortear todo o teste da empresa, com
sua missão e os mais importantes conceitos a respeito do que a
empresa pensa sobre teste de software.
A estratégia de teste pode ser uma ou várias, por que pode ser
criada para cada projeto, iteração ou módulo. Essa decisão – de como
será criada a estratégia de teste – deve ser feita em conjunto com o
gerente ou a equipe de projetos, pois é quem diz como o projeto será
conduzido: cascata ou ágil; com entregas em iterações ou módulos, etc.
De acordo com o Syllabus 2018 “Uma estratégia de teste fornece
uma descrição geral do processo de teste comumente no nível do
produto ou organizacional. ” A estratégia pode ter diferentes tipos:
analítica, baseada em modelo, dirigida, reativa... depende do foco e do
objetivo do projeto. O ideal é combinar várias estratégias e abordagens
para atender prontamente o escopo do projeto que está sendo testado.
Equipe bem treinada e valorizada faz a diferença
Durante meus anos como profissional de teste de software, o
maior desafio que identifiquei para as equipes foi, ou ainda é,
demonstrar a importância do Teste de Software para o produto final.
Provar que o Teste não é um custo, como alguns Gerentes ainda veem,
mas sim um investimento em qualidade. Ainda que consuma um pouco
mais de tempo do projeto, as atividades de teste são de suma
importância. É importante que o software passe pelos olhos atentos do
especialista antes da entrega ao usuário final.
Essa maratona de provar que teste é investimento e não custo
leva as equipes a se sentirem um pouco desvalorizadas, já que, só o
fato de ser cogitada a possibilidade da dispensabilidade do teste, pode
fazer o analista pensar: se pode ser dispensado, é realmente
importante? SIM! É importantíssimo! O que ocasiona a dispensa do
teste nunca é operacional, mas sim, financeiro. O tempo de atraso pode
gerar multa. Aumento do tempo de projeto aumenta o preço e daí o
cliente pode não aceitar a proposta. A dispensa do Teste de Software
nunca é por que ‘não é necessário’. O teste sempre é necessário.
Dispensar o teste é brincar de ‘roleta russa’, pois, por mais experiente e
eficiente que seja a equipe de desenvolvimento, entregar um software
com apenas testes unitários e de integração de código pode ser
desastroso. A visão do usuário deve ser sempre validada por
especialistas experientes e capacitados para evitar que erros bobos
sejam pegos pelos usuários finais. A reputação da equipe de projeto é
posta à prova quando bugs primários são entregues aos clientes.
No MBA, meu trabalho de conclusão falou exatamente sobre a
importância do teste para o software e, principalmente, a valorização da
equipe de teste. Uma equipe bem treinada, motivada, que sabe seu
valor e a importância do seu trabalho agrega um valor considerável ao
sistema.
A falta de reconhecimento do trabalho da equipe de teste faz com
que a área em si seja desvalorizada pelos superiores e por quem
trabalha nela. Os mais novos na área podem inclusive ser contaminados
por essa visão de ‘porta de entrada na TI’ ou ‘Teste é dispensável’ por
não terem o conhecimento da importância da nossa disciplina.
O resultado final depende da capacitação da
equipe
Enquanto a equipe de teste for segregada ou composta por
qualquer perfil, como já vimos neste livro, o serviço de teste terá falhas
básicas e não será levado a sério. É preciso investir em treinamento e
capacitação para que a equipe possa atender as demandas da
empresa. Novas tecnologias pedem novas ferramentas ou uma nova
visão de teste e para isso, é importante que a empresa tenha
consciência que sua equipe de teste deve acompanhar as necessidades
dos clientes e das demandas do projeto para apresentar um trabalho de
excelência.
Não adianta economizar quando se fala em treinamento. Treinar
a equipe corretamente traz segurança para a empresa de que as
necessidades dos seus clientes serão atendidas.
Devem-se observar os seguintes itens para o treinamento da Equipe:
1 – A carga horária das aulas práticas não deve ser muito pequena.
Já que os resultados deste treinamento serão cobrados de imediato.
Este treinamento não deve ser visto como custo, mas como
investimento para a empresa. A equipe estará qualificada e melhor
preparada para atender as necessidades dos clientes.
“Escolha um trabalho que você ama e você nunca terá que trabalhar
um dia sequer na vida.” Confúcio.
“Eu quase ia dizer para você fazer o que ama, mas não é bem assim.
As pessoas mais felizes e bem-sucedidas não amam o que fazem. Elas
são obcecadas em resolver algo que importa a elas.” Drew Houston,
fundador do Dropbox.
Processo de Gerenciamento
Programação do Plano de teste: Quantidade de Horas para Teste
e quantidade de horas para Elaborar Roteiro de Teste Funcional.
Exemplo:
Analisar a complexidade dos UC’s:
Cadastro do Aluno - 7 casos de Uso
3 casos de Uso que levarão a média de 4 horas para serem
elaborados os RTF’s.
Total de Horas: 4*3 = 12 horas
Dias de Trabalho: 12 (horas) dividido por 6 (horas reais
produtivas) = 2 dias
Para o teste
Quantos casos de uso temos e suas complexidades?
Temos 7 UCs e suas complexidades são conforme abaixo.:
Massa de Teste
A massa de teste deve ser usada em caso específico, onde há
valor correto de entrada e saída válida para orientar o executor de teste.
A massa de teste inventada pode ser facilmente trocada pelos
dados contidos na coluna precondição. E MAIS: O mínimo esperado de
um executor de teste é inventar dados para executar o teste.
Exemplo RTF com massa de teste
2 – Casos de Teste
2.1 - Fluxo: Incluir Dados do Candidato (Ver Tela)
2.1.1 – Padrão de Tela: Tela Incluir Cadastro
2.1.2 – Massa de Teste
Template - Sumário de teste:
O sumário de teste é a documentação que fazemos NO FINAL do
projeto de teste, para entrega. Reúne dados de como foram os testes,
os casos de uso/telas/módulos testados
Os insumos para o documento são retirados da planilha para gerar
gráficos de bugs por tela/Caso de Uso.
Os dados para a planilha são retirados dos BUGS cadastrados e
classificados corretamente
Seja através de um bugtracker - como o Mantis
Ou uma planilha de cadastro de atividades.
Por isso é preciso registrar e classificar os bugs, caso contrário, os
dados do sumário serão pobres e apenas textos, sem atrativos e
demonstrabilidade da execução do teste.
O SMT é composto pelos itens:
Sumário
Introdução:
Escopo – casos de uso/telas/módulos testados
Referências – cadastro de bugs
Sumário dos Resultados dos Testes
Considerações
Relatórios
Gráficos ou Classificação dos bugs, exemplo:
Conclusões ➔Avaliação dos Testes.
Relatar Erros:
Excel
Glossário e Conceitos
Artefato – Termo usado para designar os documentos produzidos
para o sistema.
Banco de Dados – Disciplina que cria, modela e implanta o banco
de dados de um projeto. É feito por um analista de banco de dados –
DBA
ECU – Especificação de Caso de Uso. Dividido em Fluxo Principal,
Fluxos Alternativos, Fluxos de Exceção e Pontos de extensão traz em
seu conteúdo o funcionamento e as regras de cada tela do sistema.
Engenharia de Software – Área da Computação que especifica a
manutenção e o desenvolvimento de sistemas de software aplicando
práticas da Gerência de projetos e outras disciplinas visando
produtividade, organização e qualidade.
GP – Gerente de Projetos.
Hint – Frase de ajuda que é exibida quando passamos o mouse por
cima de uma label, campo, ícone, etc.
Label – Palavra ou Frase de uma tela que não é editável.
MA – Metodologia Ágil que serão apresentadas pelo sistema.
MSG – Documento de Mensagem – Documento que especifica todas
as mensagens que serão apresentadas pelo sistema.
Processo de Desenvolvimento – Processo que norteia como um
software será desenvolvido. Este processo pode
ser feito em vários modelos – tradicionais, como o Modelo Cascata,
espiral ou Prototipação. Ou por Contemporâneos - modelos ágeis, como
o Scrum.
PTE – Plano de Teste.