6. 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
7.
8. 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
12. 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 ]
24. 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.
25. 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.
26. 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
27. 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.
28. 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
29. 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.
30. 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.
31. 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
32. 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
33. 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 "Teams List" end Then /^should go to the team list page$/ do visit teams_path end
34. 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.