O que você precisa saber antes de fazer testes automatizados

O que é teste automatizado?

Tenho feito testes há vários anos e realmente aprendi e pratiquei testes automatizados por um ano. Sinto que ganhei muito durante este ano. Sempre quis escrever um artigo para compartilhar alguma experiência na prática de testes automatizados. Finalmente decidi levar algum tempo para fazer isso.

Em primeiro lugar, esclareça o conceito de teste automatizado. Em termos gerais, a automação inclui todas as atividades que substituem ou auxiliam o teste manual por meio de ferramentas (programas), que podem ser consideradas como automação, incluindo ferramentas de teste de desempenho (loadrunner, jmeter) ou escritas por você Uma seção do programa usada para gerar de 1 a 100 dados de teste. Em um sentido restrito, o processo de teste manual é simulado por meio de gravação de ferramenta ou script, e os casos de teste são executados reproduzindo ou executando scripts, substituindo assim a verificação manual das funções do sistema.

Claro, geralmente estamos cientes de "teste automatizado" como "teste automatizado com base na camada de IU do produto ou projeto".

Teste automatizado em camadas

Este conceito foi exposto recentemente.O teste automatizado tradicional presta mais atenção ao teste automatizado na camada de IU do produto, enquanto o teste automatizado hierárquico defende que diferentes estágios (níveis) de produtos requerem testes automatizados.
Insira a descrição da imagem aqui
Acredito que os alunos do teste não desconhecem a pirâmide acima. Não é este o teste que corresponde aos diferentes estágios de desenvolvimento do produto? Precisamos de testes de unidade padronizados e também de estruturas de teste de unidade correspondentes, como Junit do Java, testNG, NUnit do C #, teste de unidade do python, pytest, etc. Quase todas as linguagens tradicionais terão seus respectivos frameworks de teste de unidade.

Os testes de integração e interface não são fáceis de entender para muitos testadores novos. O teste de unidade se concentra na lógica de implementação do código, como a implementação de um if branch ou um for loop; a integração e o teste de interface se concentram em uma função e classe (método) Se a interface fornecida é confiável. Por exemplo, se eu definir uma função add () para calcular o resultado de dois parâmetros e retorná-lo, então preciso chamar add () e passar os parâmetros, e comparar o valor de retorno se os dois parâmetros forem adicionados. Claro, o teste de interface também pode ser passado na forma de url. Por exemplo, se enviarmos uma solicitação ao servidor por meio do método get, o conteúdo que enviamos será passado ao servidor como parte da URL. Mas, por exemplo, uma interface pública fornecida pela tecnologia de serviço da Web precisa ser testada por meio de ferramentas como o soapUI.

Você deve estar familiarizado com o teste automatizado da camada de IU. A maior parte do trabalho da maioria dos testadores é testar as funções da camada de IU. Por exemplo, testamos repetidamente um envio de formulário, consulta de resultados e outras funções e podemos simular essas operações por meio das ferramentas de teste automatizadas correspondentes, liberando trabalho repetitivo. Existem muitas ferramentas de teste automatizadas para a camada de IU, e as principais são QTP, Robot Framework, watir, selênio, etc.

Por que desenhar uma pirâmide em vez de um retângulo ou um triângulo invertido? Isso é para indicar a proporção de testes automatizados investidos em diferentes estágios. Se um produto nunca fez testes de unidade e de interface, não é científico fazer apenas testes automatizados na camada de IU, dificultando essencialmente garantir a qualidade do produto. Se você tentar obter um teste automatizado de camada de interface do usuário abrangente, é um movimento que prejudicará as pessoas e o dinheiro, além de investir muita mão de obra e tempo, e o benefício final pode ser muito menor do que o custo pago. Porque quanto maior o nível, maior o custo de manutenção. Especialmente os elementos da camada de interface do usuário mudarão de tempos em tempos. Portanto, devemos colocar mais testes automatizados nas fases de teste de unidade e teste de interface.

