SlideShare uma empresa Scribd logo
Globalcode – Open4education
Ruby in Tests
Júlio de Lima
Especialista em Testes na RSI
@juliodelimas
Globalcode – Open4education
Objetivo
Ao fim da palestra, você saiba como preparar o
ambiente e escrever scripts de teste automatizados de
unidade, API e GUI (Web) usando frameworks open-
source em Ruby.
Globalcode – Open4education
"RubyInTests"
O nome da palestra baseia-se em uma série de artigos
de minha autoria originados de um
#desafioAgileTesters feito pelo amigo Diego Blond
(@PerdidoNoTeste).
Conheçam mais sobre o desafio e a comunidade Agile
Testers:
bit.ly/desafioAgileTesters2016
Globalcode – Open4education
O conceito
Unidade API GUI
Métodos de uma classe
que serão testados de
forma isolada
Métodos que utilizam
as unidades de forma
conjunta para receber,
processar e devolver
informações do sistema
Interface gráfica, que
consome as APIs,
apresentando suas
informações de
forma amigável
Application Programming Interface Graphical user interface
Globalcode – Open4education
Frameworks
RSpec Rest-Client WebDriver
Documentação:
relishapp.com/rspec
Documentação:
github.com/rest-client/rest-client
Documentação:
bit.ly/WebDriverRuby
Unidade API GUI
Globalcode – Open4education
Preparando o ambiente
1. Instale o Ruby 2.0
rubyinstaller.org

