Testes Automatizados em Ruby on Rails
Upcoming SlideShare
Loading in...5
×
 

Testes Automatizados em Ruby on Rails

on

  • 3,246 views

Apresentação da defesa de monografia de Testes automatizados em Ruby on Rails

Apresentação da defesa de monografia de Testes automatizados em Ruby on Rails

Statistics

Views

Total Views
3,246
Views on SlideShare
2,485
Embed Views
761

Actions

Likes
5
Downloads
40
Comments
0

2 Embeds 761

http://thiagocifani.wordpress.com 759
url_unknown 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Testes Automatizados em Ruby on Rails Testes Automatizados em Ruby on Rails Presentation Transcript

    • Introdução a Testes Automatizados em Ruby On Rails Thiago Cifani Ayres Escola
    • Tópicos
      • Histórico
        • Manifesto Ágil
      • Tecnologias Utilizadas
        • Ruby
        • Rails
      • Testes Automatizados
        • Ruby On Rails
        • TDD
        • BDD
          • Rspec
          • Cucumber
      Introdução a Testes Automatizados em Ruby On Rails
    • Manifesto Ágil Introdução a Testes Automatizados em Ruby On Rails Fonte: http://scrumex.com.br/blog/?p=28
    • Tecnologias Utilizadas Introdução a Testes Automatizados em Ruby On Rails
    • Introdução a Testes Automatizados em Ruby On Rails
      • Criada em 1995 por Yukihiro Matsumoto (Matz)
      • Linguagem de Script
      • Linguagem com Tipagem Dinâmica
      • Sintaxe Enxuta
      • Tudo é objeto
      • Baseada em ADA, LISP, SmallTalk , Python, Perl
      • Versão Atual 1.9.2
      • RVM ( Ruby Virtual Mananger )
      • RubyGems
    • Introdução a Testes Automatizados em Ruby On Rails # A classe Saudação class Saudacao    def initialize(name)      @name = name.capitalize    end      def sauda      puts "Olá #{@name}!"    end end   # Criar um novo objeto ola = Saudacao.new("mundo")   # Saída: "Olá Mundo!" ola.sauda 3.times { print “thiago” } #saída : thiago thiago thiago [‘um’,‘dois’,‘tres’].each {|num| puts num.capitalize } #saida Um Dois Tres “ thiago”.reverse #saída: ogaiht 1.upto(5) { |x| puts x } #saída: 1 2 3 4 5 # Declaração de Classes # Simplicidade # Legibilidade # Agilidade # Sintaxe Enxuta
    • Introdução a Testes Automatizados em Ruby On Rails
      • Criado em 2005 por David Hanemeier Hannson (DHH)
      • BaseCamp
      • Facilitar o desenvolvimento Web
      • CoC (Convention over Configuration)
      • DRY ( Don’t Repeat Yourself)
      • KISS ( Keep it Simple Stupid )
    • Introdução a Testes Automatizados em Ruby On Rails <h1>Users#show</h1> <p>User: <%= @user . name %> </p> <p>Email: <%= @user . email if @user . email %> </p> class UsersController < ApplicationController       def show      @user = User . find(params [ :id ] )    end end # Model # Controller # View class User < ActiveRecord::Base has_many :teams end user.rb users_controller.rb show.html.erb
    • Testes Automatizados Introdução a Testes Automatizados em Ruby On Rails
    • Testes em Rails
      • Teste Unitário
      • test “produto.nome deve ser igual a camisa” do
      • @produto = produto.new
      • assert_equal “camisa”, @produto.nome
      • end
      Introdução a Testes Automatizados em Ruby On Rails should &quot;get new&quot; do      get :new      assert_response :success    end
      • Teste de Controlador
    • Testes em Rails
      • Fixtures
      • redcross:
      •    id: 1
      •    name: Red Cross
      •    name_slug: red-cross
      •    contact: lalala
      •    city: Springfield
      •    city_slug: springfield
      •    country: USA
      •    needs: Lots of rice
      •    password: 1
      •    email: a@a.a
      •    announcer: announcer
      Introdução a Testes Automatizados em Ruby On Rails Fonte: https://github.com/thoughtworks/letshelp.it/blob/master/test/fixtures/organizations.yml
    • TDD Introdução a Testes Automatizados em Ruby On Rails Test Driven Development é uma prática de desenvolvimento que envolve escrever teste antes de escrever código a ser testado. Começa escrevendo um pequeno teste para o código que ainda não existe. [ CHE, 2010 ]
    • TDD Introdução a Testes Automatizados em Ruby On Rails
    • TDD Introdução a Testes Automatizados em Ruby On Rails
      • Escreva um teste que falhe
      require 'spec_helper' describe Team do end team_spec.rb
    • TDD Introdução a Testes Automatizados em Ruby On Rails
      • Saída do Teste
      /home/thiagocifani/.rvm/gems/ruby-1.9.2-p180/gems/rspec-core-2.5.2/lib/rspec/core/backward_compatibility.rb:20:in `const_missing': uninitialized constant Team (NameError)
    • TDD Introdução a Testes Automatizados em Ruby On Rails
      • Faça o mínimo para fazê-lo passar
      class Team < ActiveRecord::Base end # Saída Finished in 0 seconds 0 examples, 0 failures
    • TDD Introdução a Testes Automatizados em Ruby On Rails
      • Escreva um teste que falhe
      describe Team do it &quot;should not save a Team with blank name&quot; do @team = Team.new(:name => &quot;&quot;) @team.should_not be_valid end end team_spec.rb
    • TDD Introdução a Testes Automatizados em Ruby On Rails
      • Saída do Teste
      F Failures: 1) Team should not save a Team with blank name Failure/Error: @team.should_not be_valid expected valid? to return false, got true # ./spec/models/team_spec.rb:7:in `block (2 levels) in <top (required)>' Finished in 0.04004 seconds 1 example, 1 failure rake aborted!
    • TDD Introdução a Testes Automatizados em Ruby On Rails
      • Faça o mínimo para fazê-lo passar
      class Team < ActiveRecord::Base validates_presence_of :name end . Finished in 0.04472 seconds 1 example, 0 failures # Saída
    • TDD Introdução a Testes Automatizados em Ruby On Rails
      • Refatore se possível
      describe Team do it &quot;should not save a Team with blank name&quot; do @team = Team.new(:name => &quot;&quot;) @team.should_not be_valid end end
    • TDD Introdução a Testes Automatizados em Ruby On Rails
      • Refatore se possível
      describe Team do it { should validates_presence_of :name} end
    • TDD Introdução a Testes Automatizados em Ruby On Rails
      • Escreva um teste que falhe
      describe Team do it { should validates_presence_of :name} it { should validates_uniqueness_of :name} end . F Failures: 1) Team Failure/Error: it {should validate_uniqueness_of :name} Can't find first Team # ./spec/models/team_spec.rb:10:in `block (2 levels) in <top (required)>' Finished in 0.13438 seconds 2 examples, 1 failure rake aborted!
    • TDD Introdução a Testes Automatizados em Ruby On Rails
      • Faça o mínimo para fazê-lo passar
      class Team < ActiveRecord::Base validates_presence_of :name validates_uniqueness_of :name end .. Finished in 0.04472 seconds 2 example, 0 failures # Saída describe Team do before do @team = Factory(:team) end it { should validates_presence_of :name} it { should validates_uniqueness_of :name} end
    • BDD Introdução a Testes Automatizados em Ruby On Rails BDD (Behavior Driven Development) baseia-se na descrição do comportamento da aplicação baseado na opinião dos clientes.
    • BDD Introdução a Testes Automatizados em Ruby On Rails Os três princípios são: O suficiente é suficiente: Designs gigantescos, análises intermináveis. Deve-se fazer o menos possível para começar e, qualquer coisa além disso, é um desperdício. Isso também nos ajuda a pensar em sempre automatizar as tarefas repetitivas como deploy e build; Entregar algo de valor: Se você está fazendo algo que não tem valor ou não está aumentando sua habilidade de entregar valor, pare e faça outra coisa; Tudo é comportamento: Independente se é em nível de codificação, aplicação ou algo além, deve-se sempre usar o mesmo pensamento e linguística de construção para descrever comportamento em qualquer nível de granularidade.
    • Rspec Introdução a Testes Automatizados em Ruby On Rails O RSpec é uma DSL (Domain-Specific Language) para especificar o comportamento desejado do código Ruby
    • Rspec Introdução a Testes Automatizados em Ruby On Rails • Subject Code : O código cujo comportamento está sendo especificando com o RSpec; • Expectation: Uma expressão de como o subject code deve se comportar; • Code Example: Um exemplo executável de como o subject code pode ser usado e como o seu comportamento esperado (expresso com expectations) em um determinado contexto; • Example group : Grupo de code examples.
    • Rspec Introdução a Testes Automatizados em Ruby On Rails require 'spec_helper' describe Team do before(:each) do @team = Factory(:team) end it {should validate_presence_of :name} it {should validate_uniqueness_of :name} it {should belong_to :user } end end end
    • Cucumber Introdução a Testes Automatizados em Ruby On Rails O Cucumber é um framework de alto nível para testes automatizados. Mais utilizado para testes de aceitação, ele permite descrever uma estória e implementar o código de acordo com essa estória.
    • Cucumber Introdução a Testes Automatizados em Ruby On Rails • Feature : Define a funcionalidade do sistema. • Scenario : Define um possível cenário da aplicação. • Given : Usado para determinar o estado da aplicação no momento que o teste é executado; • When : Usado para especificar as ações a serem executadas; • Then : Usado para especificar o resultado esperado. • And : Usa-se como adendo, podendo unir vários Given/When/Then.
    • Feature Introdução a Testes Automatizados em Ruby On Rails Feature: home As a user I want to see the teams link to go to the team list page Scenario: Go to the team list page Given I visit the home page When I click on Teams link Then should go to the team list page rake cucumber
    • Steps Introdução a Testes Automatizados em Ruby On Rails Given /^I visit the home page$/ do peding… end When /^I click on Teams link$/ do pending… end Then /^should go to the team list page$/ do pending… end
    • Steps Introdução a Testes Automatizados em Ruby On Rails Given /^I visit the home page$/ do visit root_path end When /^I click on Teams link$/ do click_link &quot;Teams List&quot; end Then /^should go to the team list page$/ do visit teams_path end
    • Conclusão Introdução a Testes Automatizados em Ruby On Rails Utilizando testes automatizados podemos garantir que o software que estamos escrevendo realmente atende a necessidade estabelecida por nosso cliente. Quando escrevemos o código e terminamos, realmente terminamos.
    • FIM Introdução a Testes Automatizados em Ruby On Rails