Como o teste automatizado da camada de IU é muito trabalhoso, só podemos fazer testes de unidade e de interface. NÃO! Porque não importa o tipo de produto, a camada de IU é finalmente apresentada ao usuário. Portanto, os testadores devem se concentrar mais na camada de IU. Então é exatamente porque os testadores colocam muito esforço na camada de IU, então é necessário que nos ajudemos a "liberar parcialmente" o trabalho repetitivo por meio da automação.

No teste automatizado, o mais temido é a mudança, pois o resultado direto da mudança é o fracasso do caso de teste, então o script de automação precisa ser mantido; como controlar a falha e reduzir o custo de manutenção é fundamental para o sucesso ou falha da automação. Por outro lado, um caso de teste automatizado que sempre é executado com sucesso é inútil.

Quanto à proporção dos três testes na pirâmide, ela deve ser dividida de acordo com os requisitos reais do projeto. No livro "Método de teste do Google", para produtos do Google, 70% do investimento são testes de unidade, 20% são testes de integração e interface e 10% são testes de automação da camada de IU.

Por que devo fazer testes automatizados?

De acordo com o "China Software Testing Practitioners Survey Report" da 51testing, o teste manual é responsável por 89% do total. Em relação ao desenvolvimento, o limite para o teste é baixo e o salário é geralmente baixo. Embora o conhecimento necessário tenha uma certa amplitude, falta profundidade. Este é o status geral do teste.

É precisamente por causa do baixo nível de testes de habilidades manuais que um grande número de graduados, mesmo não profissionais, tem ingressado nessa indústria. Aumentando assim a competição acirrada nesta indústria. Para aqueles que trabalharam por vários anos e estão em testes manuais, haverá uma forte sensação de crise. Como o conteúdo técnico do trabalho não é alto, o aumento de salário encontrou um gargalo. Por outro lado, é ameaçado por novos ingressos. A mesma empresa de empregos pode fazê-lo com 5 mil recrutas, portanto, não gastará 8 mil.

Bem, essa questão não deveria aparecer no tópico de discussão de tecnologia, mas é realmente um problema que a maioria dos testadores tem que enfrentar. Portanto, em termos de desenvolvimento dos próprios testadores, eu realmente preciso usar a tecnologia de automação para aumentar minha competitividade. Claro, os testadores que atingiram um determinado número de anos escolherão se transferir para a gerência ou outras posições, o que é outro assunto.

Do ponto de vista do desenvolvimento da indústria de testes, devido às características dos produtos nacionais, não há muitos produtos de classe mundial, conteúdo técnico relativamente baixo, requisitos de qualidade relativamente baixos, terceirização de projetos estrangeiros e baixos custos de mão de obra de teste, portanto, um grande número de testadores manuais são necessários .

Portanto, em um futuro não muito distante, acho que a demanda por testadores manuais puros está diminuindo e a empresa precisa de mais testes com capacidades técnicas superiores. A qualidade precisa ser testada. O comportamento do teste nunca desaparecerá, mas é possível que os testadores puramente manuais desapareçam.

Bem, você pode dizer que testando a indústria com muito sol, sou puramente alarmista. Independentemente do futuro, todos nós precisamos melhorar nossas habilidades, certo!

Qual projeto é adequado para testes automatizados?

Se você decidiu aprender o teste automatizado, como saber qual é o próximo problema a enfrentar? Este problema é analisado com base no produto testado.Se a tecnologia que você aprendeu não puder ser aplicada (verificada), dificultará seu processo de aprendizagem.

Considere primeiro se o produto é adequado para testes automatizados. O consenso geral sobre este método é pesar sob três aspectos.

Os requisitos de software mudam com pouca frequência

A estabilidade do script de teste determina o custo de manutenção do teste automatizado. Se os requisitos de software mudam com muita frequência, os testadores precisam atualizar os casos de teste e scripts de teste relacionados de acordo com os requisitos alterados, e a manutenção do script em si é um processo de desenvolvimento de código que precisa ser modificado, depurado e, se necessário, o teste automatizado deve ser modificado. Estrutura, se o custo não for menor do que o custo do teste economizado ao usá-lo, o teste automatizado falhará.

Alguns módulos do projeto são relativamente estáveis, enquanto os requisitos de alguns módulos são altamente variáveis. Podemos realizar testes automatizados em módulos relativamente estáveis, enquanto o teste manual ainda é usado para mudanças maiores.

