#FrontInBH @marinalimeira_

Ois,
me chamo Marina :)

marinalimeira.com


       

Qualidade de Software: wat?

Avisos

  • Já trabalhei como QA
  • Muitos conceitos ~aka sem códigos
  • Baseado na minha XP, você pode concordar ou discordar e compartilhar seus pontos de vista :)

Qualidade pra quem..?

Produto

Atende os requisitos?

UX

O usuário sabe usar sem precisar de um manual?

Infra

Teve downtime?

Você

Tá usando <insira-framework-legal-aqui>?

Quality Assurance

  • A feature funciona?
  • Se abrir uma tela com 1903192 itens do BD, o servidor vai cair?
  • Funciona no Windows XP com o IE6?
  • Testes manuais de regressão

Não é papel de ninguém fazer teste manual de regressão a cada deploy em produção,

principalmente se seu time faz Entrega Contínua :)

✰ AUTOMATIZA TUDO ✰

Nosso trabalho hoje é automatizar algo pro usuário

Tretas que queremos evitar

  • Daqui a 1 mês, ainda funciona?
  • Refatorei, e agora?
Código legado é um código sem testes automatizados.
Michael C. Feathers

Unitários

  • Sem dependências externas
  • Rápidos
  • Independente do resto da aplicação, esse trecho de código funciona como eu quero?

Unitários

  • É aqui que você checa todas possibilidades de erro
  • Sensíveis demais a alteração de código
  • Ótimo para manter como documentação!

Integração

  • É aqui que você chama a API do back-end, ElasticSearch e afins
  • Não tão rápido quanto os testes unitários
  • Verifica se seu código inteiro funciona como esperado
  • Ótimo para manter como documentação!!

Interface/aceitação

  • Satisfazem regras de negócio
  • Automatizar testes de regressão <3
  • Vai. Demorar. Muito.

Interface/aceitação

  • Custoso demais para testar todos os caminhos possíveis
  • Sensível a alterações de tela
  • Ótimo para manter como documentação!!!

Ferramentas

  • protractor (angular.js)
  • nightwatch.js
  • nightmare
  • appium (apps!)

Webdrivers

webdriver.io
selenium

Headless Browsers

firefox
chrome
phantomjs
            
<div class="list-group-item">
  <div class="row table-row">
    <div class="col-xs-8">
      <a href="#" class="openDetails" data-audit="...">
        <b>Autenticação do usuário</b> - Login
      </a><br>
      Usuário realizou login na plataforma.
    </div>
    <div class="col-xs-4">
      <b>Marina Limeira</b><br>
      marina@mailinator.com
    </div>
  </div>
</div>
            
          

Objetivo: clicar no link específico do usuário

            
<div class="list-group-item">
  <div class="row table-row">
    <div class="col-xs-8">
      <a href="#" class="openDetails" data-audit="...">
        <b>Autenticação do usuário</b> - Login
      </a><br>
      Usuário realizou login na plataforma.
    </div>
    <div class="col-xs-4">
      <b>Marina Limeira</b><br>
      marina@mailinator.com
    </div>
  </div>
</div>
            
          
            
driver.findElement(By.xpath('//div/b[contains(text(),"Marina Limeira")]/
../preceding-sibling::div/a')).click();
            
          

Tá tudo bem se a gente alterar o código, não vai atrapalhar a vida de ninguém

            
<div class="list-group-item">
  <div class="row table-row">
    <div class="col-xs-8">
      <a href="#" class="openDetails" data-user-id="1234" data-audit="...">
        <b>Autenticação do usuário</b> - Login
      </a><br>
      Usuário realizou login na plataforma.
    </div>
    <div class="col-xs-4">
      <b>Marina Limeira</b><br>
      marina@mailinator.com
    </div>
  </div>
</div>
            
          
            
driver.findElement(By.xpath('//a[@data-user-id="1234"]')).click();
            
          

Behavior Driven Development

Ferramenta de Testes ou de Documentação?

Quando eu clico em Abrir Carrinho
E seleciono o item Dinossauro
O valor total da compra é R$ 23,40

Cucumber + Selenium

            
When(/^Quando eu clico em (.*)$/, function (elementName) {
  driver.findElement(By.name(elementName)).click();
});

...

Then(/^O valor total da compra é R$ (.*)$/, function(total) {
    expect(driver.findElement(By.css('div#total')).getText())
    .to.be.eql(total);
});
            
          

Se você vai documentar, vai documentar pra quem?

Na dúvida, faz o teste e vê no que dá

Métricas

codecov.io
istanbul
medium.com/bionexo - estamos contratando! :D

Obrigada!

marinalimeira.com