Prévia do material em texto
Testes de Aceitação Prof. D.Sc. Victor T. Sarinho vsarinho@gmail.com vsarinho@uefs.br Tópicos • Conceitos Iniciais • Testes de Aceitação • Frameworks de Testes de Aceitação • Behavior Driven Development (BDD) • Conclusões • Exercício Gamificado • Referências Produção de Software (Visão Cliente) Produção de Software (Visão Cliente) Produção de Software (Visão Cliente) Produção de Softwares (Visão Desenvolvedor) Produção de Softwares (Visão Desenvolvedor) Interação Cliente-Desenvolvedor Interação Cliente-Desenvolvedor Interação Cliente-Desenvolvedor “Podemos dizer o que pensamos que é certo, ou o que nos pensamos que você acha que é certo?” Solução??? Uma Sugestão!! Mas onde está o Software para Testar??? Onde??? Solução!!! O que é Aceitação? • Contrato de comum acordo entre várias partes; • Resignação de um indivíduo perante uma realidade adversa; (fonte: Wikipédia) O que são Testes de Aceitação? • Testes que verificam se o sistema atende as necessidades do cliente (usuário) – Desenvolvedor não consegue prever como o usuário realmente usará um software – Verificam se o sistema vai ser aceito pelo cliente O que são Testes de Aceitação? • Testes de aceitação podem ser: – Um test-drive informal e rápido – Testes mais planejados, executados ao longo de um período predeterminado Tipos de Testes de Aceitação • Testes de Aceitação do Usuário – Realizados pelos trabalhadores diretamente no “chão de fábrica” • Operational Acceptance Testing (OAT) – Checagem para garantir que processos e procedimentos estão no lugar correto para que o sistema possa começar a funcionar Tipos de Testes de Aceitação • Testes de Aceitação do Usuário: Tipos de Testes de Aceitação • Operational Acceptance Testing (OAT): Tipos de Testes de Aceitação • Contratos e Regulação – Sistema é checado contra critérios de aceitação em contrato, antes da aceitação final do sistema – Sistema é testado para garantir que ele segue padrões governamentais, legais e de segurança • Testes Alpha e Beta (de Campo) – Teste final realizado pela equipe interna antes de ser liberado para o mercado – Teste realizado por um grupo de consumidores selecionados Pq Testes de Aceitação? • MITO: Não é possível testar até que o sistema exista… • QUESTÃO: Não posso verificar as regras do negócio antes de produzi-lo na pratica? • FATOS: – Testar é muito mais do que apenas “ver o que vai acontecer” ou “apenas executar casos de teste”! – Documentos de requisitos podem e devem ser testados em relação aos objetivos do negócio ou projeto para assegurar completude e correção. Pq Testes de Aceitação? • MITO: Desenvolvedores devem pensar nos requisitos apenas no início do desenvolvimento, e se preocupar com testes apenas no final… • QUESTÃO: Não posso planejar previamente como o sistema vai ser testado? • FATOS: – Testadores envolvidos durante a análise de requisitos é uma das melhores formas de se assegurar requisitos de boa qualidade – Trocas tardias nos requisitos causam impacto nos testes – Fundamental envolver usuários nos requisitos e nos testes! Pq Testes de Aceitação? • MITO: Requisitos são utilizados no teste, mas não o contrário… • QUESTÃO: Testes não eliminam problemas em requisitos mal projetados? • FATOS: – Você não testa requisitos, mas testa a partir deles! – É fácil escrever requisitos vagos ou ambíguos, que parecem estar ok. – Uma boa engenharia de requisitos produz melhores testes, e uma boa análise de testes melhora os requisitos! Pq Testes de Aceitação? • MITO: Se escrever testes é difícil, isto é somente um problema dos testadores… • QUESTÃO: Testador agora sabe mais sobre o sistema do que o resto da equipe? • FATOS: – Nem todos os requisitos são criados de acordo com a mesma perspectiva do testador. • Para alguns dos requisitos fica fácil definir o teste, para outros um verdadeiro pesadelo! – Especificar requisitos não funcionais testáveis tais como usabilidade ou desempenho é difícil Pq Testes de Aceitação? • MITO: Os testadores não precisam dos requisitos… • QUESTÃO: Se uma especificação de requisitos representa o oráculo para o plano de testes, do que os testadores precisam então? • FATOS: – O sistema deve apoiar o negócio a atingir um objetivo, então o que o sistema realmente faz deve ser comparado com este objetivo. – Sim, testadores precisam dos requisitos, caso contrário, você poderia argumentar que o que vem sendo executado não é realmente um teste! Quando Executar Testes de Aceitação? Sub-system testing Module testing Unit testing System testing Acceptance testing Component testing Integration testing User testing Quando Executar Testes de Aceitação? Requirements specification System specification System design Detailed design Module and unit code and tess Sub-system integration test plan System integration test plan Acceptance test plan Service Acceptancetest System integration test Sub-system integration test Modelo V de Desenvolvimento: Quando Executar Testes de Aceitação? Modelo Ágil de Desenvolvimento: Quando Executar Testes de Aceitação? Como Executar Testes de Aceitação? • Frameworks de Testes de Aceitação: ● Selenium ● FitNesse ● ItsNat ● Ranorex ● Robot Framework ● Test Automation FX ● Watir ● ... Selenium Selenium public static void main(String[] args) { WebDriver driver; ... driver = new FirefoxDriver(); String baseUrl = "http://newtours.demoaut.com"; String expectedTitle = "Welcome: Mercury Tours"; String actualTitle = ""; driver.get(baseUrl); actualTitle = driver.getTitle(); if (actualTitle.contentEquals(expectedTitle)){ System.out.println("Test Passed!"); } else { System.out.println("Test Failed"); } driver.close(); System.exit(0); } Selenium package newproject; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; public class PG2 { public static void main(String[] args) { System.setProperty("webdriver.firefox.marionette","C:\\geckodriver.exe"); WebDriver driver = new FirefoxDriver(); String baseUrl = "http://www.facebook.com"; String tagName = ""; driver.get(baseUrl); tagName = driver.findElement(By.id("email")).getTagName(); System.out.println(tagName); driver.close(); System.exit(0); } } Selenium Selenium Selenium FitNesse FitNesse FitNesse Behavior Driven Development (BDD) Behavior Driven Development (BDD) • Extensão do Desenvolvimento Orientado a Testes (TDD) Histórias ao invés de apenas testes codificados • Baseado em uma linguagem de script simples e específica do domínio Formulário Gherkin: https://docs.cucumber.io/gherkin/ Ferramenta colaborativa: https://hiptest.com/ Behavior Driven Development (BDD) Behavior Driven Development (BDD) Behavior Driven Development (BDD) Behavior Driven Development (BDD) Behavior Driven Development (BDD) Behavior Driven Development (BDD) Behavior Driven Development (BDD) Behavior Driven Development (BDD) Cucumber Cucumber Cucumber jBehave jBehave jBehave jBehave Conclusão Conclusão Conclusão Extra Acceptance Test Driven Development (ATDD): https://www.youtube.com/watch?v=uPgTvZO5la Y Exercício Gamificado The BDD Game: Equipes receberão uma história e 4 possíveis cenários referentes a mesma; Afirmativas para Given, When e Then serão fornecidas para serem encaixadas em cada cenário; Equipes são desafiadas para conseguirem formar em menos tempo as sentenças de cada cenário de forma correta; Ganha a equipe que conseguir formar cenários corretos antes das demais concorrentes. Referências • Somerville, I. Capítulos sobre Verificação, Validação e Testes de Software • http://en.wikipedia.org/wiki/Acceptance_testin g • Revisão e Inspeção de Software, COS722 - Engenharia de Software Orientado a Objetos, Guilherme Horta Travassos, www.cos.ufrj.br/~ght • https://docs.cucumber.io/gherkin/reference/ Testes de Aceitação Prof. D.Sc. Victor T. Sarinho vsarinho@gmail.com vsarinho@uefs.br