Ciclo de projeto longo

Porque a determinação dos requisitos de teste automatizado, o design de estruturas de teste automatizado e a escrita e depuração de scripts de teste levam muito tempo para serem concluídos. Esse processo em si é um processo de desenvolvimento de teste de software e leva muito tempo para ser concluído. Se o ciclo do projeto for relativamente curto e não houver tempo suficiente para suportar tal processo, o teste automatizado se torna uma piada.

Os scripts de teste automatizados podem ser reutilizados

A reutilização de scripts de teste automatizados deve ser considerada sob três aspectos. Por um lado, se os itens testados são muito diferentes (como a diferença entre o sistema C / S e o sistema B / S); se a ferramenta de teste selecionada é adequada Essa diferença; por fim, se o testador tem a capacidade de desenvolver uma estrutura de teste automatizada que se adapte a essa diferença.

Qual ferramenta escolher para testes automatizados

Se você confirmou que o projeto XX é adequado para testes automatizados, a próxima coisa que você precisa fazer é escolher uma ferramenta de teste.

Em primeiro lugar, confirme se o produto que você está testando é um programa de desktop (C / S) ou um aplicativo da web (B / S).

Ferramentas para programas de desktop são: QTP, AutoRunner

Ferramentas para aplicações web: QTP, AutoRunner, Robot Framework, watir, selênio

Devido às muitas vantagens da arquitetura B / S, um grande número de aplicativos de arquitetura C / S foram convertidos para a arquitetura B / S alguns anos atrás. Isso também promove o desenvolvimento de tecnologia de teste e desenvolvimento da web. Se o produto sendo testado for de arquitetura C / S, então QTP é recomendado.QTP é responsável por metade da taxa de teste no campo de teste de automação de IU. Portanto, é suficiente mostrar que o QTP é poderoso e fácil de usar no campo da automação. As ferramentas convencionais de aprendizado também podem oferecer mais oportunidades. Os livros sobre QTP no mercado também são muito ricos. Obviamente, se você deseja aprender bem o QTP, deve dominar a linguagem de script VBS.

Se o produto testado é uma estrutura B / S, então o selênio é recomendado, por que não QTP ou outras ferramentas? Como o selênio oferece suporte a aplicativos B / S muito bem e, mais importante, ele oferece suporte ao desenvolvimento em vários idiomas. Para realmente experimentar o selênio, você precisa dominar mais do que apenas uma ferramenta, você também precisa aprender um idioma. Por que devo escolher o selênio? Também preciso aprender um idioma, o que sem dúvida aumentou meus custos de aprendizagem. Ao mesmo tempo que aumenta o custo, também aumenta a sua competitividade.No processo, você não apenas aprende uma ferramenta de automação, mas pode usar a linguagem que aprender para fazer mais coisas.

Está bem! Se você decidir experimentar o selênio, se depara com um novo problema, escolha um idioma. Selenium oferece suporte a java, python, ruby, php, C #, JavaScript.

Em termos de facilidade de aprendizado de linguagem, ruby ​​e python são preferidos

Em termos de amplitude de aplicação de linguagem, java, C #, php,

Em termos de tecnologia de teste relacionada à linguagem (e informações): ruby, python, java

Ou você pode considerar a linguagem comum usada por toda a equipe técnica e, em seguida, escolher a linguagem correspondente.

Antes de usar selênio

ESTÁ BEM! Após o processo acima, acredito que você deve fazer a escolha correspondente.Se você escolher a ferramenta de selênio, então continue a ler.

Primeiro, você precisa gastar um a dois meses para aprender um idioma antes de começar o selênio, com base em alunos que não têm nenhum conhecimento de idioma. Eu recomendo ruby, python, java qualquer linguagem para aprender.

Claro, se você tem uma boa base de linguagem para pular este link, ou suas ricas habilidades de programação em java, aprender Python pode levar apenas alguns dias ou menos.

Se você já aprendeu a base de uma linguagem, precisa entender o selênio primeiro. O selênio não é apenas uma ferramenta. É uma coleção de ferramentas. Além disso, está dividido em 1.0 e 2.0. Claro, 3.0 também é Chegou.

