Prévia do material em texto
<p>Conteudista: Prof.ª Dra. Marise de Barros Miranda</p><p>Revisão Textual: Prof.ª Dra. Selma Aparecida Cesarin</p><p>Objetivos da Unidade:</p><p>Adequar e utilizar, em processos de Testes Automatizados de Software, um conjunto</p><p>adequado e integrado de soluções de Mercado;</p><p>Decidir quais casos de Teste automatizar e selecionar a Ferramenta de Teste</p><p>automatizada mais adequada;</p><p>Dividir esforços de Testes Automatizados;</p><p>Construir Testes Automatizados resistentes, consistentes e de qualidade.</p><p>📄 Contextualização</p><p>📄 Material Teórico</p><p>📄 Material Complementar</p><p>Casos de Uso com as Melhores Práticas de Testes</p><p>Automatizados</p><p>📄 Referências</p><p>Espera-se que o Mercado de Testes de Automação cresça 14,2% para o período de previsão de 2021 a 2026,</p><p>projeta o estudo da Mordor Intelligence.</p><p>Clique no botão para conferir o conteúdo.</p><p>ACESSE</p><p>O Mercado de Testes de Automação é impulsionado pelo crescimento na demanda por automação do</p><p>processo de Teste e soluções para uma experiência perfeita do cliente e uso crescente de AI (Artificial</p><p>Intelligence), na qual, possibilitou a integração de Tecnologias de ponta para ambientes de Teste de</p><p>Software.</p><p>1 / 4</p><p>📄 Contextualização</p><p>Site</p><p>Mordor Intelligence</p><p>https://www.mordorintelligence.com/</p><p>No entanto, fatores como o aumento da complexidade para implementar a transição de Testes manuais</p><p>para automatizados provavelmente impedirão o crescimento do mercado nos próximos anos.</p><p>A mudança para os Testes de Automação foi impulsionada principalmente pela Inteligência Artificial (IA) e</p><p>Aprendizado de Máquina (ML – Machine Learning).</p><p>A IA tem ganhado importância nos Testes, pois reduz o ciclo de vida do Teste. Ele está sendo usado em</p><p>todos os aspectos de Teste, incluindo Teste de automação, Teste funcional, Teste de regressão e Teste de</p><p>desempenho.</p><p>Com o movimento contínuo do desenvolvimento de Software para DevOps e outros desenvolvimentos de</p><p>alto ritmo, há um requisito mais frequente para especificar ambientes de Teste, no sentido de garantir que</p><p>os sistemas funcionem com eficiência.</p><p>No cenário de Teste atual, ainda assim, a capacidade das organizações de modelar e gerenciar Testes com</p><p>precisão é imatura. Os testadores (Testers) de desempenho ou performance das aplicações, estão</p><p>teoricamente buscando ajudar nesse quesito. Ainda assim, são cautelosos quanto à capacidade de</p><p>modelagem, uma vez que as funções de Teste podem assumir altos custos anuais devido ao uso de</p><p>capacidade adicional, no caso de aplicações elásticas em nuvem.</p><p>Nos últimos anos, o mundo dos Testes de Software testemunhou mudanças significativas, onde o Test</p><p>Automation evoluiu para facilitar lançamentos rápidos de Software da mais alta qualidade.</p><p>A automação sempre foi uma tendência atraente.</p><p>Para atingir o objetivo de Teste autônomo, a IA deve se tornar parte integrante das ferramentas de Teste de</p><p>Software. Cada ciclo de Teste gera uma grande quantidade de dados, que podem ser usados para identificar</p><p>e resolver falhas de Teste. Após cada execução de Teste, os dados podem ser enviados de volta para os</p><p>algoritmos de IA. Com essas vantagens crescentes de integrar IA em Testes, a demanda por tecnologia tem</p><p>aumentado.</p><p>Por exemplo, em abril de 2020, a Applitools, fornecedora de automação de Teste baseada em IA visual,</p><p>anunciou um relatório do setor declarando o impacto da IA visual no desempenho de estruturas de Teste de</p><p>código aberto como Selenium, WebdriverIO e Cypress.</p><p>O resultado mostrou que os efeitos da IA visual nos Testes de Automação aumentaram de 4,6 vezes na</p><p>estabilidade do Teste, 5,9 vezes melhor na eficiência do código de Teste e uma varredura de código 5,8</p><p>vezes mais rápida.</p><p>Com o aumento do uso de IA no desenvolvimento de ferramentas de Teste, as ferramentas podem auto</p><p>reparar-se em tempo de execução.</p><p>O Teste de Automação de autocorreção deve ser uma das maiores tendências de Teste de Automação no</p><p>período de previsão, incluindo aí os sistemas embarcados e os frameworks de IoT (Internet das Coisas).</p><p>Testes de Qualidade de Software</p><p>O Teste de Automação de Controle de Qualidade é exatamente a garantia de qualidade para Aplicativos e</p><p>Software por meio de Testes Móveis, Testes da Web e Testes Desktop, entre outros, mas automatizados.</p><p>As Ferramentas de Automação de Controle de Qualidade podem assumir tarefas repetitivas para liberar o</p><p>tempo da Equipe para resolver problemas mais complexos ou melhorar o Código.</p><p>Entretanto, não há como alcançar 100% dos Testes Automatizados, mas as Ferramentas de Automação</p><p>podem ajudar a tirar a repetibilidade dos Processos de Testes.</p><p>O Controle de Qualidade deve maximizar os benefícios dos Testes Automatizados nos seguintes cenários</p><p>de Testes:</p><p>2 / 4</p><p>📄 Material Teórico</p><p>Testes que tendem a causar erro humano;</p><p>Testes repetitivos executados para várias compilações;</p><p>Testes que requerem vários conjuntos de dados;</p><p>Funcionalidade frequentemente usada que apresenta condições de alto risco;</p><p>Testes impossíveis de realizar manualmente;</p><p>O sucesso dos Testes Automatizados requer um Planejamento cuidadoso e trabalho de design, como as</p><p>etapas apresentadas na Quadro 1, a seguir:</p><p>Quadro 1 – Objetivos e ações de qualidade de Software com Testes Automatizados</p><p>Objetivo Ação</p><p>Criar um plano de</p><p>automação.</p><p>Identificação do conjunto inicial de Testes a</p><p>serem automatizados e servirem de guia em</p><p>Testes futuros.</p><p>Definir os tipos de Testes</p><p>Automatizados.</p><p>Seleção dos Tipos de Técnicas de Testes e</p><p>sua qualificação para a etapa de automação.</p><p>Determinar as metas dos</p><p>Testes Automatizados.</p><p>Definição das metas a serem atingidas com</p><p>os Testes Automatizados: % passou, % falhou,</p><p>% indefinido, em cada Processo.</p><p>Verificar o tamanho do</p><p>escopo do Teste</p><p>Automatizado.</p><p>Definição do volume e da complexidade dos</p><p>Testes Automatizados. Limitação da edição e</p><p>da depuração dos Testes Automatizados x</p><p>tamanho e complexidade.</p><p>Compartilhar os Testes</p><p>Automatizados e os</p><p>Adição de pequenos Testes que abordam</p><p>novas funcionalidades.</p><p>Testes executados em várias Plataformas e Configurações de Hardware ou Software</p><p>diferentes;</p><p>Testes que exigem muito esforço e tempo durante o Teste Manual.</p><p>Objetivo Ação</p><p>releases.</p><p>Criar Testes</p><p>Automatizados para</p><p>atender pequenos</p><p>objetivos repetíveis.</p><p>Separação clara e definida de escopos</p><p>somente leitura, somente leitura e gravação</p><p>ou ainda somente leitura/escrita/gravação.</p><p>Criar agrupamentos de</p><p>Testes Automatizados.</p><p>Elaboração de matrizes de Testes</p><p>Automatizados para back-end, para front-</p><p>end, para cloud, para web application, para</p><p>app mobile.</p><p>Criar Árvores, se</p><p>necessário, quando os</p><p>Agrupamentos são</p><p>linkados.</p><p>Execução de Testes Automatizados</p><p>predecessores de outros Testes</p><p>Automatizados.</p><p>Roteiro de Boas Práticas para Testes Automatizados</p><p>Selecionar a Ferramenta de Teste automatizada certa;</p><p>Dividir seus esforços nos Testes automatizados;</p><p>Criar dados de Teste bons e de qualidade;</p><p>Criar Testes Automatizados que são resistentes às mudanças na interface do usuário.</p><p>Ferramentas de Testes Automatizados Referendadas por QA</p><p>Com tantas ferramentas de Teste de Software no Mercado, escolher a mais adequada pode tomar muito</p><p>tempo da Equipe de QA.</p><p>A seguir (Tabela 1), alguns exemplos de ferramentas para Testes Automatizados, com recursos de</p><p>qualidade e estratégias de Testes incorporadas.</p><p>Tabela 1 – Ferramentas de Testes Automatizados com QA incorporado</p><p>Ferramenta Recursos principais</p><p>Recursos</p><p>adicionais</p><p>Nível</p><p>Cypress</p><p>Equivalente mais</p><p>amigável ao</p><p>Selenium;</p><p>Ferramenta para</p><p>vários</p><p>navegadores</p><p>(Chrome, Firefox,</p><p>Edge, Electron,</p><p>Brave);</p><p>Execução de Teste</p><p>paralela e</p><p>balanceamento de</p><p>carga;</p><p>Instantâneos</p><p>passo a passo de</p><p>execuções de</p><p>Teste;</p><p>Controle de</p><p>tráfego de</p><p>Rede</p><p>Iniciante</p><p>Ferramenta Recursos principais</p><p>Recursos</p><p>adicionais</p><p>Nível</p><p>Capturas de tela</p><p>de falhas e vídeos</p><p>de execução de</p><p>Teste;</p><p>Depurador</p><p>integrado.</p><p>Postman</p><p>Teste de API;</p><p>Suporte de</p><p>esquema com a</p><p>possibilidade de</p><p>gerar, editar ou</p><p>importar vários</p><p>formatos de</p><p>Esquema e gerar</p><p>coleções a partir</p><p>deles;</p><p>Criação de suítes</p><p>de Teste</p><p>personalizadas;</p><p>Integração</p><p>com o</p><p>pipeline de CI/CD;</p><p>Teste o</p><p>gerenciamento do</p><p>fluxo de trabalho</p><p>por meio do</p><p>aplicativo</p><p>Alta</p><p>parametrização</p><p>para diferentes</p><p>ambientes e</p><p>coleções de</p><p>Teste</p><p>Médio</p><p>Ferramenta Recursos principais</p><p>Recursos</p><p>adicionais</p><p>Nível</p><p>Postman, da linha</p><p>de comando</p><p>Newman ou do</p><p>monitoramento do</p><p>Postman;</p><p>Escalabilidade em</p><p>termos de</p><p>cobertura de Teste</p><p>e frequência de</p><p>Teste.</p><p>Apache</p><p>JMeter Teste de carga e</p><p>desempenho via</p><p>APIs SOAP e REST;</p><p>Suporte a</p><p>Protocolos da</p><p>Web: HTTP (S)</p><p>para Java, NodeJS,</p><p>.NET, PHP etc.;</p><p>Protocolos FTP,</p><p>SFTP, TCP e LDAP;</p><p>protocolos de e-</p><p>mail: SMTP(S),</p><p>POP3(S) e</p><p>IMAP(S;)</p><p>Relatórios HTML</p><p>dinâmicos;</p><p>Simulação de</p><p>vários graus de</p><p>carga em</p><p>servidores e</p><p>aplicativos</p><p>estáticos e</p><p>dinâmicos</p><p>Avançado em</p><p>Aplicações</p><p>de</p><p>infraestrutura</p><p>Ferramenta Recursos principais</p><p>Recursos</p><p>adicionais</p><p>Nível</p><p>Modo multi-</p><p>threaded para</p><p>threads separados</p><p>e grupos de</p><p>threads;</p><p>Opção de</p><p>Planejamento de</p><p>Teste;</p><p>Integração com</p><p>Selenium;</p><p>Integração com</p><p>Bancos de Dados</p><p>via JDBC;</p><p>Muitos plug-ins</p><p>integrados e</p><p>complementares.</p><p>.</p><p>TestProject</p><p>Armazenamento</p><p>em nuvem</p><p>centralizado para</p><p>todos os Testes;</p><p>Execução de Teste</p><p>distribuída;</p><p>Modelo de objeto</p><p>de página com a</p><p>opção de usar</p><p>Teste da web e</p><p>móveis com IA</p><p>em tempo real</p><p>Iniciante</p><p>Ferramenta Recursos principais</p><p>Recursos</p><p>adicionais</p><p>Nível</p><p>mais de um</p><p>localizador por</p><p>elemento e testar</p><p>esses elementos</p><p>separadamente;</p><p>Opção de reutilizar</p><p>Testes e torná-los</p><p>Orientados por</p><p>Dados;</p><p>Alto nível de</p><p>parametrização de</p><p>Teste.</p><p>Testes Automatizados Inadequados</p><p>Muitos testadores de controle de qualidade veem o mesmo potencial nos Testes de Automação.</p><p>Normalmente, isso significa que há tendências observáveis e erros comuns que um testador de controle de</p><p>qualidade pode cometer.</p><p>Exemplos de Testes Automatizados Considerados Inadequados</p><p>Para tornar a Estratégia de Automação de Testes bem-sucedida, deve-se evitar algumas armadilhas e falhas</p><p>comuns.</p><p>Alguns problemas com Testes de Automação são destacados a seguir, com o objetivo de evitar construir</p><p>uma estratégia de automação de Teste fracassada:</p><p>Testes Automatizados Aninhados</p><p>Testes Automatizados Aninhados é quando vários Testes de Automação são executados um em cima do</p><p>outro. Quando isso acontece, torna-se difícil descobrir o que deu errado quando um erro aparece.</p><p>Mas, no curto prazo, a maioria dos casos de Testes de Automação é positiva, dá certo, aparentemente. O</p><p>Testador de Controle de Qualidade usa a ferramenta certa e a executa corretamente. Muitos exemplos de</p><p>Testes de Automação ruins só se tornam ruins seis meses depois, quando os Testes Automatizados foram</p><p>aninhados em outros Testes Automatizados dentro de outros Testes Automatizados.</p><p>Manter foco apenas no Teste de interface com o usuário;</p><p>Falta de experiência em domínio técnico;</p><p>Infraestrutura inadequada;</p><p>Prazos e expectativas inexequíveis;</p><p>Automação de Teste em silos;</p><p>Tentar automatizar tudo;</p><p>Implementação de Caso de Teste não modular;</p><p>Conjunto de Dados de Teste insuficiente;</p><p>Manter Conjuntos de Dados e Ambientes de Teste separados;</p><p>Planejamento e execução defeituosos.</p><p>Teste de Automação de Interface do Usuário sem Supervisão</p><p>O Teste da Interface do usuário certifica-se de que não há nada que o usuário possa fazer na IU (Interface</p><p>User) que interrompa o Programa ou cause mau funcionamento.</p><p>Quando testado manualmente, isso pode exigir muitos testadores e muita mão de obra. É ineficiente testar</p><p>dessa forma, especialmente, à medida que o Programa fica maior e mais funções requerem Testes.</p><p>Com o Teste de Automação, o Processo se torna mais rápido, mas ainda pode exigir a potência total do</p><p>computador e de um testador de controle de qualidade por um dia inteiro.</p><p>Para lidar com isso, os testadores de controle de qualidade irão executar o Teste no final do dia, deixá-lo</p><p>funcionar durante a noite e voltar ao trabalho na manhã seguinte com os resultados esperando por eles.</p><p>Faz sentido, certo?</p><p>Superficialmente, parece a coisa mais inteligente a se fazer. O testador de QA usa seu computador para</p><p>testar outros programas durante o dia e, à noite, executa o Teste de Automação na IU.</p><p>É porque faz sentido intuitivamente, mas esse é um erro comum. Pode dar muito errado quando o Teste de</p><p>Automação é realizado sem supervisão.</p><p>Se algo der errado no início, o resto dos resultados estarão errados. Um dia inteiro de Teste não produziu</p><p>nenhuma informação útil por causa de um erro que poderia ser facilmente detectado e corrigido se alguém</p><p>estivesse lá para verificar se o Teste de Automação estava funcionando corretamente.</p><p>Automatizando as Coisas Erradas</p><p>O Teste de Automação leva tempo para configurar. O controle de qualidade precisa garantir que as</p><p>ferramentas de automação sejam adequadas ao Projeto e que os Testadores de Controle de Qualidade</p><p>saibam como usar as ferramentas de maneira adequada.</p><p>Tudo isso exige muito tempo e organização, e se o resultado final for que um Teste normalmente executado</p><p>uma vez por mês for automatizado, não vale a pena o esforço.</p><p>Além de automatizar tarefas que são raras demais para valer o esforço, algumas tarefas simplesmente não</p><p>podem ser automatizadas com facilidade.</p><p>Substituição de Teste Manual</p><p>Os Testes Automatizados só podem capturar o que é dito para procurar. Se as fontes em uma página da</p><p>Web voltam com aparência estranha, mas o Teste estava apenas verificando se todos os links do site</p><p>funcionavam, ele resolverá um problema (os links), mas não saberá que havia problema com o outro (as</p><p>fontes).</p><p>O Teste Manual pode detectar coisas fora do escopo inicial do Teste. O método de Teste Exploratório foi</p><p>projetado para dar ao Testador de Controle de Qualidade o espaço para encontrar bugs inesperados à</p><p>medida que aparecem, mesmo que não seja o que eles estavam procurando inicialmente. Definido em uma</p><p>tarefa única, o Teste de Automação pode ser completo. O que não pode ser é abrangente.</p><p>Exemplos de Bons Testes Automatizados</p><p>A automação do Teste é realizada para minimizar o risco. Quando um testador de QA pode minimizar o risco</p><p>e maximizar a eficiência, o Teste de Automação deve ser executado.</p><p>Não há razão para um Testador de Controle de Qualidade passar horas verificando manualmente os links em</p><p>um site quando um rastreador da web pode realizar a mesma atividade em menos tempo e, provavelmente,</p><p>não cometerá um erro.</p><p>Uma boa regra para decidir quando o Teste de Automação deve ser usado em vez do Teste Manual é</p><p>perguntar se o Teste será rápido ou contínuo. Se o Teste for executado continuamente, o Teste de</p><p>Automação é o caminho a percorrer.</p><p>As pessoas são piores do que as máquinas quando se trata de executar consistentemente tarefas</p><p>repetitivas em alto nível, quando as pessoas fazem a mesma coisa por muito tempo. Isso permite que erros</p><p>escapem.</p><p>Da mesma forma, um testador de QA perceberá que:</p><p>O Teste Manual Nunca Morre</p><p>Ao examinar os aspectos bons, ruins e muito ruins dos Testes Automatizados, em quais situações ele</p><p>funciona bem e muito bem, pode-se concluir que trazem grandes benefícios. Mas quando se procura por</p><p>defeitos ou falhas de modo exploratório, o Teste manual responde muito bem se somado à experiência do</p><p>testador, que realiza a tarefa sem um plano predefinido de Testes.</p><p>Os Testes Exploratórios só podem ser realizados por meio de Testes Manuais. O benefício do Teste</p><p>Exploratório é que ele permite que o testador se adapte às suas descobertas rapidamente, sem a</p><p>necessidade de escrever outro Caso de Teste.</p><p>Os Testes Exploratórios também permitem colaboração, elaboração de teoria e colaboração, tudo em tempo</p><p>real.</p><p>Os Testes Automatizados carecem de flexibilidade e criatividade para serem ágeis o suficiente nos Testes</p><p>Exploratórios. Assim os Testes Automatizados funcionam melhor em um ambiente rígido, no qual se</p><p>conhece exatamente o que procurar. O Teste Exploratório é exatamente o oposto – instrui o Testador de</p><p>Controle de Qualidade a realizar o Teste nas partes mais qualificadas.</p><p>Testes de Segurança e Vulnerabilidades nos Softwares</p><p>Gastou mais tempo</p><p>do que se executasse o Teste de Automação;</p><p>Fez um trabalho pior e introduziu mais bugs posteriormente.</p><p>O Departamento de Segurança Interna dos Estados Unidos (DHS) afirma que 90% dos incidentes de</p><p>segurança resultam de explorações contra defeitos de Software, o que implica que o Desenvolvimento de</p><p>Software deficiente pode ser uma ameaça cibernética.</p><p>O Teste de Segurança de Software oferece a promessa de Gerenciamento de Risco de TI aprimorado para a</p><p>Empresa. Ao testar as falhas no Software, as soluções de Teste de Segurança buscam remover</p><p>vulnerabilidades antes que o Software seja comprado ou implantado, e antes que as falhas possam ser</p><p>exploradas por ataques.</p><p>No entanto, para a maioria das Empresas, os Testes de Segurança de Software podem ser problemáticos.</p><p>O custo de aquisição, instalação, manutenção e contratação de especialistas em segurança interna para</p><p>operá-lo pode ser caro. E o tempo que leva para executar pode afetar a produtividade, retardando o</p><p>desenvolvimento de Software seguro. É por isso que as Empresas escolhem os serviços de Teste de</p><p>Segurança de Software automatizados baseados em Nuvem.</p><p>Teste de Segurança de Aplicativo Estático (Static) (SAST)</p><p>As Ferramentas SAST podem ser consideradas Testes de Caixa Branca, em que o testador conhece</p><p>informações sobre o Sistema ou Software sendo testado, incluindo um Diagrama de Arquitetura, acesso ao</p><p>Código-fonte etc.</p><p>As Ferramentas SAST examinam o Código-fonte (em repouso) para detectar e relatar fraquezas que podem</p><p>levar à vulnerabilidades de segurança.</p><p>Teste de Segurança de Aplicativo Dinâmico (DAST)</p><p>Em contraste às ferramentas SAST, as ferramentas DAST podem ser consideradas Testes de Caixa Preta,</p><p>em que o testador não tem conhecimento prévio do Sistema.</p><p>Eles detectam condições que indicam vulnerabilidade de segurança em um Aplicativo em seu estado de</p><p>execução.</p><p>As ferramentas DAST são executadas no Código Operacional para detectar problemas com interfaces,</p><p>solicitações, respostas, scripts (em JavaScript), ingestão de dados, sessões, autenticação e muito mais.</p><p>Ferramentas de Testes de Segurança e Vulnerabilidades</p><p>nos Softwares</p><p>HDIV Secutiry: Detecta Vulnerabilidades de Navegação em Aplicativos</p><p>Clique no botão para conferir o conteúdo.</p><p>ACESSE</p><p>Veracode: Varredura da IDE que Fornece feedback Focado em Tempo Real para os Desenvolvedores Enquanto eles</p><p>Codificam, Contra Riscos e Vulnerabilidades</p><p>Clique no botão para conferir o conteúdo.</p><p>ACESSE</p><p>Site</p><p>https://hdivsecurity.com/</p><p>https://info.veracode.com/veracode-static-demo.html</p><p>Modelo de Aceitação de Tecnologia do Desenvolvimento e Aplicação</p><p>do Software</p><p>Um Teste de Aceitação é uma descrição formal do comportamento de um produto de Software, geralmente,</p><p>pode ser expresso como um exemplo ou cenário de uso.</p><p>Uma série de notações e abordagens diferentes foram propostas para tais exemplos ou cenários. Em</p><p>muitos casos, o objetivo é que seja possível automatizar a execução de tais Testes por uma Ferramenta de</p><p>Software, seja ad-hoc para a Equipe de Desenvolvimento, seja de Ferramentas de Mercado.</p><p>Semelhante a um Teste Unitário, um Teste de Aceitação, geralmente, tem um resultado binário, aprovado ou</p><p>reprovado. Uma falha sugere, mas não prova, a presença de um defeito no produto.</p><p>As Equipes amadurecem em sua prática de Testes de Aceitação de Uso Ágil como a principal forma de</p><p>especificação funcional e a única expressão formal dos requisitos de negócios.</p><p>Outras Equipes usam Testes de Aceitação como um complemento aos documentos de especificação</p><p>contendo casos de uso ou texto mais narrativo.</p><p>Outras Denominações para o Teste de Aceitação</p><p>“Teste Funcional”, “Teste de Aceitação” e “Teste do Cliente” são usados mais ou menos indistintamente.</p><p>Um termo mais específico “Teste de História”, referindo-se a histórias de usuário, também é usado, como na</p><p>frase “Desenvolvimento dirigido por Teste de História”.</p><p>Benefícios Esperados</p><p>O Teste de Aceitação tem os seguintes benefícios, complementares àqueles que podem ser obtidos nos</p><p>Testes Unitários:</p><p>Encorajar uma colaboração mais próxima entre os desenvolvedores, por um lado, e os clientes,</p><p>usuários ou especialistas de domínio, por outro, já que implicam que os requisitos de negócios</p><p>devem ser descritos;</p><p>Armadilhas Comuns dos Testes de Aceitação</p><p>Expressar Testes de Aceitação de Maneira Excessivamente Técnica</p><p>Clientes e especialistas técnicos, definidos como público primário dos Testes de Aceitação, consideram</p><p>que eles têm detalhes de implementação difíceis de revisar e compreender.</p><p>Para evitar que os Testes de Aceitação se preocupem excessivamente com a implementação técnica, é</p><p>necessário envolver clientes e/ou especialistas do negócio na criação e na discussão dos Testes de</p><p>Aceitação.</p><p>Os Testes de Aceitação, indevidamente centrados na implementação técnica, também correm o risco de ser</p><p>reprovados por pequenas alterações ou “perfumarias” que, na realidade, não têm impacto no</p><p>comportamento do produto. Por exemplo, se um Teste de Aceitação faz referência ao rótulo de um campo</p><p>de texto e esse rótulo muda, o Teste de Aceitação falha mesmo que o funcionamento real do produto não</p><p>seja afetado.</p><p>Custos Potenciais e Novas Abordagens</p><p>Ao contrário dos Testes Unitários Automatizados, os Testes de Aceitação automatizados não são</p><p>universalmente vistos como um benefício, em função dos custos não serem compensados na prática:</p><p>Fornecer “contrato” claro e inequívoco entre clientes e desenvolvedores; um produto que passa</p><p>nos Testes de Aceitação será considerado adequado (embora os clientes e os</p><p>desenvolvedores possam refinar os Testes existentes ou sugerir novos, conforme</p><p>necessário);</p><p>Diminuir a chance e a gravidade de novos defeitos e regressões (defeitos que prejudicam a</p><p>funcionalidade revisada anteriormente e declarada aceita).</p><p>Muitas Equipes relatam que a criação de Testes de Aceitação automatizados requer esforço</p><p>significativo;</p><p>Algumas abordagens podem ser promissoras para os Testes de Aceitação automatizados e a relação com</p><p>os custos.</p><p>Às vezes, devido ao problema de Teste "frágil", as Equipes consideram a manutenção de</p><p>Testes de Aceitação automatizados onerosa.</p><p>TDD – Test Driven Development: na prática, antes de desenvolver uma funcionalidade,</p><p>escrever Testes Unitários (funcionais automatizados). É uma prática que auxilia muito no</p><p>design e na arquitetura de um Software e se apoia na qualidade, aumentando a confiança da</p><p>Equipe que constantemente gera modificações (e/ou refatorações) no Código fonte;</p><p>STDD – Storytest Driven Development: especificação do Sistema, este é o documento que</p><p>descreve como o Sistema deve se comportar. Ele é escrito no idioma do cliente e pode ser</p><p>gerenciado por ele;</p><p>DDD – Domain Driven-Design: utilização dos mesmos termos para Negócio, Sistemas,</p><p>Código-fonte, Documentação etc;</p><p>FDD – Feature Driven-Development: consiste em um processo de cinco etapas no qual</p><p>requisitos são analisados e desdobrados em funcionalidades com o Planejamento, o</p><p>Detalhamento e a Execução Orientados por Funcionalidades;</p><p>BDD – Behaviour Driven-Development: o desenvolvimento orientado ao comportamento trata</p><p>de representar de maneira automatizada cenários de negócio e funcionalidades específicas.</p><p>Pode ser feito no nível unitário, no nível funcional e até atender a requisitos não funcionais de</p><p>forma automatizada. O importante é que estas suites sejam dinâmicas, constantemente</p><p>atualizadas e acompanhadas ao longo do desenvolvimento local e nos respectivos ambientes</p><p>servidores de integração contínua e deploy;</p><p>ATDD – Acceptance Testing Driven Development: é uma fusão entre TDD e o BDD. É a escrita</p><p>de Testes Automatizados (que podem ser Unitários ou não), considerando os critérios de</p><p>aceite das histórias de usuário que serão desenvolvidas pela Equipe Ágil de Desenvolvimento</p><p>de Software. O viés de BDD é referente ao uso de Linguagens de Programação específicas,</p><p>com os jargões, termos e vocabulário utilizados no dia a dia pelo negócio para os</p><p>desenvolvedores e para os técnicos.</p><p>Compilação das Abordagens para Testes de Aceitação Automatizados</p><p>A compilação reside em resumir com exemplos as abordagens anteriores que se relacionam aos Testes de</p><p>Aceitação para melhor compreensão.</p><p>Figura 1 – Exemplo de cenários de Teste BDD x TDD</p><p>BDD x TDD em um Cenário de Teste de Aceitação (Figura 1).</p><p>Posição do BDD x TDD x ATDD (Figura 2).</p><p>Figura 2 – Posição Área Desenvolvimento x Negócio x Abordagens Testes</p><p>Fonte: Reprodução</p><p>Conjunto Integrado de Soluções: Framework de Testes</p><p>Automatizados de Software</p><p>Frameworks são ferramentas que têm um conjunto integrado de soluções, templates pré configurados que</p><p>ajudam nas tarefas e nas interações.</p><p>No entanto, exigem maiores conhecimentos dos especialistas em Testes, porque esses frameworks são</p><p>bastante completos e com maiores exigências técnicas. A Figura 3 representa as pirâmides de Testes.</p><p>A interface de interação com os usuários deve representar menor volume de Testes Automatizados.</p><p>Já o maior benefício dos Testes Automatizados é alcançado quando utilizado em grande número de Testes</p><p>unitários.</p><p>Figura 3 – Pirâmide de Testes</p><p>A adoção de Ferramentas e Metodologias voltadas aos Testes Automatizados pode contribuir para que o</p><p>volume de Testes diminua consideravelmente, reduzindo na mesma medida a incidência de falhas e bugs.</p><p>Framework Automação de Testes e DevOps</p><p>Um Framework de Automação de Testes e DevOps é um conjunto integrado de soluções que realizam</p><p>Testes Automatizados em diversos pontos do Processo em desenvolvimento e ou na etapa de liberação</p><p>para a seguinte.</p><p>O que ajuda no uso de um framework é a padronização das Ferramentas e das Metodologias que serão</p><p>usadas em todas as Etapas do Processo de Testes, vez que não existe uma única ferramenta que teste</p><p>todos os pontos do Processo.</p><p>Por esse motivo, o framework é a agregação de muitas ferramentas e abordagens dominadas por aquela</p><p>Equipe, sem que o trabalho seja perdido em novos aprendizados.</p><p>Um exemplo de framework é o da Figura 4. Esta abordagem é uma especializada. da Empresa PrimeControl,</p><p>que oferece soluções de Testes Automatizados com diferentes ferramentas em várias partes do Processo,</p><p>buscando abrangência total do Sistema.</p><p>O PrimeControl é um exemplo de especialista em Testes Automatizados utilizando ferramentas de Mercado</p><p>e as adequando à abordagem correta em cada parte do Processo de Desenvolvimento e de Testes da</p><p>Equipe ou do Projeto.</p><p>Figura 4 – Framework de Testes Automatizados</p><p>Fonte: Reprodução</p><p>Devido ao grande número de soluções na integração dos Cenários de Testes, a complexidade no uso da</p><p>ferramenta pode exigir grande experiência dos Testadores e uma Equipe Multidisciplinar para uso dessas</p><p>ferramentas.</p><p>Na Figura 4, abordagens, ferramentas e devops foram apresentados ao longo dos módulos anteriores, e</p><p>estão posicionados no framework conforme sua utilização técnica.</p><p>O Framework da Figura 4 é bem abrangente e cobre uma ampla caracterização de Testes Automatizados</p><p>que se aplicam a uma Cadeia de Desenvolvimento de Software que acontece ao mesmo tempo que os</p><p>Testes Automatizados vão sendo implementados.</p><p>Esse framework, se seguido a risco, pode, sim, dar um salto em qualidade de produto muito alto, o que vai</p><p>ser refletido na maturidade dos Processos e da Equipe.</p><p>No entanto, a implementação e a utilização de um framework desse porte, tem alta complexidade e</p><p>exigências de skills da Equipe, que podem ser muito difíceis de ser alcançados em etapas iniciais.</p><p>Vale reforçar que o framework modelo pode estar nas metas de alcance de maturidade, o que não impede</p><p>de começar com um modelo de menor porte e menor exigência técnica.</p><p>Framework Selenium</p><p>Selenium é uma IDE que integra um conjunto de ferramentas de Código Aberto Multiplataforma, usado para</p><p>testar aplicações web pelo browser (navegador) de maneira automatizada.</p><p>Selenium é um Projeto abrangente para uma variedade de Ferramentas e Bibliotecas que permitem e dão</p><p>suporte à automação de navegadores da web.</p><p>Por isso, é denominado pela comunidade framework de Testes Automatizados em aplicações web (Figura</p><p>5).</p><p>Figura 5 – Framework Selenium</p><p>Fonte: Reprodução</p><p>O Framework Selenium é open-source e auxilia na execução de Testes Automatizados a partir da camada</p><p>de apresentação web.</p><p>Com a suite Selenium é possível obter uma experiência de implantação mais robusta e confiável por meio da</p><p>integração contínua e de Testes Automatizados de front-end.</p><p>Os Testes de front-end com Selenium, quando combinado a práticas de integração contínua, não apenas</p><p>fornecem uma experiência robusta para os usuários, mas também dão aos desenvolvedores um ciclo de</p><p>feedback mais confiável para aprender quando surgem bugs.</p><p>O Selenium não é apenas uma ferramenta única, mas um conjunto de Softwares, cada um com uma</p><p>abordagem diferente para suportar os Testes de Automação.</p><p>É composto por três componentes principais (Tabela 2), que incluem:</p><p>Tabela 2 – Composição do Selenium Framework</p><p>Selenium</p><p>Framework</p><p>Definição Objetivo</p><p>Selenium</p><p>WebDriver</p><p>É uma coleção de vínculos</p><p>específicos de Linguagem</p><p>para conduzir um</p><p>navegador do jeito que</p><p>deve ser dirigido para</p><p>testagem.</p><p>Criar suites e Testes</p><p>robustos de automação</p><p>de regressão baseada em</p><p>navegador. Dimensionar e</p><p>distribuir scripts em</p><p>vários ambientes.</p><p>Selenium IDE</p><p>Complemento do Chrome</p><p>e do Firefox que fará o</p><p>registro e a reprodução</p><p>simples das interações</p><p>com o navegador.</p><p>Criar scripts de</p><p>reprodução de bug</p><p>rápidos. Criar scripts para</p><p>auxiliar no Teste</p><p>exploratório auxiliado por</p><p>automação.</p><p>Seleium Grid Gerenciamento de vários</p><p>ambientes a partir de um</p><p>ponto central, tornando</p><p>mais fácil executar os</p><p>Escalar a distribuição e a</p><p>execução de Testes em</p><p>várias máquinas.</p><p>Selenium Integrated Development Environment (IDE);</p><p>WebDriver;</p><p>Selenium Grid.</p><p>Selenium</p><p>Framework</p><p>Definição Objetivo</p><p>Testes sob ampla</p><p>combinação de</p><p>navegadores/SO</p><p>(Sistemas Operacionais).</p><p>Com as soluções integradas do Selenium, pode-se executar Testes de funcionalidades da aplicação web e</p><p>Testes de compatibilidade entre browsers e plataformas diferentes.</p><p>O Selenium suporta mais de uma Linguagem de Programação, como a Linguagem Escrita em C#, Java ou</p><p>Python, e vários navegadores web, como o Chrome e o Firefox, estes dois apresentando excelente</p><p>performance nos Testes Automatizados.</p><p>Saiba Mais</p><p>IDE – Integrated Development Environment ou Ambiente de Desenvolvimento</p><p>Integrado é um sofisticado Programa de Computador que reúne características e</p><p>ferramentas que suportam e facilitam o Desenvolvimento de Software com o objetivo de</p><p>agilizar este Processo.</p><p>Importante ressaltar que o Selenium está sob licença Apache 2.0. A Licença Apache é uma licença permissiva</p><p>de Software livre escrita pela Apache Software Foundation.</p><p>Esse tipo de licença permite aos usuários usar o Software para qualquer propósito, distribuí-lo, modificá-lo e</p><p>distribuir versões modificadas do Software sob os termos da Licença, sem preocupação com royalties.</p><p>Essa é uma vantagem do amplo uso de Framework pela comunidade. Diferente de outras opções com</p><p>licenças pagas, o Selenium é bastante difundido devido a seu uso livre de Licença Comercial.</p><p>Selenium IDE</p><p>É a ferramenta usada para desenvolver Casos de Teste. É uma extensão do Chrome e do Firefox fácil de usar e,</p><p>geralmente, é a maneira mais eficiente de desenvolver casos de Teste.</p><p>A IDE (Figura 6) registra as ações dos usuários no navegador, usando comandos Selenium existentes, com</p><p>parâmetros definidos pelo contexto desse elemento.</p><p>Isso não é apenas uma economia de tempo, mas também uma excelente maneira de aprender a sintaxe do</p><p>script Selenium.</p><p>Figura 6 – Selenium IDE como extensão Chrome</p><p>Fonte: Reprodução</p><p>Selenium WebDriver</p><p>O WebDriver conduz um navegador nativamente, isto é, como um usuário faria, localmente ou em uma</p><p>máquina remota. WebDriver foi projetado como uma interface de programação simples e mais concisa. O</p><p>WebDriver é uma API compacta orientada a objetos.</p><p>Ele maneja o navegador de forma eficaz.</p><p>Selenium Grid</p><p>O Selenium</p><p>Grid permite executar Caso – Behaves de Teste em diferentes computadores e em diferentes</p><p>Plataformas de Sistemas Operacionais.</p><p>O controle de acionamento dos casos de Teste está no terminal local, e quando os casos de Teste são</p><p>acionados, eles são executados automaticamente pelo terminal remoto.</p><p>Após o desenvolvimento dos Testes WebDriver, pode ocorrer a necessidade de executar os Testes com</p><p>várias combinações de navegador e Sistemas Operacionais.</p><p>É aqui que o Selenium Grid atua.</p><p>Anexo</p><p>Faça na Prática: Testando Aplicativos da Web com Selenium</p><p>Indicação 1</p><p>Os Testes Automatizados podem ser executados em qualquer tipo de aplicativo – desktop, web ou celular.</p><p>Vamos demonstrar o Teste de Aplicativos da Web e como criar facilmente o primeiro Teste Automatizado</p><p>usando Selenium IDE – Uma ferramenta simples que permite gravar, editar e depurar Testes.</p><p>Depois de instalar com sucesso o plugin Selenium IDE no navegador Chrome ou Firefox e iniciá-lo, um botão</p><p>de plugin vai aparecer no canto superior direito, ativado por padrão. Isso significa que a partir de agora todas</p><p>as ações realizadas no navegador serão registradas e poderão ser recriadas passo a passo.</p><p>posteriormente.</p><p>Por exemplo, ao digitar “google.com” e tentar pesquisar o um site, é só clicar no primeiro link e em qualquer</p><p>lugar disponível da página, que obterá a estrutura de referência dela.</p><p>Clique no botão para conferir o vídeo indicado.</p><p>ACESSE</p><p>Indicação 2</p><p>Utilizar a Linguagem Python nos Testes Funcionais pode gerar uma grande economia de tempo de execução</p><p>e tamanho de Código.</p><p>Para demostrar isso, vamos utilizar uma Prática de Laboratório para executar Teste automatizado com o</p><p>webdriver do navegador Chrome: utilizando Linguagem Python.</p><p>Clique no link do vídeo a seguir, assista até o final e depois tente reproduzir a prática para consolidar os</p><p>conhecimentos.</p><p>Vídeo</p><p>Testes Automatizados de Software – Captura 1</p><p>Vídeo</p><p>Testes Automatizados de Software – Captura 2</p><p>https://www.kaltura.com/index.php/extwidget/preview/partner_id/1756931/uiconf_id/45496291/entry_id/1_wiaeimko/embed/iframe</p><p>Clique no botão para conferir o vídeo indicado.</p><p>ACESSE</p><p>https://www.kaltura.com/index.php/extwidget/preview/partner_id/1756931/uiconf_id/45496291/entry_id/1_nwoosc8v/embed/iframe</p><p>Indicações para saber mais sobre os assuntos abordados nesta Unidade:</p><p>Leitura</p><p>Test Driven Development</p><p>Você pode ter acesso a um book on-line que explica mais sobre o TDD – Test Driven Development. Test-</p><p>Driven Web Development with Python tem como objetivo ensinar TDD para Programação Web. Ele usa um</p><p>exemplo concreto – o desenvolvimento de um website, do zero – para explicar a metodologia do TDD e</p><p>como ela se aplica à construção de aplicativos da web.</p><p>Ele cobre a Ferramenta de Automação de Navegador Selenium, Teste de Unidade, simulação e interação</p><p>com Tecnologias da Web, desde o básico de conteúdo estático, integração de Banco de Dados, por meio do</p><p>JavaScript, até tópicos mais avançados (e modernos), como NoSQL, websockets e Programação Async.</p><p>Clique no botão para conferir o conteúdo.</p><p>ACESSE</p><p>3 / 4</p><p>📄 Material Complementar</p><p>https://www.obeythetestinggoat.com/pages/book.html#toc.</p><p>Python Web Automation (Behave)</p><p>Esta indicação é para quem tem o navegador Firefox. É um passo a passo bem extenso que mostra a</p><p>técnica BDD – Behaviour Driven-Development, usando o Selenium e a Linguagem em Python.</p><p>Clique no botão para conferir o conteúdo.</p><p>ACESSE</p><p>http://the-creative-tester.github.io/Python-Web-Browser-Automation-Behave/</p><p>AURI, M.; RIZZO, V. et al. Automatização de Teste de Software com ferramentas de Software livre. Rio de Janeiro,</p><p>Elsevier, 2018.</p><p>GARCIA, D. A importância da Transformação Digital: porque as Empresas devem adotá-la para se manterem</p><p>competitivas na Era Digital. Curitiba: Do autor, 2020.</p><p>IMONIANA, J. O. Auditoria de Sistemas de Informação. 3.ed. Rio de Janeiro: Atlas, 2016 [Recurso on-line].</p><p>PALANI, N. Software Automation Testing Secrets Revealed Part1: Cucumber BDD, Selenium Webdriver,</p><p>Protractor, Selenium Grid, Appium, TestNG, Jenkins, UFT, RFT, Visual Studio, Excel ... based Automation</p><p>Testing (English Edition) eBook. Kindle free. Editora: Educreation Publishing, 2018.</p><p>4 / 4</p><p>📄 Referências</p>