* Adicione o diretório do Ruby às variáveis de ambiente
2. Baixe o DevKit na mesma URL e extraia-o em C:Ruby200dk
3. Instale o DevKit executando as linhas abaixo no prompt
ruby C:Ruby200dkdk.rb init
ruby C:Ruby200dkdk.rb install
4. Instale a Gem do Bundler
Digite gem install bundler no prompt de comando
Globalcode – Open4education
Preparando o projeto
1. Crie o diretório “RubyInTestTDC” e acesse-o via prompt
2. Execute o comando bundle init
3. Agora o arquivo Gemfile foi criado
Adicionaremos a ele todas os frameworks que utilizaremos
4. Abra o Gemfile e substitua seu conteúdo pelas linhas abaixo:
source "http://rubygems.org"
gem 'rspec', '~> 3.3.0'
gem 'rest-client', '~> 1.8'
gem 'selenium-webdriver', '2.48.1'
gem 'sinatra' # Para o app de teste
5. Execute o comando bundle install
Globalcode – Open4education
Você pode assistir esse passo a passo
no YouTube através do link abaixo:
bit.ly/RubyInTestInstalacao
Globalcode – Open4education
Automatizando testes de
unidade
# C:RubyInTestTDCavaliacao_class.rb
class Avaliacao
def avaliar(notaprova, notatrabalho)
if (notaprova >= 7)
if (notatrabalho >= 7)
return "Aprovado"
else
return "Exame"
end
else
return "DP"
end
end
end
Para demonstrar este tipo de teste, usaremos a class Avaliação, que
possui um método chamado “avaliar”, que recebe dois parâmetros:
notaprova e notatrabalho.
Globalcode – Open4education
Automatizando testes de
unidade
# C:RubyInTestTDCspecunitavaliacao_spec.rb
require_relative "../../avaliacao_class"
describe Avaliacao do
it "alunos com notas maiores ou iguais a 7 são aprovados" do
# Arrange
avaliacao = Avaliacao.new()
# Act
resultado = avaliacao.avaliar(7, 7)
# Assert
expect(resultado).to eq("Aprovado")
end
end
Teríamos que desenvolver três testes de unidade para testar o método
avaliar, eles seguem a mesma estrutura do método abaixo:
Globalcode – Open4education
Automatizando testes de
unidade
A execução dos testes de unidade se dá através do comando:
rspec C:RubyInTestTDCspecunitavaliacao_spec.rb --color
Veremos o resultado semelhante ao abaixo:
.
Finished in 0 seconds (files took 0.1716 seconds to load)
1 example, 0 failures
Digamos que tenhamos esquecido que a nota de corte era 7 e então
mudamos no código para 8. Ao rodar, veremos o erro abaixo:
Failure/Error: expect(resultado).to eq("Aprovado")
expected: "Aprovado"
got: "DP"
Globalcode – Open4education
Automatizando testes de API
Para demonstrar este tipo de teste, usaremos uma API REST chamada “escola”,
que consome a classe e método que testamos anteriormente.
Ela está disponível no endereço:
http://localhost:4567/escola/api/
Essa API possui apenas um recurso e um método:
POST avaliar
@notaprova (String)
@notatrabalho (String)
Resposta:
@status (String) [fail/success]
@message (String)[Aprovado/Exame/DP]
Globalcode – Open4education
Automatizando testes de API
O RSpec fornece suporte a todos os métodos utilizados em API Rest, dentre
eles: GET, POST, PUT, DELETE.
Veremos aqui um exemplo utilizando o método POST, para avaliar o aluno
A resposta proveniente da API, obtido através da propriedade “body" do objeto
"resposta", geralmente vem em formato JSON, semelhante à que temos abaixo:
{"status":"success","message":"Aprovado"}
# Executando a requisição
resposta = RestClient.post(
'http://localhost:4567/escola/api/avaliar',
:notaprova => '7',
:notatrabalho => '7'
)
# Chamando o framework Rest-Client
require 'rest-client'
Globalcode – Open4education
Automatizando testes de API
Então é necessário converte-la em objeto estruturado para que possamos ter
acesso à resposta como um objeto, veja:
E, por fim, executamos as validações:
# Executando a requisição
resposta = RestClient.post(
'http://localhost:4567/escola/api/avaliar',
:notaprova => '7',
:notatrabalho => '7'
)
# Convertendo o resultado de JSON para Object
corpo = JSON.parse(resposta.body, object_class: OpenStruct)
# Validando resultados
expect(corpo.status).to eq("success")
expect(corpo.message).to eq("Aprovado")
Globalcode – Open4education
Automatizando testes de API
Agora já sabemos como interagir com a API e validar os resultados. O próximo
passo é criar a estrutura do teste usando RSpec, já sabemos como fazer isso:
Observações:
• O require é necessário para podermos utilizar o framework Rest-Client;
• Os contextos facilitam a visualização dos resultados;
require 'rest-client'
describe "Gerenciar API Escola" do
context "/avaliar" do
context "GET" do
it "alunos com notas maiores ou iguais a 7 são aprovados" do
# Interações com a API e validações
end
end
end
end
Globalcode – Open4education
Automatizando testes de API
# C:RubyInTestTDCspecapiescola_spec.rb
require 'rest-client'
describe "Gerenciar API Escola" do
context "/avaliar" do
context "GET" do
it "alunos com notas maiores ou iguais a 7 são aprovados" do
# Executando a requisição
resposta = RestClient.post(
'http://localhost:4567/escola/api/avaliar',
:notaprova => '7',
:notatrabalho => '7'
)
# Convertendo o resultado de JSON para Object
corpo = JSON.parse(resposta.body, object_class: OpenStruct
# Validando resultados
expect(corpo.status).to eq("success")
expect(corpo.message).to eq("Aprovado")
end
end
end
end
Código completo:
Globalcode – Open4education
Automatizando testes de API
A execução dos testes de API também podem ser executado com o mesmo comando
que usamos para executar os testes de unidade:
rspec C:RubyInTestTDCspecapiescola_spec.rb --color
Mas, como usamos contextos, podemos usar o parâmetro --format documentation,
após o parâmetro --color para que vejamos os resultados no formato de
documentação:
rspec C:RubyInTestTDCspecapiescola_spec.rb --color --format
documentation
E então os resultados aparecerão da seguinte forma:
Gerenciar API Escola
/avaliar
GET
alunos com notas maiores ou iguais a 7 sao aprovados
Finished in 0.0468 seconds (files took 0.5148 seconds to load)
1 example, 0 failures
Globalcode – Open4education
Automatizando testes de GUI
Para demonstrar este tipo de teste, usaremos uma aplicação web chamada
“escola”, que consome a API que testamos anteriormente.
Ela está disponível no endereço:
http://localhost:4567/escola/web/
Esta aplicação permite que informemos duas notas e, após clicar no botão
“Avaliar”, nos devolve o status atual do aluno.
Iremos automatizar o seguinte cenário:
1. Abrir e maximizar o browser Firefox;
2. Acessar a aplicação web;
3. Preencher o formulário;
4. Clicar no botão “Avaliar”;
5. Validar que a mensagem “Aprovado" foi apresentada.
Globalcode – Open4education
Automatizando testes de GUI
1. Abrir e maximizar o browser Firefox
navegador = Selenium::WebDriver.for :firefox
navegador.manage.window.maximize()
2. Acessar a aplicação web
navegador.get('http://localhost:4567/escola/web/')
3. Preencher o formulário
navegador.find_element(:name, 'notaprova').send_keys("7")
navegador[:name => 'notatrabalho'].send_keys("7")
4. Clicar no botão “Avaliar”;
navegador.find_element(:id, 'avaliar').click()
Outra forma de fazer
find_element
Globalcode – Open4education
Automatizando testes de GUI
5. Validar que a mensagem “Aprovado" foi apresentada
expect(navegador.find_element(:id, 'message').text).to
eq("Aprovado")
# Fechar o browser
navegador.close()
Observação:
Não esqueça de adicionar o require ‘selenium-webdriver’ no topo do arquivo
para que seja usado o valor transporte.
require 'selenium-webdriver'
Globalcode – Open4education
Automatizando testes de GUI
Código completo:
# C:RubyInTestTDCspecguiescola_spec.rb
require 'selenium-webdriver'
describe "Gerenciar Site Escola" do
context "Avaliar" do
it "alunos com notas maiores ou iguais a 7 são aprovados" do
navegador = Selenium::WebDriver.for :firefox
navegador.manage.window.maximize()
# Acessando a página inicial do QuickLoja
navegador.get('http://localhost:4567/escola/web/')
# Preenchendo o formulário
navegador.find_element(:name, 'notaprova').send_keys("7")
navegador[:name => 'notatrabalho'].send_keys("7")
navegador.find_element(:id, 'avaliar').click()
# Validando que entrou
expect(navegador.find_element(:id, 'message').text).to eq("Aprovado")
# Fechar o browser
navegador.close()
end
end
end
Globalcode – Open4education
Relatório em HTML
Uma vez que já automatizamos os testes em todas as camadas, podemos
rodar os testes e obter os resultados em formato HTML. Para isso,
executaremos o comando abaixo:
O resultado será semelhante ao apresentado abaixo:
rspec C:RubyInTestTDCspec --format html --out
C:RubyInTestTDCrelatorio.html
Globalcode – Open4education
@juliodelimas
slideshare.net/juliodelimas
github.com/juliodelimas/rubyintests
medium.com/@juliodelimas
iam@juliodelima.com.br
Obrigado!

Mais conteúdo relacionado

Mais procurados

Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com Cypress
Walmyr Lima e Silva Filho
 
ATDD Using Robot Framework
ATDD Using Robot FrameworkATDD Using Robot Framework
ATDD Using Robot Framework
Pekka Klärck
 
Robot framework
Robot frameworkRobot framework
Robot framework
boriau
 
Page Object Model and Implementation in Selenium
Page Object Model and Implementation in Selenium  Page Object Model and Implementation in Selenium
Page Object Model and Implementation in Selenium
Zoe Gilbert
 
Robot framework
Robot frameworkRobot framework
Rest assured
Rest assuredRest assured
Rest assured
Yaniv Rodenski
 
Selenium Concepts
Selenium ConceptsSelenium Concepts
Selenium Concepts
Swati Bansal
 
ISO 17025 Standard for Laboratories
 ISO 17025 Standard for Laboratories ISO 17025 Standard for Laboratories
ISO 17025 Standard for Laboratories
jagdeep123
 
Html quiz
Html quizHtml quiz
Html quiz
thusithaba
 
Pre-shipment inspection report on July 27th,2016
Pre-shipment inspection report on July 27th,2016Pre-shipment inspection report on July 27th,2016
Pre-shipment inspection report on July 27th,2016
河 黄
 
De a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de APIDe a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de API
Elias Nogueira
 
Test Automation Framework Designs
Test Automation Framework DesignsTest Automation Framework Designs
Test Automation Framework Designs
Sauce Labs
 
Test Automation Architecture
Test Automation ArchitectureTest Automation Architecture
Test Automation Architecture
Applitools
 
Projects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 ProjectsProjects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 Projects
Sam Dias
 
How to Get Started with Cypress
How to Get Started with CypressHow to Get Started with Cypress
How to Get Started with Cypress
Applitools
 
Introduction cypress
Introduction cypressIntroduction cypress
Introduction cypress
Oim Trust
 
Setting up Page Object Model in Automation Framework
Setting up Page Object Model in Automation FrameworkSetting up Page Object Model in Automation Framework
Setting up Page Object Model in Automation Framework
valuebound
 
Guia Referência Rápida HTML 5
Guia Referência Rápida HTML 5Guia Referência Rápida HTML 5
Guia Referência Rápida HTML 5
Loiane Groner
 
Six rules for networking at work
Six rules for networking at workSix rules for networking at work
Six rules for networking at work
Mohammad Asif
 
Iso 17025 standard
Iso 17025 standardIso 17025 standard
Iso 17025 standard
Christian Silmaro
 

Mais procurados (20)

Como criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com CypressComo criar testes rápidos e robustos com Cypress
Como criar testes rápidos e robustos com Cypress
 
ATDD Using Robot Framework
ATDD Using Robot FrameworkATDD Using Robot Framework
ATDD Using Robot Framework
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Page Object Model and Implementation in Selenium
Page Object Model and Implementation in Selenium  Page Object Model and Implementation in Selenium
Page Object Model and Implementation in Selenium
 
Robot framework
Robot frameworkRobot framework
Robot framework
 
Rest assured
Rest assuredRest assured
Rest assured
 
Selenium Concepts
Selenium ConceptsSelenium Concepts
Selenium Concepts
 
ISO 17025 Standard for Laboratories
 ISO 17025 Standard for Laboratories ISO 17025 Standard for Laboratories
ISO 17025 Standard for Laboratories
 
Html quiz
Html quizHtml quiz
Html quiz
 
Pre-shipment inspection report on July 27th,2016
Pre-shipment inspection report on July 27th,2016Pre-shipment inspection report on July 27th,2016
Pre-shipment inspection report on July 27th,2016
 
De a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de APIDe a máxima cobertura nos seus testes de API
De a máxima cobertura nos seus testes de API
 
Test Automation Framework Designs
Test Automation Framework DesignsTest Automation Framework Designs
Test Automation Framework Designs
 
Test Automation Architecture
Test Automation ArchitectureTest Automation Architecture
Test Automation Architecture
 
Projects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 ProjectsProjects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 Projects
 
How to Get Started with Cypress
How to Get Started with CypressHow to Get Started with Cypress
How to Get Started with Cypress
 
Introduction cypress
Introduction cypressIntroduction cypress
Introduction cypress
 
Setting up Page Object Model in Automation Framework
Setting up Page Object Model in Automation FrameworkSetting up Page Object Model in Automation Framework
Setting up Page Object Model in Automation Framework
 
Guia Referência Rápida HTML 5
Guia Referência Rápida HTML 5Guia Referência Rápida HTML 5
Guia Referência Rápida HTML 5
 
Six rules for networking at work
Six rules for networking at workSix rules for networking at work
Six rules for networking at work
 
Iso 17025 standard
Iso 17025 standardIso 17025 standard
Iso 17025 standard
 

Semelhante a [TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)

Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
Reinaldo Junior
 
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
Qualister
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
Eder Magalhães
 
Gsp313 desafio selo_01
Gsp313 desafio selo_01Gsp313 desafio selo_01
Gsp313 desafio selo_01
GestoFinanceiraFatec
 
Nao sensivel
Nao sensivelNao sensivel
Nao sensivel
GestoFinanceiraFatec
 
PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NET
slides_teltools
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Elias Nogueira
 
Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium
Mayron Cachina
 
Introdução À Automação de Testes com Selenium
Introdução À Automação de Testes com SeleniumIntrodução À Automação de Testes com Selenium
Introdução À Automação de Testes com Selenium
rodrigogouveia
 
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Sergio Lima
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
tdc-globalcode
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Edlaine Zamora
 
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio Nas
WordCamp Floripa
 
Palestra sobre Automação de Testes com Rest-Assured
Palestra sobre Automação de Testes com Rest-AssuredPalestra sobre Automação de Testes com Rest-Assured
Palestra sobre Automação de Testes com Rest-Assured
Qualister
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-Assured
Júlio de Lima
 
TDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - FloripaTDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - Floripa
Walmyr Lima e Silva Filho
 
Como melhoramos a performance dos testes automatizados com py.test e factoryboy
Como melhoramos a performance dos testes automatizados com py.test e factoryboyComo melhoramos a performance dos testes automatizados com py.test e factoryboy
Como melhoramos a performance dos testes automatizados com py.test e factoryboy
Leonardo Galani
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontaTestando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
tdc-globalcode
 
cypress.pdf
cypress.pdfcypress.pdf
cypress.pdf
Rafael Martins
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
Elias Nogueira
 

Semelhante a [TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web) (20)

Desafio Rest API
Desafio Rest APIDesafio Rest API
Desafio Rest API
 
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception[TDC2015] De unitário a aceitação: Automação de testes com Codeception
[TDC2015] De unitário a aceitação: Automação de testes com Codeception
 
JavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computingJavaEE 7, na era do cloud computing
JavaEE 7, na era do cloud computing
 
Gsp313 desafio selo_01
Gsp313 desafio selo_01Gsp313 desafio selo_01
Gsp313 desafio selo_01
 
Nao sensivel
Nao sensivelNao sensivel
Nao sensivel
 
PDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NETPDC - Engenharia - Plataforma Microsoft .NET
PDC - Engenharia - Plataforma Microsoft .NET
 
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidosParalelize seus testes web e mobile para ter feedbacks mais rápidos
Paralelize seus testes web e mobile para ter feedbacks mais rápidos
 
Testes Funcionais com Selenium
Testes Funcionais com Selenium Testes Funcionais com Selenium
Testes Funcionais com Selenium
 
Introdução À Automação de Testes com Selenium
Introdução À Automação de Testes com SeleniumIntrodução À Automação de Testes com Selenium
Introdução À Automação de Testes com Selenium
 
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
Introduzindo StimulusJS: o novo Framework JavaScript para Ruby On Rails.
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...
 
Testes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio NasTestes automatizados end-to-end com WordPress por Fabio Nas
Testes automatizados end-to-end com WordPress por Fabio Nas
 
Palestra sobre Automação de Testes com Rest-Assured
Palestra sobre Automação de Testes com Rest-AssuredPalestra sobre Automação de Testes com Rest-Assured
Palestra sobre Automação de Testes com Rest-Assured
 
TDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-AssuredTDC2015: Testes em APIs REST com Rest-Assured
TDC2015: Testes em APIs REST com Rest-Assured
 
TDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - FloripaTDC 2016 Trilha Testes - Floripa
TDC 2016 Trilha Testes - Floripa
 
Como melhoramos a performance dos testes automatizados com py.test e factoryboy
Como melhoramos a performance dos testes automatizados com py.test e factoryboyComo melhoramos a performance dos testes automatizados com py.test e factoryboy
Como melhoramos a performance dos testes automatizados com py.test e factoryboy
 
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontaTestando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
Testando sua aplicação asp.net mvc de forma automatizada de ponta a ponta
 
cypress.pdf
cypress.pdfcypress.pdf
cypress.pdf
 
Todas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágilTodas as abordagens de testes dentro do ágil
Todas as abordagens de testes dentro do ágil
 

Mais de Júlio de Lima

[ATC2021] Distribuição de Testes em Diferentes Camadas
[ATC2021] Distribuição de Testes em Diferentes Camadas[ATC2021] Distribuição de Testes em Diferentes Camadas
[ATC2021] Distribuição de Testes em Diferentes Camadas
Júlio de Lima
 
ALTER FACE Test Heuristic
ALTER FACE Test HeuristicALTER FACE Test Heuristic
ALTER FACE Test Heuristic
Júlio de Lima
 
[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testes[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testes
Júlio de Lima
 
Reducing the scope of load test analysis (STAREast 2020)
Reducing the scope of load test analysis (STAREast 2020)Reducing the scope of load test analysis (STAREast 2020)
Reducing the scope of load test analysis (STAREast 2020)
Júlio de Lima
 
[TDC2019] Inteligência Artificial e Testes in a Nutshell
[TDC2019] Inteligência Artificial e Testes  in a Nutshell[TDC2019] Inteligência Artificial e Testes  in a Nutshell
[TDC2019] Inteligência Artificial e Testes in a Nutshell
Júlio de Lima
 
[GaragemTalks2019] Cultura de Testes e Qualidade de Software
[GaragemTalks2019] Cultura de Testes e Qualidade de Software[GaragemTalks2019] Cultura de Testes e Qualidade de Software
[GaragemTalks2019] Cultura de Testes e Qualidade de Software
Júlio de Lima
 
[MoT SP #1] PRISMA para Testes Baseados em Risco
[MoT SP #1] PRISMA para Testes Baseados em Risco[MoT SP #1] PRISMA para Testes Baseados em Risco
[MoT SP #1] PRISMA para Testes Baseados em Risco
Júlio de Lima
 
Mindset de QA em Diferentes Contextos
Mindset de QA em Diferentes ContextosMindset de QA em Diferentes Contextos
Mindset de QA em Diferentes Contextos
Júlio de Lima
 
[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem
Júlio de Lima
 
[7Masters Aug, 2018] Escolhas durante automação de testes de API
[7Masters Aug, 2018] Escolhas durante automação de testes de API[7Masters Aug, 2018] Escolhas durante automação de testes de API
[7Masters Aug, 2018] Escolhas durante automação de testes de API
Júlio de Lima
 
[Front in Sampa 2018] Desenvolvendo como QAs
[Front in Sampa 2018] Desenvolvendo como QAs[Front in Sampa 2018] Desenvolvendo como QAs
[Front in Sampa 2018] Desenvolvendo como QAs
Júlio de Lima
 
Mindset do QA em diferentes contextos
Mindset do QA em diferentes contextosMindset do QA em diferentes contextos
Mindset do QA em diferentes contextos
Júlio de Lima
 
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
Júlio de Lima
 
[PHPConference 2016] Criando Mocks com Prophecy
[PHPConference 2016] Criando Mocks com Prophecy[PHPConference 2016] Criando Mocks com Prophecy
[PHPConference 2016] Criando Mocks com Prophecy
Júlio de Lima
 
[QANinjaConference] Carreira em Testes: Ainda vale a pena?
[QANinjaConference] Carreira em Testes: Ainda vale a pena?[QANinjaConference] Carreira em Testes: Ainda vale a pena?
[QANinjaConference] Carreira em Testes: Ainda vale a pena?
Júlio de Lima
 
[QANinjaConference] Automação de Testes com Codeception
[QANinjaConference] Automação de Testes com Codeception[QANinjaConference] Automação de Testes com Codeception
[QANinjaConference] Automação de Testes com Codeception
Júlio de Lima
 
[PHPConferenceBR] Automação de testes com Codeception
[PHPConferenceBR] Automação de testes com Codeception[PHPConferenceBR] Automação de testes com Codeception
[PHPConferenceBR] Automação de testes com Codeception
Júlio de Lima
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
Júlio de Lima
 
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeter[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
Júlio de Lima
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de Software
Júlio de Lima
 

Mais de Júlio de Lima (20)

[ATC2021] Distribuição de Testes em Diferentes Camadas
[ATC2021] Distribuição de Testes em Diferentes Camadas[ATC2021] Distribuição de Testes em Diferentes Camadas
[ATC2021] Distribuição de Testes em Diferentes Camadas
 
ALTER FACE Test Heuristic
ALTER FACE Test HeuristicALTER FACE Test Heuristic
ALTER FACE Test Heuristic
 
[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testes[ScrumDay2020] A evolução da responsabilidade em testes
[ScrumDay2020] A evolução da responsabilidade em testes
 
Reducing the scope of load test analysis (STAREast 2020)
Reducing the scope of load test analysis (STAREast 2020)Reducing the scope of load test analysis (STAREast 2020)
Reducing the scope of load test analysis (STAREast 2020)
 
[TDC2019] Inteligência Artificial e Testes in a Nutshell
[TDC2019] Inteligência Artificial e Testes  in a Nutshell[TDC2019] Inteligência Artificial e Testes  in a Nutshell
[TDC2019] Inteligência Artificial e Testes in a Nutshell
 
[GaragemTalks2019] Cultura de Testes e Qualidade de Software
[GaragemTalks2019] Cultura de Testes e Qualidade de Software[GaragemTalks2019] Cultura de Testes e Qualidade de Software
[GaragemTalks2019] Cultura de Testes e Qualidade de Software
 
[MoT SP #1] PRISMA para Testes Baseados em Risco
[MoT SP #1] PRISMA para Testes Baseados em Risco[MoT SP #1] PRISMA para Testes Baseados em Risco
[MoT SP #1] PRISMA para Testes Baseados em Risco
 
Mindset de QA em Diferentes Contextos
Mindset de QA em Diferentes ContextosMindset de QA em Diferentes Contextos
Mindset de QA em Diferentes Contextos
 
[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem[DevelopersBR-2018] Testes de performance usando a nuvem
[DevelopersBR-2018] Testes de performance usando a nuvem
 
[7Masters Aug, 2018] Escolhas durante automação de testes de API
[7Masters Aug, 2018] Escolhas durante automação de testes de API[7Masters Aug, 2018] Escolhas durante automação de testes de API
[7Masters Aug, 2018] Escolhas durante automação de testes de API
 
[Front in Sampa 2018] Desenvolvendo como QAs
[Front in Sampa 2018] Desenvolvendo como QAs[Front in Sampa 2018] Desenvolvendo como QAs
[Front in Sampa 2018] Desenvolvendo como QAs
 
Mindset do QA em diferentes contextos
Mindset do QA em diferentes contextosMindset do QA em diferentes contextos
Mindset do QA em diferentes contextos
 
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
[QANinjaConf2017] Testes de Regressão Visual com Galen Framework
 
[PHPConference 2016] Criando Mocks com Prophecy
[PHPConference 2016] Criando Mocks com Prophecy[PHPConference 2016] Criando Mocks com Prophecy
[PHPConference 2016] Criando Mocks com Prophecy
 
[QANinjaConference] Carreira em Testes: Ainda vale a pena?
[QANinjaConference] Carreira em Testes: Ainda vale a pena?[QANinjaConference] Carreira em Testes: Ainda vale a pena?
[QANinjaConference] Carreira em Testes: Ainda vale a pena?
 
[QANinjaConference] Automação de Testes com Codeception
[QANinjaConference] Automação de Testes com Codeception[QANinjaConference] Automação de Testes com Codeception
[QANinjaConference] Automação de Testes com Codeception
 
[PHPConferenceBR] Automação de testes com Codeception
[PHPConferenceBR] Automação de testes com Codeception[PHPConferenceBR] Automação de testes com Codeception
[PHPConferenceBR] Automação de testes com Codeception
 
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
[38º GURU SP] Automação de Testes Web em Ruby com Cucumber e Webdriver
 
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeter[UNIP2015] Testando a Performance de Aplicações Web com JMeter
[UNIP2015] Testando a Performance de Aplicações Web com JMeter
 
Palestra DevOps para Teste de Software
Palestra DevOps para Teste de SoftwarePalestra DevOps para Teste de Software
Palestra DevOps para Teste de Software
 

Último

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
Faga1939
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
Momento da Informática
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Gabriel de Mattos Faustino
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
Momento da Informática
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
Danilo Pinotti
 
Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!
Jonathas Muniz
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
TomasSousa7
 

Último (7)

PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
PRODUÇÃO E CONSUMO DE ENERGIA DA PRÉ-HISTÓRIA À ERA CONTEMPORÂNEA E SUA EVOLU...
 
Logica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptxLogica de Progamacao - Aula (1) (1).pptx
Logica de Progamacao - Aula (1) (1).pptx
 
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdfEscola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
Escola Virtual - Fundação Bradesco - ITIL - Gabriel Faustino.pdf
 
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdfTOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
TOO - TÉCNICAS DE ORIENTAÇÃO A OBJETOS aula 1.pdf
 
Segurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas PráticasSegurança Digital Pessoal e Boas Práticas
Segurança Digital Pessoal e Boas Práticas
 
Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!Guardioes Digitais em ação: Como criar senhas seguras!
Guardioes Digitais em ação: Como criar senhas seguras!
 
História da Rádio- 1936-1970 século XIX .2.pptx
História da Rádio- 1936-1970 século XIX   .2.pptxHistória da Rádio- 1936-1970 século XIX   .2.pptx
História da Rádio- 1936-1970 século XIX .2.pptx
 

[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)

  • 1. Globalcode – Open4education Ruby in Tests Júlio de Lima Especialista em Testes na RSI @juliodelimas
  • 2. Globalcode – Open4education Objetivo Ao fim da palestra, você saiba como preparar o ambiente e escrever scripts de teste automatizados de unidade, API e GUI (Web) usando frameworks open- source em Ruby.
  • 3. Globalcode – Open4education "RubyInTests" O nome da palestra baseia-se em uma série de artigos de minha autoria originados de um #desafioAgileTesters feito pelo amigo Diego Blond (@PerdidoNoTeste). Conheçam mais sobre o desafio e a comunidade Agile Testers: bit.ly/desafioAgileTesters2016
  • 4. Globalcode – Open4education O conceito Unidade API GUI Métodos de uma classe que serão testados de forma isolada Métodos que utilizam as unidades de forma conjunta para receber, processar e devolver informações do sistema Interface gráfica, que consome as APIs, apresentando suas informações de forma amigável Application Programming Interface Graphical user interface
  • 5. Globalcode – Open4education Frameworks RSpec Rest-Client WebDriver Documentação: relishapp.com/rspec Documentação: github.com/rest-client/rest-client Documentação: bit.ly/WebDriverRuby Unidade API GUI
  • 6. Globalcode – Open4education Preparando o ambiente 1. Instale o Ruby 2.0 rubyinstaller.org
 * Adicione o diretório do Ruby às variáveis de ambiente 2. Baixe o DevKit na mesma URL e extraia-o em C:Ruby200dk 3. Instale o DevKit executando as linhas abaixo no prompt ruby C:Ruby200dkdk.rb init ruby C:Ruby200dkdk.rb install 4. Instale a Gem do Bundler Digite gem install bundler no prompt de comando
  • 7. Globalcode – Open4education Preparando o projeto 1. Crie o diretório “RubyInTestTDC” e acesse-o via prompt 2. Execute o comando bundle init 3. Agora o arquivo Gemfile foi criado Adicionaremos a ele todas os frameworks que utilizaremos 4. Abra o Gemfile e substitua seu conteúdo pelas linhas abaixo: source "http://rubygems.org" gem 'rspec', '~> 3.3.0' gem 'rest-client', '~> 1.8' gem 'selenium-webdriver', '2.48.1' gem 'sinatra' # Para o app de teste 5. Execute o comando bundle install
  • 8. Globalcode – Open4education Você pode assistir esse passo a passo no YouTube através do link abaixo: bit.ly/RubyInTestInstalacao
  • 9. Globalcode – Open4education Automatizando testes de unidade # C:RubyInTestTDCavaliacao_class.rb class Avaliacao def avaliar(notaprova, notatrabalho) if (notaprova >= 7) if (notatrabalho >= 7) return "Aprovado" else return "Exame" end else return "DP" end end end Para demonstrar este tipo de teste, usaremos a class Avaliação, que possui um método chamado “avaliar”, que recebe dois parâmetros: notaprova e notatrabalho.
  • 10. Globalcode – Open4education Automatizando testes de unidade # C:RubyInTestTDCspecunitavaliacao_spec.rb require_relative "../../avaliacao_class" describe Avaliacao do it "alunos com notas maiores ou iguais a 7 são aprovados" do # Arrange avaliacao = Avaliacao.new() # Act resultado = avaliacao.avaliar(7, 7) # Assert expect(resultado).to eq("Aprovado") end end Teríamos que desenvolver três testes de unidade para testar o método avaliar, eles seguem a mesma estrutura do método abaixo:
  • 11. Globalcode – Open4education Automatizando testes de unidade A execução dos testes de unidade se dá através do comando: rspec C:RubyInTestTDCspecunitavaliacao_spec.rb --color Veremos o resultado semelhante ao abaixo: . Finished in 0 seconds (files took 0.1716 seconds to load) 1 example, 0 failures Digamos que tenhamos esquecido que a nota de corte era 7 e então mudamos no código para 8. Ao rodar, veremos o erro abaixo: Failure/Error: expect(resultado).to eq("Aprovado") expected: "Aprovado" got: "DP"
  • 12. Globalcode – Open4education Automatizando testes de API Para demonstrar este tipo de teste, usaremos uma API REST chamada “escola”, que consome a classe e método que testamos anteriormente. Ela está disponível no endereço: http://localhost:4567/escola/api/ Essa API possui apenas um recurso e um método: POST avaliar @notaprova (String) @notatrabalho (String) Resposta: @status (String) [fail/success] @message (String)[Aprovado/Exame/DP]
  • 13. Globalcode – Open4education Automatizando testes de API O RSpec fornece suporte a todos os métodos utilizados em API Rest, dentre eles: GET, POST, PUT, DELETE. Veremos aqui um exemplo utilizando o método POST, para avaliar o aluno A resposta proveniente da API, obtido através da propriedade “body" do objeto "resposta", geralmente vem em formato JSON, semelhante à que temos abaixo: {"status":"success","message":"Aprovado"} # Executando a requisição resposta = RestClient.post( 'http://localhost:4567/escola/api/avaliar', :notaprova => '7', :notatrabalho => '7' ) # Chamando o framework Rest-Client require 'rest-client'
  • 14. Globalcode – Open4education Automatizando testes de API Então é necessário converte-la em objeto estruturado para que possamos ter acesso à resposta como um objeto, veja: E, por fim, executamos as validações: # Executando a requisição resposta = RestClient.post( 'http://localhost:4567/escola/api/avaliar', :notaprova => '7', :notatrabalho => '7' ) # Convertendo o resultado de JSON para Object corpo = JSON.parse(resposta.body, object_class: OpenStruct) # Validando resultados expect(corpo.status).to eq("success") expect(corpo.message).to eq("Aprovado")
  • 15. Globalcode – Open4education Automatizando testes de API Agora já sabemos como interagir com a API e validar os resultados. O próximo passo é criar a estrutura do teste usando RSpec, já sabemos como fazer isso: Observações: • O require é necessário para podermos utilizar o framework Rest-Client; • Os contextos facilitam a visualização dos resultados; require 'rest-client' describe "Gerenciar API Escola" do context "/avaliar" do context "GET" do it "alunos com notas maiores ou iguais a 7 são aprovados" do # Interações com a API e validações end end end end
  • 16. Globalcode – Open4education Automatizando testes de API # C:RubyInTestTDCspecapiescola_spec.rb require 'rest-client' describe "Gerenciar API Escola" do context "/avaliar" do context "GET" do it "alunos com notas maiores ou iguais a 7 são aprovados" do # Executando a requisição resposta = RestClient.post( 'http://localhost:4567/escola/api/avaliar', :notaprova => '7', :notatrabalho => '7' ) # Convertendo o resultado de JSON para Object corpo = JSON.parse(resposta.body, object_class: OpenStruct # Validando resultados expect(corpo.status).to eq("success") expect(corpo.message).to eq("Aprovado") end end end end Código completo:
  • 17. Globalcode – Open4education Automatizando testes de API A execução dos testes de API também podem ser executado com o mesmo comando que usamos para executar os testes de unidade: rspec C:RubyInTestTDCspecapiescola_spec.rb --color Mas, como usamos contextos, podemos usar o parâmetro --format documentation, após o parâmetro --color para que vejamos os resultados no formato de documentação: rspec C:RubyInTestTDCspecapiescola_spec.rb --color --format documentation E então os resultados aparecerão da seguinte forma: Gerenciar API Escola /avaliar GET alunos com notas maiores ou iguais a 7 sao aprovados Finished in 0.0468 seconds (files took 0.5148 seconds to load) 1 example, 0 failures
  • 18. Globalcode – Open4education Automatizando testes de GUI Para demonstrar este tipo de teste, usaremos uma aplicação web chamada “escola”, que consome a API que testamos anteriormente. Ela está disponível no endereço: http://localhost:4567/escola/web/ Esta aplicação permite que informemos duas notas e, após clicar no botão “Avaliar”, nos devolve o status atual do aluno. Iremos automatizar o seguinte cenário: 1. Abrir e maximizar o browser Firefox; 2. Acessar a aplicação web; 3. Preencher o formulário; 4. Clicar no botão “Avaliar”; 5. Validar que a mensagem “Aprovado" foi apresentada.
  • 19. Globalcode – Open4education Automatizando testes de GUI 1. Abrir e maximizar o browser Firefox navegador = Selenium::WebDriver.for :firefox navegador.manage.window.maximize() 2. Acessar a aplicação web navegador.get('http://localhost:4567/escola/web/') 3. Preencher o formulário navegador.find_element(:name, 'notaprova').send_keys("7") navegador[:name => 'notatrabalho'].send_keys("7") 4. Clicar no botão “Avaliar”; navegador.find_element(:id, 'avaliar').click() Outra forma de fazer find_element
  • 20. Globalcode – Open4education Automatizando testes de GUI 5. Validar que a mensagem “Aprovado" foi apresentada expect(navegador.find_element(:id, 'message').text).to eq("Aprovado") # Fechar o browser navegador.close() Observação: Não esqueça de adicionar o require ‘selenium-webdriver’ no topo do arquivo para que seja usado o valor transporte. require 'selenium-webdriver'
  • 21. Globalcode – Open4education Automatizando testes de GUI Código completo: # C:RubyInTestTDCspecguiescola_spec.rb require 'selenium-webdriver' describe "Gerenciar Site Escola" do context "Avaliar" do it "alunos com notas maiores ou iguais a 7 são aprovados" do navegador = Selenium::WebDriver.for :firefox navegador.manage.window.maximize() # Acessando a página inicial do QuickLoja navegador.get('http://localhost:4567/escola/web/') # Preenchendo o formulário navegador.find_element(:name, 'notaprova').send_keys("7") navegador[:name => 'notatrabalho'].send_keys("7") navegador.find_element(:id, 'avaliar').click() # Validando que entrou expect(navegador.find_element(:id, 'message').text).to eq("Aprovado") # Fechar o browser navegador.close() end end end
  • 22. Globalcode – Open4education Relatório em HTML Uma vez que já automatizamos os testes em todas as camadas, podemos rodar os testes e obter os resultados em formato HTML. Para isso, executaremos o comando abaixo: O resultado será semelhante ao apresentado abaixo: rspec C:RubyInTestTDCspec --format html --out C:RubyInTestTDCrelatorio.html