Este documento apresenta uma introdução à automação de testes web usando Ruby, Watir e Test::Unit. Ele discute os benefícios da automação de testes, como instalar o Ruby, e demonstra como usar o Watir para automatizar testes no navegador.
Presentation about Aceptance Test-Driven Development in Android. The source code using to guide this presentation can be found at:
https://github.com/pedroaugustofr/AndroidConverterATDD
Como organizar as interações (humanas) entre devs e ops num contexto de entrega contínua? Em uma pesquisa com 46 pessoas, de 44 empresas, em 8 países, em meu doutorado na USP, identifiquei 4 estruturas organizacionais. Entre elas, destaca-se a que denominei de ?times de plataforma?: o time de infra passa a fornecer serviços altamente automatizados para empoderar os desenvolvedores, que por sua vez se tornam responsáveis pela operação de seus serviços. Apesar dos desafios, esse esquema contribui para um alto desempenho de entrega. Nesta palestra, você entenderá o que é um time de plataforma e suas consequências; somada à minha experiência no Serpro, discutirei essa abordagem para as empresas.
Presentation about Aceptance Test-Driven Development in Android. The source code using to guide this presentation can be found at:
https://github.com/pedroaugustofr/AndroidConverterATDD
Como organizar as interações (humanas) entre devs e ops num contexto de entrega contínua? Em uma pesquisa com 46 pessoas, de 44 empresas, em 8 países, em meu doutorado na USP, identifiquei 4 estruturas organizacionais. Entre elas, destaca-se a que denominei de ?times de plataforma?: o time de infra passa a fornecer serviços altamente automatizados para empoderar os desenvolvedores, que por sua vez se tornam responsáveis pela operação de seus serviços. Apesar dos desafios, esse esquema contribui para um alto desempenho de entrega. Nesta palestra, você entenderá o que é um time de plataforma e suas consequências; somada à minha experiência no Serpro, discutirei essa abordagem para as empresas.
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)Júlio de Lima
Palestra ministrada na Trilha de Testes do TDC2016 em 09 de julho de 2016. Nela mostro, na prática, como automatizar testes de unidade, API e Web com frameworks open-source em Ruby.
Palestra apresentada no II BootCamp OescLivre e Unoesc São Miguel com o tema: Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3, onde apresentamos uma alternativa de divisão de tarefas utilizadas na Camtwo com os frameworks citados.
Como a ferramenta de linha de comando (CLI) do Angular pode nos ensinar começar um projeto e Angular? Vamos aprender nesta palestra como começar um projeto do zero usando a CLI e saber as opções que existem para as pessoas desenvolvedoras.
Slides da palestra "Testando aplicações Flex com Selenium" que apresentei no FlexMania 2011.
O código-fonte e a gravação da pelestra estão disponíveis no meu blog: http://victorserta.com.br/blog/2011/07/11/material-palestra-testando-aplicacoes-flex-com-selenium-do-flex-mania-2011/
Primeiro vídeo da sequência de alulas com Ruby.
Fontes:
//material
https://pt.slideshare.net/TestRockChannel
https://netbeans.org/downloads/
http://railsinstaller.org/pt-
http://plugins.netbeans.org/plugin/38549
http://plugins.netbeans.org/plugin/17939/cucumber-features
//imagens
https://pixabay.com/pt/caranguejo-praia-areia-macro-1990198/
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
[TDC2016] Ruby in Tests: Automatizando testes de Unidade, API e GUI (Web)Júlio de Lima
Palestra ministrada na Trilha de Testes do TDC2016 em 09 de julho de 2016. Nela mostro, na prática, como automatizar testes de unidade, API e Web com frameworks open-source em Ruby.
Palestra apresentada no II BootCamp OescLivre e Unoesc São Miguel com o tema: Dividindo responsabilidades com VRaptor, Rest, HTML5 e CSS3, onde apresentamos uma alternativa de divisão de tarefas utilizadas na Camtwo com os frameworks citados.
Como a ferramenta de linha de comando (CLI) do Angular pode nos ensinar começar um projeto e Angular? Vamos aprender nesta palestra como começar um projeto do zero usando a CLI e saber as opções que existem para as pessoas desenvolvedoras.
Slides da palestra "Testando aplicações Flex com Selenium" que apresentei no FlexMania 2011.
O código-fonte e a gravação da pelestra estão disponíveis no meu blog: http://victorserta.com.br/blog/2011/07/11/material-palestra-testando-aplicacoes-flex-com-selenium-do-flex-mania-2011/
Primeiro vídeo da sequência de alulas com Ruby.
Fontes:
//material
https://pt.slideshare.net/TestRockChannel
https://netbeans.org/downloads/
http://railsinstaller.org/pt-
http://plugins.netbeans.org/plugin/38549
http://plugins.netbeans.org/plugin/17939/cucumber-features
//imagens
https://pixabay.com/pt/caranguejo-praia-areia-macro-1990198/
Importância de Testes Automatizados para Continuous Delivery & DevOpsSamanta Cicilia
O mercado tem exigido cada vez mais rapidez nas entregas dos times de desenvolvimento, para atender as demandas de negócio e manter a competitividade. Para garantir que essas entregas aconteçam no tempo esperado e com qualidade, é muito importante investir em todos os níveis de teste automatizados. Vamos ver quais são esses níveis de teste e alguns exemplos práticos usando Python de testes unitários, integração, funcionais, performance e mutação.
Apresentação sobre testes em React utilizando Jest e Enzyme. Foi realizado como repasse de conhecimento interno do Instituto Atlântico, ministrado por Henrique Soares, Lucas Gomes e Matheus Freitas Cezar
Teste de performance com JMeter: como criar e executar os testes em aplicaçõe...Edlaine Zamora
Palestra apresentada no TDC Florianópolis de 2017.
Não perca cliente por causa da lentidão ou da instabilidade de sua aplicação. Aprenda a analisar tempo de resposta, identificar melhorias de segurança e descobrir a capacidade de seu software. Não deixe que um eventual pico de usuários simultâneos acabe com a reputação de seu software.
Testar é somente apertar botões?
A apresentação foi feita para demonstrar a importância do testes de software, na construção de um software de qualidade.
Minicurso - Técnicas de Teste e Automatização do Teste de Unidade XII SemanaT...Claudinei Brito Junior
Minicurso ministrado na XII SemanaTI na UNIVEM - Marília/SP, nos dias 23 e 24 de setembro de 2019. O título do minicurso é Técnicas de Teste e Automatização do Teste de Unidade e o minicurso tratava na teoria sobre algumas técnicas de Teste de Software, bem como a Técnica de Teste Estrutural, Teste Funcional e Teste Baseado em Defeitos, assim como aprendemos sobre a fase do Teste de Unidade, e ali, aplicamos na prática a Técnica de Teste Estrutural e tratamos sobre a teoria e a prática da automação de testes.
Testando sua aplicação asp.net mvc de forma automatizada de ponta a pontatdc-globalcode
Nessa palestra mostrarei como criar uma estrutura de testes automatizados para a sua aplicação ASP.NET MVC cobrindo os principais aspectos do seu sistema.
Esta palestra pretende apresentar boas práticas para Continuous Deployment e como o Strider CD, um servidor de Continuous Integration e Continuous Deployment em NodeJS, nos ajuda muito neste processo. Serão abordados tópicos como Integração contínua, Deploy contínuo, Git, Workflow de trabalho, TDD/BDD e onde o Strider facilita a implementação destas práticas para Entrega Contínua
Paralelize seus testes web e mobile para ter feedbacks mais rápidosElias Nogueira
Workshop ministrado no Agile Brazil 2018 sobre criação da abordagem de testes paralelos para web e mobile no dia 05/10/2018. Repositório em https://github.com/eliasnogueira/workshop-ab-2018
3. Quem
somos
● Alex Warmling - alex@chaordic.com.br
○ 3+ anos de QA
○ Já atuou como DEV
○ Instrutor de teste de software no programa
GeraçãoTEC;
○ FullStack QA na Chaordic
4. Quem
somos
● Fausto Siqueira - siqueira@chaordic.com.br
○ 8+ anos de QA
○ Trabalhou na EDS e IBM
○ Agile test lead na Chaordic
○ ISTQB Certified Foundation Level Tester
6. Apresentação dos
participantes
● Trabalha em ambiente ágil ou tradicional?
● É QA?
● Sua equipe escreve testes unitários?
● Sua equipe pratica TDD ou outra prática
test-driven?
12. Testes consistem na verificação dinâmica do
funcionamento de um programa em um conjunto
finito de casos de teste, selecionado dentro de
domínio infinito de entradas, contra seu
funcionamento esperado (SWEBOK, 2004)
● Dinâmico – Execução
● Finito – Existem muitos casos de teste
● Selecionado – Técnicas diferem na
seleção
● Esperado – Funcionamento esperado
deve ser verificado
Definição
13. ● Encontrar e documentar defeitos
● Fornecer base para percepção da qualidade do
software
● Avaliar se o produto de software funciona como
projetado e esperado
● Garantir que os problemas encontrados sejam
corrigidos
Objetivos
14. ● Muitos bugs são gerados e não são encontrados
quando o software ainda esta em desenvolvimento
● Com os sistemas para internet o número de usuários
é milhares de vezes maior
● Necessidade de equipes especializadas em testes
● O custo destes bugs se torna cada vez maior
Cenário atual
16. Então, testando
eliminamos
todos os
defeitos?
Segundo MYERS (1979), em seu livro The art of sotware
testing:
● Testes unitários podem remover de 30% a 50% dos
defeitos
● Testes de sistemas podem remover de 30% a 50%
dos defeitos remanescentes
● Revisão de código pode ainda reduzir entre 20% e
30% do restante
● Software em produção ainda com ~40% de defeitos
17. “Qualidade não é uma
fase do ciclo de
desenvolvimento de
software, é parte de
todas as fases”
21. Como faço para
saber o que
testar primeiro
então?
● Identificar componentes e features do software a
serem testados:
○ Priorizar
○ Positivos/negativos
○ Os mais graves
○ Os mais prováveis
○ Falhas anteriores
○ …
● Considerar aspectos funcionais e não-funcionais
● Considerar tempo, recursos, riscos
● Nem tudo pode ser testado, e o que é testado não
pode ser completamente testado.
27. Razões para
automatizar
● Escalabilidade de execução de testes
● Repetição controlada
● Ambientes controlados e definidos
● Execução rápida e contínua, idealmente robusta
● Entra na Integração Contínua
28. Integração
contínua
● Área de Staging
● Confiança para deploy
● Visibilidade sobre a integridade da build
● Regressão da aceitação evita quebra de regra de
negócios
30. Integração
contínua
● Feedback contínuo para a equipe DEV
● Feedback para área de negócios, testes de
aceitação
● Servidores de integração contínua
○ Jenkins Ci
■ Ci-reporter gem
○ Circle Ci
36. Test::Unit
● Implementação do framework xUnit para
Ruby
● Test::Unit::Assertions
○ assert
○ assert_equal
○ assert_not_equal
○ assert_raise
37. Um teste automático por re-
teste de bug fix evita a
recorrência do problema
Re-teste de
bugs
● Bug fix é validado com um teste script
automático
● Script é adicionado à suite de regressão
● Evitar recorrência de bugs é fundamental
38. Testes de
aceitação
● Feedback contínuo para o cliente
● Visibilidade sobre o status do sistema
● Transparência com o cliente
● Documentação dinâmica e ativa
● Confiança
● Regressão
39. Bug tracking
Adotar?
● Comunicação
● Agilidade em corrigir bugs
● Priorização para correções VS. novas funcionalidades
● Métricas
● Knowledge base
● Auditoria
● Evidências
40. Bug tracking
Adotar?
● Times distribuídos
● Grandes equipes
● Ferramenta de comunicação
● Rastreabilidade entre requisitos
● Bugs em produção
42. Desafios
● Atitude
● Coragem para codificar
● Conhecimento
● Curva de aprendizado
● Investimento inicial
● Não quer ser DEV
43. Instalação
Ruby em
Linux
● RVM - Ruby Version Manager
○ “RVM gives you compartmentalized independent
ruby setups. This means that ruby, gems and irb
are all separate and self-contained - from the
system, and from each other.”
● https://rvm.io/rvm/install
● Linux
$ curl -sSL https://get.rvm.io | bash -s stable --ruby
$ ruby -v
44. Instalação
Ruby em
Linux
● $ source /home/siqueira/.rvm/scripts/rvm
● Criar GemSet
○ $ rvm create gemset academia_chaordic
52. Comentários
● De linha
● De bloco
# for i in 0..5
# if i > 2 then
# break
# end
# puts "Valor da variavel local seria #{i}"
# end
=begin
for i in 0..5
if i > 2 then
break
end
puts "Valor da variavel local seria #{i}"
end
=end
55. Escopo de
variáveis
● Locais
a. Escopo de método
b. Variáveis locais começam com letra minúscula ou _.
● Instância:
a. Escopo de objeto.
b. Nome precedido por @
● Classe:
a. Escopo de classe.
b. Característica de uma classe.
c. Disponível para diferentes objetos.
d. Precedidas por @@
● Globais:
a. Disponível entre classes.
b. Nome precedido por $
83. File I/O
● Imprima em um arquivo o maior e o menor valor de
um array com 10 números inteiros
● Aqui você pode utilizar os conceitos de Array, if e
for
85. Automate your web browser
beautifully, nicely and
easily with some very sweet
syntactic sugar.
86. What is Watir?
● Open-source web test automation framework
● Bibliotecas Ruby
● Independente de tecnologia da app
● Simula input de usuário no navegador
87. Watir drives browsers the
same way people do. It
clicks links, fills in forms,
presses buttons. Watir also
checks results, such as
whether expected text
appears on the page. [watir.
com]
Re-teste de
bugs
88. Watir-classic
● Somente Internet Explorer
● Manipula o navegador via OLE - Object Linking and
Embedding sobre a arquitetura COM - Component
Object Model
● IE -> serve objetos, expondo seus métodos
● Ruby -> cliente, manipula os objetos
89. Watir-webdriver
● Versão moderna da API Watir baseada em Selenium
2.0 com WebDriver
● Jari Bakken implementou
● Construída a partir da especificação HTML
● W3C compatível
90. Watij
● Web Application Testing in Java
● Simplicidade do Watir com poder do Java
● Pode-se usar JRuby e o interpretador IRB
91. Vantagens
● Comunidade ativa
● Ruby nativa
● Suporte a multiplos browsers
● Poderosa, leve e fácil de utilizar
● Sem gravadores - Test records
92. Vantagens
● Sem find_element(s) === menos código;
● Specific methods (divs, buttons, links…);
Selenium: driver.find_element(:class, 'product-
title')
Watir: driver.div :class => ‘product-title’
● Explicit waits for AJAX (Selenium :timeout => 10)
● JavaScript alerts
93. Vantagens
● Fácil de lidar com iFrames
● Utilizar com rubygem PageObject
● Possível medir performance da página com Watir-
WebDriver-Performance gem
101. Exemplo
require 'watir-webdriver'
firefox = Watir::Browser.new :firefox
firefox.goto 'google.com'
firefox.text_field(:name => 'q').set 'chaordic'
firefox.button(:name => 'btnG').click
begin
firefox.links.each do |link|
link.click if link.href == 'http://www.chaordic.com.br/'
end
rescue Selenium::WebDriver::Error::StaleElementReferenceError
nil
end
firefox.quit
102. Performance
● Measure page performance gem
“The Watir-WebDriver-Performance gem aims to
provide a set of navigation timing metrics for Watir-
WebDriver actions using a W3C page performance
standard. This is a perfect solution to capture
response time metrics, and it’s very straightforward
to do but currently only works in Chrome and IE9l, so
there’s no Firefox support.”
109. Cenários
de Aceitação
1. Usuário do ecommerce
fastshop.com.br quer colocar um
produto no carrinho e calcula o
frete
● Quais seriam as validações a
serem feitas?
121. ● Implementa o padrão Page Object em Watir
WebDriver e Selenium WebDriver para Ruby
○ https://github.com/cheezy/page-object
Page Object
cheezy
gem
“...facilitate creating abstraction layers in your
tests to decouple the tests from the item they
are testing and to provide a simple interface to
the elements on a page.”
122. ● ATDD - Acceptance Testing Driven Development
● Linguagem simples para interagir com o conteúdo
da página web
● Integração fácil com rspec e cucumber
Page Object
cheezy
gem
123. ● A Simple way of dealing with Frames and iFrames
● Robust way of dealing with Ajax Calls
● A clean way of handling Javascript Popups
● Support for most html Elements
Page Object
cheezy
gem