O Selenium não é uma ferramenta simples, mas consiste em várias ferramentas, cada uma com suas próprias características e cenários de aplicação.
Insira a descrição da imagem aqui
selênio IDE

Selenium IDE é um plug-in embutido no navegador Firefox para realizar funções simples de gravação e reprodução de operação do navegador. Então, quando é usado?

Crie scripts de reprodução de bug rapidamente. Durante o processo de teste dos testadores, depois de encontrar os bugs, eles podem registrar as etapas de reprodução por meio do IDE para ajudar os desenvolvedores a reproduzir os bugs mais facilmente.

O script gravado pelo IDE pode ser convertido em vários idiomas para nos ajudar a desenvolver o script rapidamente. Apresentaremos essa função em detalhes mais tarde, quando a usarmos.

grade de selênio

Selenium Grid é um auxílio de teste automatizado.O Grid pode acelerar o teste funcional de aplicativos da Web usando a infraestrutura de computador existente. Usando o Grid, você pode executar convenientemente vários casos de teste em paralelo em várias máquinas e em um ambiente heterogêneo. Suas características são:

  • Execução paralela
  • Use um host para controlar uniformemente os casos de uso a serem executados em diferentes ambientes e diferentes navegadores.
  • Adição flexível de máquinas de teste de mudança

selênio RC

Selenium RC é a ferramenta principal da família selenium. Selenium RC oferece suporte a uma variedade de linguagens diferentes para escrever scripts de teste automatizados. O servidor selenium RC serve como um servidor proxy para acessar aplicativos para atingir o propósito de teste.

Selenium RC usa bibliotecas de cliente e servidor selenium.A biblioteca de bibliotecas de cliente é usada principalmente para escrever scripts de teste para controlar a biblioteca de servidor selenium.

O Selenium Server é responsável por controlar o comportamento do navegador. Em geral, o Selenium Server inclui principalmente três partes: Launcher, Http Proxy e Core. Entre eles, o Selenium Core está embutido na página do navegador pelo Selenium Server. Na verdade, Selenium Core é uma coleção de funções JS. É por meio dessas funções JS que podemos usar programas para operar o navegador. O Launcher é usado para iniciar o navegador, carregar o Selnium Core na página do navegador e definir o proxy do navegador para o proxy Http do servidor Selenium.

selênio 2.0

Eu entendo a relação familiar do selênio 1.0, o selênio 2.0 adiciona o WebDriver a esta família; expresso simplesmente como uma fórmula:

selênio 2.0 = selênio 1.0 + WebDriver

Deve-se enfatizar que no selênio 2.0, o WebDriver é o produto principal. O WebDriver é um substituto do selênio RC. Como o selênio é compatível com versões anteriores, o selênio RC não é completamente abandonado. Se você usar selênio para desenvolver um novo projeto de teste automatizado, é altamente recomendável Recomenda-se o uso do WebDriver. Então, qual é a principal diferença entre selênio RC e webdriver?

O Selenium RC executa aplicativos JavaScript no navegador e usa o tradutor JavaScript embutido do navegador para traduzir e executar comandos selenês (selenese é uma coleção de comandos selenium).

O WebDriver controla diretamente o navegador por meio do suporte nativo do navegador ou da extensão do navegador. O WebDriver é desenvolvido para cada navegador e substitui o JavaScript embutido no aplicativo da web testado. A forte integração com o navegador permite a criação de testes mais avançados, evitando as restrições causadas pelo modelo de segurança JavaScript. Além do suporte de fornecedores de navegador, o WebDriver também usa chamadas no nível do sistema operacional para simular a entrada do usuário.

Se for um novo projeto, não há problema em aprender diretamente o webdriver, RC é uma tecnologia desatualizada.

Rota de aprendizagem do selênio

Configure seu ambiente de teste para configurar seu ambiente de teste de selênio correspondente para o idioma que você está aprendendo. Selenium é como a definição de semântica - "Hello". Se você estiver usando o chinês, para expressar olá, sua escrita é "Hello". Se você estiver usando o inglês, sua escrita será "Olá". Portanto, a mesma semântica terá escrita diferente (gramática) em idiomas diferentes.

