Escolar Documentos
Profissional Documentos
Cultura Documentos
Praticas e Tendencias em Testes Thoughtworks PDF
Praticas e Tendencias em Testes Thoughtworks PDF
Praticas e Tendencias em Testes Thoughtworks PDF
TENDNCIAS
EM TESTE
Um conjunto de experincias
entregando software de alta qualidade
2015
compartilhe este ebook
AUTORES
DANIEL
AMORIM
MARCOS
BRIZENO
NEIL PHILIP
CRAVEN
RAFAEL
GARCIA
RAQUEL
LIEDKE
MAX
LINCOLN
LUCAS
MEDINA
FABIO
PEREIRA
NICHOLAS
PUFAL
TAISE
SILVA
LEONARDO
STEFFEN
RODRIGO
TOLLEDO
JURACI
VIEIRA
CONTEDO
6 regras de ouro para ser um QA arretado* . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Testador gil 3.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Preveno de defeitos usando tcnicas geis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Mockar ou no mockar, eis a questo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3 noes bsicas essenciais para a criao de uma sute de automao para aplicativos web. . . . . . . . . 20
Escreva testes melhores em 5 passos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Trs falcias sobre BDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Apenas execute o build novamente - ele deve ficar verde. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Entrega Contnua com build quebrado e conscincia limpa. . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
Melhorando a qualidade de projetos atravs do poder das nuvens. . . . . . . . . . . . . . . . . . . . . . . . 38
Melhoria da qualidade com a nuvem - parte II. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Protractor: testando aplicaes angularJS com uma soluo integradora . . . . . . . . . . . . . . . . . . . . 47
Protractor na prtica em 3 passos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Gatling: uma ferramenta de testes de performance. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
Alternativas ao Testflight para Android . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
OK, O CDIGO DE
TESTE TESTA O CDIGO
FUNCIONAL.
MAS QUEM TESTA
O CDIGO DE TESTE?
Anos atrs, seguidamente me faziam tal pergunta. E eu me
enrolava todo tentando responder. Eram os anos iniciais de
mtodos geis. TDD e integrao contnua ainda eram novidade
para a maioria das pessoas nas conferncias de TI. E eu ali,
tentando falar de um pedacinho da parte visvel do iceberg.
Nessa poca, a indstria de software j se sentia evoluda. UML,
base de dados relacional, Java (escreva uma vez e execute em
qualquer lugar!). Ah, e os cargos. Todos bem definidos e de acordo
com as fases de desenvolvimento de software. Analista do negcio,
desenvolvedor e testador. E, para garantir o sucesso, arquitetos e
gerentes.
PAULO CAROLI
6 REGRAS DE OURO
PARA SER UM QA
ARRETADO*
Leonardo Steffen
Desde que voc saiba por que quebrou. Se voc no sabe, preste
ateno nos princpios # 1, # 2 e # 3. Pergunte-se: nossa pipeline
de build realmente uma pipeline? ou possvel saber quais
alteraes de cdigo esto envolvidas nessa falha?.
TESTADOR
GIL 3.0
Daniel Amorim
Dimenso de negcio
Dimenso tcnica
Dimenso de DevOps
Eles usam task runners para que o time execute tarefas repetitivas
sem muito esforo, tais como auto watches para executar
testes automatizados depois de cada vez que algum salva
o cdigo fonte. Isso diminui o tempo de feedback durante o
desenvolvimento de novas funcionalidades.
Livro que todos os QAs geis deveriam ler (que a atual bblia do
Agile Testing)
Agile Testing: A Practical guide for Testers and Agile Teams
E voc? Onde voc est nessas dimenses? Em qual delas voc
tem interesse em melhorar?
...e vamos comear!
PREVENO DE
DEFEITOS USANDO
TCNICAS GEIS
Lucas Medina & Raquel Liedke
MOCKAR OU
NO MOCKAR,
EIS A QUESTO
Fabio Pereira
3 NOES BSICAS
ESSENCIAIS PARA A
CRIAO DE UMA SUTE
DE AUTOMAO PARA
APLICATIVOS WEB
Taise Silva
Fonte: Traduo da imagem do livro The Cucumber Book: BehaviourDriven Development for Testers and Developers, by Matt Wynne and Aslak
Hellesy
A face de negcio definida dentro de um arquivo de funcionalidade
com a extenso .feature. Ela contm a descrio da funcionalidade
e os cenrios com os passos escritos em linguagem natural, como o
portugus. Por exemplo:
Fonte: https://github.com/taisedias/selenium-cucumber
Automatizar testes
A face de negcio por si s no um teste automatizado
executvel que exercita a funcionalidade da aplicao (que pode
ser Web, Android ou WebService). A fim de torn-la executvel,
Cucumber tem uma face de tecnologia que consiste em definies
de passo, cdigo de suporte e de biblioteca automao. A
definio do passo implementada utilizando uma linguagem
de programao para cada passo do cenrio nos arquivos de
funcionalidades. Esse cdigo usa uma biblioteca de automao
de teste, como Selenium ou Watir (outro exemplo de WebDriver
usado com Ruby), para acessar a aplicao e executar os testes
automatizados.
Fonte: http://www.slideshare.net/taisedias/cucumber-qanight
O exemplo seguinte mostra a face de tecnologia implementada
em Java. Cada mtodo Java uma definio do passo descrito
no arquivo de funcionalidade do exemplo anterior. O corpo do
mtodo usa o cdigo de suporte que chama a biblioteca de
automao, que chama o Selenium, que contm o WebDriver que,
finalmente, vai acessar a aplicao:
identificadores para o driver usar. Esse deve ser o nico lugar onde
o identificador registrado.
Concluso
ESCREVA TESTES
MELHORES EM 5
PASSOS
Marcos Brizeno
ter cdigo limpo. O mesmo pricpio deve ser aplicado para cdigo
de testes. O feedback fraco que voc recebe de uma sute de teste
suja no lhe permite saber quando voc quebrou algum teste ou
se basta executar a sute novamente.
Este artigo de Robert Martin (Uncle Bob) apresenta uma boa
discusso sobre tratar cdigo de teste como cdigo de produo.
Ele tambm dedicou um captulo inteiro do livro Clean Code para
falar sobre Testes Unitrios. Testes so uma das ferramentas mais
poderosas para alcanar flexibilidade, ento devem ser robustos
e limpos. Mudanas acontecem todos os dias e precisamos estar
preparados.
A melhor caracterstica para testes limpos a legibilidade. Se voc
pode ler e entender um caso de teste, voc sabe como o cdigo
funciona, como as regras de negcios so aplicadas e consegue
achar o que est quebrado. Eu prefiro ter cdigos de teste que
sejam claros do que cdigos sem repetio, conhecidos como
DRY - Dont Repeat Yourself (no entanto as ferramentas atuais
permitem alcanar ambos). Ter cdigo legvel o objetivo principal.
Concluso
Alm dos pontos discutidos aqui, tem muito mais informao sobre
TDD (a srie recente de Google Hangouts por Martin, DHH e Kent
sobre as vantagens e desvantagens do TDD, chamada de Is TDD
Dead bem esclarecedora), BDD, ADD e vrias outras maneiras de
abordar design de software e testes automatizados. Eu realmente
gosto do fluxo de desenvolver testes, pensando sobre design
e implementao que TDD e BDD do, bem como mantendo a
ateno na qualidade do cdigo de teste. Mas depende de voc
achar qual funciona melhor no seu contexto.
Como dito antes, mesmo no sendo uma lista completa, ela vai
prover informaes suficientes para continuar a ler e aprender
mais sobre testes. E, no importa qual caminho siga, vai ser uma
experincia de aprendizado til.
TRS
FALCIAS
SOBRE BDD
Nicholas Pufal e Juraci Vieira
APENAS EXECUTE O
BUILD NOVAMENTE ELE DEVE FICAR VERDE
Neil Philip Craven
2. No os ignore, conserte-os.
ENTREGA CONTNUA
COM BUILD
QUEBRADO E
CONSCINCIA LIMPA
Lucas Medina
perfeitamente.
Lembra das flags de funcionalidade? Pois , enquanto as
estrias estavam sendo desenvolvidas, o ambiente em preview
era onde as histrias que estavam escondidas no ambiente de
pr-produo eram testadas.
Por fim, produo era onde a festa acontecia. Era o ambiente
no qual o cliente usava a aplicao.
MELHORANDO
A QUALIDADE DE
PROJETOS ATRAVS DO
PODER DAS NUVENS
Max Lincoln
O que a nuvem?
Existem algumas poucas definies de nuvem que eu acredito
serem teis.
A primeira, do Gartner Group, descreve um caso singular de
utilizao que uma tima forma de promover qualidade da
nuvem:
#2 Funcionalidades
Funcionalidades so caractersticas adicionais para tornar um
produto ou servio mais atraente e entregar mais valor para
o usurio. Todavia, essa apenas uma hiptese at que voc
ponha a funcionalidade na frente de usurios reais e valide seu
valor. Funcionalidade que bem testada mas no til no uma
funcionalidade, uma inutilidade de alta qualidade. A nuvem
pode te ajudar a no tornar seu produto bloated e rapidamente
testar quais funcionalidades esto implementadas corretamente.
a. Ferramentas na nuvem permitem que voc sempre tenha poder
de teste suficiente.
Para testar funcionalidades rapidamente, voc pode tirar
vantagem das caractersticas elsticas da nuvem. Voc pode usar
ferramentas como [jclouds-jenkins] para se certificar que seu
pipeline de Entrega Contnua pode lidar com um pico em commits
sem ficar sem mquinas. Voc pode usar ferramentas como
Vagrant (com sua escolha de providers como VMWare ou vagrantrackspace, e provisionamento com Puppet, Chef ou Ansible) para
rapidamente criar um ambiente de testes e destru-lo assim que os
testes terminarem. Voc tambm pode usar servios de teste Saas,
como SauceLabs, Appium, Xamarin, Appium ou Soasta, para tornar
a execuo de testes mais rpida atravs de paralalizao ou
mais abrangente rodando contra vrios browsers ou dispositivos
mveis.
b. Os vrios modelos *aaS lhe do vrias opes de contruir-vscomprar. IaaS toma controle completo, PaaS lhe permite evitar
algumas decises arquiteturais, DBaas, Logging-as-a-Service,
etc. deixam certo aspecto de sua aplicao a cargo de um
fornecedor.
Uma estratgia para evitar desperdcio manter sua aplicao
MELHORIA DA
QUALIDADE COM A
NUVEM - PARTE II
Max Lincoln
Durabilidade
Durabilidade mede a extenso de vida do produto. Quando um
produto pode ser reparado, torna-se mais difcil estimar sua
Serviciabilidade
Serviciabilidade (ou Recuperabilidade) a velocidade com a qual
um produto pode ser colocado em servio quando danificado,
bem como a competncia e o comportamento do tcnico de
manuteno.
A nuvem incrivelmente fcil de ser mantida e nos possibilita
construir sistemas e produtos, de TI como servio, de uma maneira
jamais anteriormente criada. Mais uma vez, a caracterstica de selfservice da nuvem extremamente importante, como um recurso
de pooling. Se precisamos executar uma mudana ou manuteno
em um servio, ns podemos simplesmente remov-lo do pool,
repar-lo e recoloc-lo em servio.
1. Reduzir downtime e evitar janelas de manuteno para
deploy s 3am
Tcnicas como Blue/Green deployments so fceis na nuvem.
Essa uma estratgia de deploy na qual voc tem o balanceador
de carga com dois pools: azul e verde. Somente um pool est
ativo por vez, e voc pode fazer deploys com zero downtime
utilizando a alternncia entre os dois pools. Ento, se o pool azul
est ativo, voc faz o deploy das suas mudanas no pool inativo,
nesse caso o verde. Uma vez que voc rodou seu smoke test nos
servidores verde, voc pode desativar o pool azul e ativar o pool
verde. Se acontecer qualquer downtime, dever ser de cerca de
um segundo. Voc ento monitora seus sistemas e o feedback de
usurios para verificar quaisquer sinais de problemas. No primeiro
sinal de problema, voc s precisa trocar novamente para o pool
azul. Novamente, isso s durar um segundo. Voc no reverteu
e perdeu todas as suas mudanas do pool verde - voc s esta
comprando mais tempo para poder investigar os problemas
que foram apontados. E se voc determinar que um problema
mnimo ou um alarme falso, voc pode dar uma segunda chance
ao pool verde.
2. ... Ou considere iniciar um substituto
O padro azul/verde o mais fcil para visualizar, implementar e
zerar o downtime de deploy dos sistemas, mas h outras opes.
Algumas organizaes aplicam algo parecido com o padro
azul/verde, mas revertem para o seu sistema em um site de
Esttica
Esttica a medida subjetiva que indica como um usurio
responde a um produto. Ela representa uma preferncia pessoal.
Concordo que a nuvem pouco faz para embelezar o seu site.
Apesar disso, ambientes e servios na nuvem ainda assim so
Qualidade percebida
A percepo da qualidade uma qualidade atribuda a um bem ou
servio baseada em medidas indiretas como histria do produto.
O seu site pode estar livre de problemas agora, mas se voc teve
um monte de problemas no passado seus usurios ainda podem
estar com a sensao de que seu site de baixa qualidade. No
apenas o nmero de bugs que voc teve mas tambm o quo
rpido voc os corrigiu.
O uso da nuvem, combinado com Entrega Contnua, torna mais
fceis e rpidas a reproduo, correo e lanamento da correo
de bugs. Torna tambm mais fcil lanar novas funcionalidades e
melhorias baseadas em feedback do usurio.
PROTRACTOR:
TESTANDO APLICAES
ANGULARJS COM UMA
SOLUO INTEGRADORA
Daniel Amorim
PROTRACTOR
NA PRTICA
EM 3 PASSOS
Daniel Amorim
Passo 1 - Instalando
Passo 2 - Configurando
Existem vrios parmetros que permitem a voc configurar o
Protractor. Abaixo eu descrevo alguns que penso serem os mais
importantes.
SeleniumAddress: Permite informar uma URL do Selenium
Server que o Protractor usar para executar os testes. Nesse
caso o Selenium Server deve estar previamente iniciado antes
de rodar os testes no Protractor.
SeleniumServerJar: Permite informar o caminho do arquivo
.jar do SeleniumServer. Caso esse parmetro seja utilizado,
o Protractor ir controlar a inicializao e a finalizao do
Selenium Server, no sendo necessrio iniciar o Selenium
Server antes de executar o Protractor.
SauceUser e SauceKey: Caso informados o Protractor ir
ignorar o parmetro SeleniumServerJar e ir executar os testes
contra um Selenium Server no SauceLabs.
Specs: Um array de arquivos de testes pode ser passado
atravs do parmetro specs, o qual o Protractor ir executar.
O caminho dos arquivos de teste deve ser relativo ao arquivo
de configurao.
seleniumArgs: Permite passar parmetros para Selenium caso
o Protractor inicialize-o atravs do SeleniumServerJar.
capabilities: Parmetros tambm podem ser passados para
o WebDriver atravs do capabilities, onde informado o
browser contra qual o Protractor vai executar os testes.
baseUrl: Uma URL de acesso padro pode ser passada
para o Protractor atravs do parmetro baseUrl. Com isso
toda a chamada feita para um browser ser para essa URL
especificada.
framework: O framework de testes e de assertions que ser
utilizado pelo Protractor pode ser determinado pelo parmetro
framework. Para este existem as seguintes opes: Jasmine,
Cucumber e Mocha.
GATLING: UMA
FERRAMENTA
DE TESTES DE
PERFORMANCE
Rodrigo Tolledo
ALTERNATIVAS AO
TESTFLIGHT PARA
ANDROID
Rafael Garcia
Como voc deve ter ouvido falar, o Testflight est dando fim ao
seu suporte para Android em 21 de maro de 2014, mas no se
preocupe, pois mostraremos algumas alternativas ao Testflight
para que voc possa escolher a ferramenta mais adequada s suas
necessidades.
Implantao contnua.
Possui verso mobile para instalar verses.
HockeyApp
Appaloosa
TestFairy
Play Store
Apphance
Verso mobile:
Testflight (https://testflightapp.com/)
Verso mobile:
Custo: Free
HockeyApp (http://hockeyapp.net/)
a verso hospedada do projeto open source HockeyKit. Um pouco
confuso de entender o fluxo de uso no comeo, mas tem um bom
custo-benefcio no quesito funcionalidades.
Appaloosa (http://www.appaloosa-store.com/)
TestFairy (http://testfairy.com/)
Boa interface, simples de usar, vrios relatrios, d suporte s apps
com SDK do Testflight. Peca por no ter uma verso mobile, mas,
segundo o suporte do site, esto trabalhando nisso e pretendem
lanar uma app nativa em pouco tempo, ento fique de olho.
Custo: Free.
Verso mobile: Ainda no possui.
Permisso individual para testadores: Selecione os usurios que
quer convidar para testar sua app
Custo: cobrada uma taxa de registro. Veja como criar seu Google
Play Developer Console.
Apphance (http://www.utest.com/apphance)
ENTRE EM CONTATO
thoughtworks.com