O projeto consiste em um aplicativo e-commerce, onde é possível realizar pesquisas de produtos e realizar compras de mercadorias.
Arquivo .apk em Loja_Virtual_Appium/features/support/netshoes.apk Versão iOS pendente
Nesse projeto foi usado BDD para a escrita das features e compartamentos do aplicativo. Ruby + Appium para o desenvolvimento dos steps de testes.
├── Gemfile
├── Gemfile.lock
├── README.md
├── Rakefile
├── doc
├── features
│ ├── busca.feature
│ ├── cadastro.feature
│ ├── carrinho.feature
│ ├── login.feature
│ ├── screens
│ │ ├── busca_screen.rb
│ │ ├── carrinho_screen.rb
│ │ └── login_screen.rb
│ ├── step_definitions
│ │ ├── busca_steps.rb
│ │ ├── carrinho_steps.rb
│ │ ├── general_methods.rb
│ │ ├── general_steps.rb
│ │ └── login_steps.rb
│ └── support
│ ├── credentials.rb
│ ├── erv.rb
│ ├── hooks.rb
│ ├── netshoes.apk
│ └── products.rb
├── report.html
└── rubocop.yml
Será necessário criar um usuário no app ou site da Netshoes para que os testes de login passem. Os dados desse usuário devem ser inseridos no arquivo "credentials.rb" dentro da pasta "features/support"
Adicione também um usuário com dados errados, pois existe um teste que valida isso também. O formato deve seguir o modelo abaixo:
CREDENTIALS = {
comprador: {
email: 'car_soad@hotmail.com',
password: 'senhacerta',
wrong_password: 'fit',
name: 'Carlos',
full_name: 'Carlos Araújo',
cpf: '04815162342',
},
comprador_errado: {
email: 'fraudador@f.com.br',
password: '4815162342',
name: 'Fakeson',
cpf: '11122233344',
},
}.freeze
Esse projeto possui um Gemfile com as dependências usados para rodar os testes. Primeira passo é fazer a instalação a partir dele:
$ bundle install
Os scripts de testes estão usando o framework Appium com Ruby, é necessário instalar seu servidor. Para fazer o download e efetuar a instalação acesso o site oficial: http://appium.io/
Ou através de linha de comando:
$ gem install appium_lib
Primeiro tenha um device Android conectado via USB, ou um emulador rodando na máquina
Nesse projeto temos um comando que já inicia o emulador Android:
$ rake start_emulator['emulator_name']
Iniciar servidor Appium:
$ appium
Rodar features de testes:
$ cucumber
Para gerar relatórios .html com o resultado dos testes adicione os parametros abaixo:
$ cucumber --format html --out report.html --format pretty
Caso não seja passado nenhum parametro, o cucumber vai rodar todas funcionalidades que estão na pasta 'features'. Podemos passar alguns parametros para que seja executada apenas uma funcionalidade:
$ cucumber -t @tag
Existem algumas tags que já estão criadas para facilitar a execução dos testes.
Tags utilizadas:
@buscas - Tag reuni todas os tipos de busca por produtos
@busca_produto - Busca por um produto específico
@carrinho - Tag com todas as funcionalidades de checkout do carrinho de compras
@add_carrinho - Adiciona um produto específico ao carrinho
@logins - Tag com todos os cenários da Feature de Login
@login_email - Realiza Login usando Email válido
@login_cpf - Realiza Login usando CPF válido
@logout - Encerra a sessão do usuário, independente do tipo de login usado
@login_errado - Tenta efetuar um acesso com credenciais inválidos
Rubocop - Para análise de código e sintaxe Ruby
Pry - Degug em tempo real
Rake - Tasks automatizadas do projeto, exemplo: iniciar emulador Android
Yard Cucumber - Usado para gerar relatórios .html das features e tags usadas
Alguns metôdos são usados em muitos cenários de testes, por conter o mesmo trecho de código e para evitar a repetição desnecessária decide inclui-los em um arquivo único, onde todas as partes do projeto podem acessa-los
touch_popup - click no popup de avisos
pop_shopping_cat - click no popup do carrinho e direciona ao checkout
list_itens(i) - lista os itens buscados, onde 'i' é a quantidade que será analisada
swipe_vertical - metôdo usado para descer a tela e exibir o restante dos elementos
send_enter - submit no momento da busca de produtos
Usando esse mesmo argumento, também criei um arquivo único para centralizar os steps mais comuns
Dado(/^que eu estou na home sem ter realizado o login$/)