Em seguida, você precisa estar familiarizado com a API webdriver, que é um método definido pelo selenium para localizar e operar vários elementos na página.

Aprenda primeiro o posicionamento dos elementos. O Selenium fornece métodos de posicionamento como id, nome, nome da classe, nome da tag, texto do link, texto do link parcial, xpath, css, etc. A poderosa sintaxe de xpath e css é um pouco complicada e você pode precisar saber mais conhecimentos de front-end enquanto isso. xml, javascript etc.

O objetivo de localizar elementos é operar os elementos. Em seguida, você deve aprender sobre vários elementos, incluindo operações, caixas de entrada, caixas suspensas, cliques em botões, uploads de arquivos, downloads, paginação, caixas de diálogo, caixas de aviso ... etc.

Após um período de estudo, você pode simular facilmente o teste manual para manipular vários elementos da página. Então, tudo o que você precisa fazer é organizar esses "casos de uso" e executá-los juntos.

Em seguida, tudo o que você precisa fazer é aprender e usar a estrutura de teste de unidade, que resolve a organização e operação dos casos de uso.

Depois de escrever alguns "casos de teste", você descobrirá que há muitas operações repetidas nos casos de uso. Você pode escrevê-las em um arquivo separado e chamar essas operações quando necessário? Claro, será muito simples usar suas habilidades de programação para conseguir isso. Em seguida, você descobre que existem alguns dados em cada caso de uso.Esses dados também são os mesmos, mas se eles mudarem e for muito difícil de modificar, você também pode gravá-los em um arquivo separado para leitura.

Então, você encontra novas perguntas. Os scripts (casos de uso) que escrevi são todos simplificados. Como posso saber se o caso de uso falha ou tem êxito? Em seguida, você precisa adicionar alguma verificação e asserção ao script.

Então você tem mais ideias. O log da estrutura do teste de unidade é muito bruto. Você pode gerar um relatório de teste bonito? Posso executar este script regularmente? Você pode enviar os resultados do teste de cada script executado diretamente para minha caixa de correio? Você pode...

Para resolver esses problemas, você precisa aprender mais técnicas de programação e então sua "estrutura de teste" se tornará mais poderosa e flexível. Produziu certo grau de versatilidade e portabilidade. Uma estrutura de teste automatizada realista nasceu.

Se um dia você não fizer mais testes automatizados de IU, verá que basicamente não há dificuldade em fazer testes de unidade ou de interface. Não é um problema desenvolver uma ferramenta de teste, obrigado Selenium! A propósito, agradeça a mim também!

Recomende bons artigos:

Um pacote de tristes tiras picantes para compartilhar as dez melhores ferramentas de teste automatizado

Sobre o teste de software! Tudo o que você quer saber está aqui, Xiaobai deve ver!

10 anos de percepções de engenheiros de teste de software - para amigos que ainda estão confusos

Que tipo de pessoa é adequada para teste de software?

Conhecimento para entender o teste automatizado python (3)

O que é mais adequado para testes automatizados, Python ou Java?

O trabalho diário dos testadores de software

Jogue com os testes automatizados Python + Selenium em 10 minutos e ensine a você um início rápido!

Finalmente: Bem-vindo a seguir o editor para receber um resumo do conhecimento básico dos engenheiros de teste automatizado Python com um documento pdf de 300 páginas! Grupo de troca de tecnologia de teste de software: (313782132) O conteúdo desses materiais são todos os pontos de conhecimento que o entrevistador deve perguntar durante a entrevista. O capítulo inclui muitos pontos de conhecimento, incluindo conhecimento básico, Linux Essentials, Shell, Princípios de programas de Internet, Mysql Banco de dados, tópicos de ferramenta de captura de pacote, ferramentas de teste de interface, programação Python de teste avançado, teste de automação da Web, teste de automação de APP, teste de automação de interface, teste de integração contínua avançada, estrutura de teste de desenvolvimento de arquitetura de teste, teste de desempenho, teste de segurança, etc.

Acho que você gosta

Origin blog.csdn.net/weixin_50271247/article/details/108513270
Recomendado
Clasificación