<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ricardo Viana&#039;s blog &#187; ufpi</title>
	<atom:link href="http://ricardo.zn.inf.br/tag/ufpi/feed/" rel="self" type="application/rss+xml" />
	<link>http://ricardo.zn.inf.br</link>
	<description>tecnologia, games, programação, web e o que mais vier à cabeça</description>
	<lastBuildDate>Thu, 26 Jan 2012 17:37:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Resultado Final &#8211; Qualidade de Software</title>
		<link>http://ricardo.zn.inf.br/2011/03/03/resultado-final-qualidade-de-software/</link>
		<comments>http://ricardo.zn.inf.br/2011/03/03/resultado-final-qualidade-de-software/#comments</comments>
		<pubDate>Thu, 03 Mar 2011 04:44:55 +0000</pubDate>
		<dc:creator>ricardo</dc:creator>
				<category><![CDATA[picos]]></category>
		<category><![CDATA[qualidade de software 2011.0]]></category>
		<category><![CDATA[ufpi]]></category>
		<category><![CDATA[2011.0]]></category>
		<category><![CDATA[qualidade de software]]></category>

		<guid isPermaLink="false">http://ricardo.zn.inf.br/?p=806</guid>
		<description><![CDATA[Segue o resultado final de qualidade de software: https://spreadsheets.google.com/pub?hl=pt_BR&#038;hl=pt_BR&#038;key=0AmnBYRO7YynedDIyaDN3XzhLaVZ0QTd3R21iTkpmaXc&#038;single=true&#038;gid=0&#038;output=html Quem ficou de final deve refazer o que está errado no trabalho final e entregar nesta quinta (03/03/2011), pois tenho que digitar as notas de vocês. Qualquer dúvida perguntem pelo blog ou por e-mail. []&#8216;s Ricardo Viana]]></description>
			<content:encoded><![CDATA[<p>Segue o resultado final de qualidade de software:</p>
<p><a href="https://spreadsheets.google.com/pub?hl=pt_BR&#038;hl=pt_BR&#038;key=0AmnBYRO7YynedDIyaDN3XzhLaVZ0QTd3R21iTkpmaXc&#038;single=true&#038;gid=0&#038;output=html">https://spreadsheets.google.com/pub?hl=pt_BR&#038;hl=pt_BR&#038;key=0AmnBYRO7YynedDIyaDN3XzhLaVZ0QTd3R21iTkpmaXc&#038;single=true&#038;gid=0&#038;output=html</a></p>
<p>Quem ficou de final deve refazer o que está errado no trabalho final e entregar nesta quinta (03/03/2011), pois tenho que digitar as notas de vocês.</p>
<p>Qualquer dúvida perguntem pelo blog ou por e-mail.</p>
<p>[]&#8216;s<br />
Ricardo Viana</p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.zn.inf.br/2011/03/03/resultado-final-qualidade-de-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Video tutorial iniciando com cucumber</title>
		<link>http://ricardo.zn.inf.br/2011/02/09/video-tutorial-iniciando-com-cucumber/</link>
		<comments>http://ricardo.zn.inf.br/2011/02/09/video-tutorial-iniciando-com-cucumber/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 14:49:52 +0000</pubDate>
		<dc:creator>ricardo</dc:creator>
				<category><![CDATA[cucumber]]></category>
		<category><![CDATA[picos]]></category>
		<category><![CDATA[qualidade de software 2011.0]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ufpi]]></category>
		<category><![CDATA[2011.0]]></category>
		<category><![CDATA[qualidade de software]]></category>

		<guid isPermaLink="false">http://ricardo.zn.inf.br/?p=803</guid>
		<description><![CDATA[Para quem está com dúvidas, não conseguindo gerar o início para trabalhar com cucumber. Quem ainda tiver dúvidas, entre em contato. []&#8216; Ricardo Viana]]></description>
			<content:encoded><![CDATA[<p>Para quem está com dúvidas, não conseguindo gerar o início para trabalhar com cucumber.</p>
<p><iframe title="YouTube video player" width="480" height="390" src="http://www.youtube.com/embed/lyWYE474-Cg" frameborder="0" allowfullscreen></iframe></p>
<p>Quem ainda tiver dúvidas, entre em contato.</p>
<p>[]&#8216;<br />
Ricardo Viana</p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.zn.inf.br/2011/02/09/video-tutorial-iniciando-com-cucumber/feed/</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>Trabalho Final (Qualidade de Software)</title>
		<link>http://ricardo.zn.inf.br/2011/02/07/trabalho-final/</link>
		<comments>http://ricardo.zn.inf.br/2011/02/07/trabalho-final/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 12:34:13 +0000</pubDate>
		<dc:creator>ricardo</dc:creator>
				<category><![CDATA[picos]]></category>
		<category><![CDATA[qualidade de software 2011.0]]></category>
		<category><![CDATA[ufpi]]></category>
		<category><![CDATA[2011.0]]></category>
		<category><![CDATA[qualidade de software]]></category>

		<guid isPermaLink="false">http://ricardo.zn.inf.br/?p=800</guid>
		<description><![CDATA[Segue a especificação do trabalho final: Deve ser feito em duplas e entregue até o dia 27/02/2011, sem prorrogações. A entrega será por e-mail. Trabalho Final &#8211; Especificação (PDF) Boa sorte e bom trabalho. []&#8216;s Ricardo Viana]]></description>
			<content:encoded><![CDATA[<p>Segue a especificação do trabalho final:</p>
<p>Deve ser feito em duplas e entregue até o dia 27/02/2011, sem prorrogações. A entrega será por e-mail.</p>
<p><a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/02/trabalho.final_.pdf'>Trabalho Final &#8211; Especificação (PDF)</a></p>
<p>Boa sorte e bom trabalho.</p>
<p>[]&#8216;s<br />
Ricardo Viana</p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.zn.inf.br/2011/02/07/trabalho-final/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Tutorial: começando com cucumber</title>
		<link>http://ricardo.zn.inf.br/2011/02/06/tutorial-comecando-com-cucumber/</link>
		<comments>http://ricardo.zn.inf.br/2011/02/06/tutorial-comecando-com-cucumber/#comments</comments>
		<pubDate>Mon, 07 Feb 2011 02:36:38 +0000</pubDate>
		<dc:creator>ricardo</dc:creator>
				<category><![CDATA[bdd]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[picos]]></category>
		<category><![CDATA[qualidade de software 2011.0]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ufpi]]></category>
		<category><![CDATA[2011.0]]></category>
		<category><![CDATA[qualidade de software]]></category>
		<category><![CDATA[rails tutorial]]></category>

		<guid isPermaLink="false">http://ricardo.zn.inf.br/?p=799</guid>
		<description><![CDATA[Antes de começarmos, efetuaremos uma pequena correção na biblioteca webrat. Correção essa que faltava para que o projeto funcionasse completamente em sala de aula. Baixem o arquivo a seguir http://dl.dropbox.com/u/75418/session.rb E coloquem na pasta: C:\Ruby187\lib\ruby\gems\1.8\gems\webrat-0.7.3\lib\webrat\core por cima do arquivo existente. Com tudo instalado e pronto vamos começar a pensar em BDD (desenvolvimento guiado por comportamento). [...]]]></description>
			<content:encoded><![CDATA[<p>Antes de começarmos, efetuaremos uma pequena correção na biblioteca webrat. Correção essa que faltava para que o projeto funcionasse completamente em sala de aula. Baixem o arquivo a seguir</p>
<p><a href="http://dl.dropbox.com/u/75418/session.rb">http://dl.dropbox.com/u/75418/session.rb</a></p>
<p>E coloquem na pasta: C:\Ruby187\lib\ruby\gems\1.8\gems\webrat-0.7.3\lib\webrat\core<br />
por cima do arquivo existente.</p>
<p>Com tudo instalado e pronto vamos começar a pensar em BDD (desenvolvimento guiado por comportamento). Vamos criar um projeto para efetuarmos os testes:</p>
<pre  class="brush:ruby">
rails new trabalho
</pre>
<p>Lembrando as idéias de BDD, criamos primeiro os testes, depois o códigos que resolvam aqueles testes, só depois refatoramos, ou seja, alteramos o código para, efetivamente, funcionar da maneira prevista nos requisitos.</p>
<p>Primeiramente configuramos nossa aplicação para usar o cucumber. Abrimos o arquivos Gemfile na pasta raiz do nosso projeto e, no final do arquivo, adicionaremos as seguintes linhas:</p>
<pre  class="brush:ruby">
group :development, :test do
  gem 'cucumber'
  gem 'cucumber-rails'
  gem 'webrat'
end
</pre>
<p>Após isso iremos gerar os arquivos básicos para funcionamento do cucumber, com o seguinte comando, dentro da pasta do projeto (cd trabalho):</p>
<pre  class="brush:ruby">
rails generate cucumber:install pt-BR
</pre>
<p>O parâmetro pt-BR serve para que os arquivos possam ser feitos em português do Brasil.</p>
<pre  class="brush:bash">
ricardo@linuxmint ~/trabalho $ rails generate cucumber:install pt-BR
      create  config/cucumber.yml
      create  script/cucumber
       chmod  script/cucumber
      create  features/step_definitions
      create  features/step_definitions/web_steps.rb
      create  features/step_definitions/web_steps_pt-BR.rb
      create  features/support
      create  features/support/paths.rb
      create  features/support/env.rb
       exist  lib/tasks
      create  lib/tasks/cucumber.rake
        gsub  config/database.yml
        gsub  config/database.yml
       force  config/database.yml
</pre>
<p>Antes de criar nossos testes, vamos fazer uma pequena correção em um arquivo de configuração que foi gerado. Na pasta features/support, abrimos o arquivo env.rb. Iremos alterar a linha 19, trocando o conteúdo:</p>
<pre  class="brush:ruby">
  config.mode = :rails
</pre>
<p>por:</p>
<pre  class="brush:ruby">
  config.mode = :rack
</pre>
<p>Feito isso, vamos criar nosso primeiro arquivo de história de usuário: na pasta features vamos criar um arquivo chamado pessoas.feature (.feature é a extensão padrão do cucumber para histórias de usuário). Digitaremos nele o seguinte conteúdo:</p>
<pre  class="brush:ruby">
# language: pt
Funcionalidade: Gerenciamento de pessoas
  Para efetuar o gerenciamento de pessoas
  Como um usuário cadastrado
  Eu quero cadastrar, alterar e excluir pessoas no sistema

  Cenário: Cadastro de Pessoas
    Dado que eu esteja no cadastro de pessoas
    Quando eu preencho "nome" com "Ricardo"
    E eu preencho "idade" com "24"
    E eu preencho "peso" com "88.5"
    E eu aperto "Cadastrar"
    Então eu devo ver "Pessoa cadastrado com sucesso"
    E eu devo ver "Nome: Ricardo"
    E eu devo ver "Idade: 24"
    E eu devo ver "Peso: 88.5"
    E eu devo ver "Cadastrar nova pessoa"
</pre>
<p>Com nossa história de usuário pronta, podemos executar o teste. Como não existe código ainda, os testes irão falhar. Para executar os testes executamos o comando:</p>
<pre  class="brush:ruby">
rake cucumber
</pre>
<p>O primeiro erro que acontece é:</p>
<pre  class="brush:ruby">
ricardo@linuxmint ~/trabalho $ rake cucumber
(in /home/ricardo/trabalho)
rake aborted!
Unknown database 'trabalho_development'
</pre>
<p>Isso significa que devemos criar o banco de dados, com o comando:</p>
<pre  class="brush:ruby">
rake db:create:all
</pre>
<p>rodamos o comando rake:cucumber novamente e obtemos o erro a seguir:</p>
<pre  class="brush:ruby">
ricardo@linuxmint ~/trabalho $ rake cucumber
(in /home/ricardo/trabalho)
/home/ricardo/trabalho/db/schema.rb doesn't exist yet. Run "rake db:migrate" to create it then try again. If you do not intend to use a database, you should instead alter /home/ricardo/trabalho/config/application.rb to limit the frameworks that will be loaded
</pre>
<p>Significa que devemos migrar para o banco de dados, com o seguinte comando:</p>
<pre  class="brush:ruby">
rake db:migrate
</pre>
<p>Rodando rake:cucumber novamente, conseguiremos começar a executar os teste. Nesse momento, encontraremos o seguinte erro:</p>
<pre  class="brush:ruby">
ricardo@linuxmint ~/trabalho $ rake cucumber
(in /home/ricardo/trabalho)
bundle exec /usr/bin/ruby1.8 -I "/var/lib/gems/1.8/gems/cucumber-0.10.0/lib:lib" "/var/lib/gems/1.8/gems/cucumber-0.10.0/bin/cucumber"  --profile default
Using the default profile...
U---------

1 scenario (1 undefined)
10 steps (9 skipped, 1 undefined)
0m1.360s

You can implement step definitions for undefined steps with these snippets:

Dado /^que eu esteja no cadastro de pessoas$/ do
  pending # express the regexp above with the code you wish you had
end

rake aborted!
Command failed with status (1): [bundle exec /usr/bin/ruby1.8 -I "/var/lib/...]
</pre>
<p>Esse erro nos diz que devemos criar a regra necessária para executar a primeira linha de nosso primeiro cenário. Para resolver isso devemos criar, na pasta features/step_definitions um arquivo chamado gerenciamento.rb, que conterá essa regra. Nesse arquivo colocamos o código que o cucumber nos trouxe como resultado:</p>
<pre  class="brush:ruby">
Dado /^que eu esteja no cadastro de pessoas$/ do
  pending # express the regexp above with the code you wish you had
end
</pre>
<p>alterando a linha do meio para:</p>
<pre  class="brush:ruby">
Dado /^que eu esteja no cadastro de pessoas$/ do
  visit new_pessoa_path
end
</pre>
<p>Esse comando diz ao cucumber para visitar a página de cadastro de nova pessoa (new_pessoa_path).<br />
Executando novamente rake cucumber, começará a dar erros da lógica da aplicação propriamente dita. O erro desta vez é o seguinte:</p>
<pre  class="brush:ruby">
undefined local variable or method `new_pessoa_path' for #<Cucumber::Rails::World:0x..fdb81b9fa> (NameError)
./features/step_definitions/gerenciamento.rb:2:in `/^que eu esteja no cadastro de pessoas$/'
features/gerenciamento.feature:8:in `Dado que eu esteja no cadastro de pessoas'
</pre>
<p>A causa desse erro é que não existe ainda caminho para o cadastro de pessoas. Para corrigir esse erro vamos ao arquivo config/routes.rb e colocamos o seguinte conteúdo no lugar do que já existe lá:</p>
<pre  class="brush:ruby">
Trabalho::Application.routes.draw do
  resources :pessoas
end
</pre>
<p>Esse código mapeia os caminhos (urls) para a entidade pessoas. Rodando rake cucumber novamente, encontramos o seguinte erro:</p>
<pre  class="brush:ruby">
uninitialized constant PessoasController (ActionController::RoutingError)
./features/step_definitions/gerenciamento.rb:2:in `/^que eu esteja no cadastro de pessoas$/'
features/gerenciamento.feature:8:in `Dado que eu esteja no cadastro de pessoas'
</pre>
<p>Significa que o controlador de pessoas ainda não existe. Vamos criá-lo com o seguinte comando:</p>
<pre  class="brush:ruby">
rails generate controller pessoas
</pre>
<p>Dessa forma geramos o controlador de pessoas e o erro anterior não acontecerá mais. Rodando rake:cucumber, dará o seguinte erro:</p>
<pre  class="brush:ruby">
The action 'new' could not be found for PessoasController (AbstractController::ActionNotFound)
./features/step_definitions/gerenciamento.rb:2:in `/^que eu esteja no cadastro de pessoas$/'
features/gerenciamento.feature:8:in `Dado que eu esteja no cadastro de pessoas'
</pre>
<p>Esse erro significa que não há o método new no controlador pessoas. Então, devemos criá-lo. No arquivo app/controller/pessoas_controller criamos, dentro da classe, o método new:</p>
<pre  class="brush:ruby">
class PessoasController < ApplicationController
  def new
    @pessoa = Pessoa.new
  end
end
</pre>
<p>Fazendo isso e executando rake cucumber, dará o seguinte erro:</p>
<pre  class="brush:ruby">
uninitialized constant PessoasController::Pessoa (NameError)
./app/controllers/pessoas_controller.rb:3:in `new'
./features/step_definitions/gerenciamento.rb:2:in `/^que eu esteja no cadastro de pessoas$/'
features/gerenciamento.feature:8:in `Dado que eu esteja no cadastro de pessoas'
</pre>
<p>Significa que ele não sabe o que é pessoa, ou seja, o modelo pessoa ainda não existe. Nesse momento devemos criá-lo, com o comando:</p>
<pre  class="brush:ruby">
rails generate model pessoa nome:string idade:integer peso:float
</pre>
<p>Após isso faremos a migração para o banco novamente, para que a tabela pessoa seja criada:</p>
<pre  class="brush:ruby">
rake db:migrate
</pre>
<p>Após esses comandos, executamos novamente rake cucumber e verificamos o seguinte erro:</p>
<pre  class="brush:ruby">
Missing template pessoas/new with {:formats=>[:html], :handlers=>[:erb, :builder, :rjs, :rhtml, :rxml], :locale=>[:en, :en]} in view paths "/home/ricardo/trabalho/app/views" (ActionView::MissingTemplate)
/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
./features/step_definitions/gerenciamento.rb:2:in `/^que eu esteja no cadastro de pessoas$/'
features/gerenciamento.feature:8:in `Dado que eu esteja no cadastro de pessoas'
</pre>
<p>Esse erro ocorre porque ainda não existe a visão correspondente para o usuário, ou seja, a página com o formulário para preenchimento dos dados de uma pessoa. Devemos criar esse arquivo na pasta app/views/pessoas com o nome new.html.erb e preenchê-lo com o formulário da seguinte forma:</p>
<pre  class="brush:ruby">
<h1>Nova pessoa</h1>

<%= form_for(@pessoa) do |f| %>
<div class="field">
    <%= f.label :nome %>
    <%= f.text_field :nome %>
  </div>
<div class="field">
    <%= f.label :idade %>
    <%= f.text_field :idade %>
  </div>
<div class="field">
    <%= f.label :peso %>
    <%= f.text_field :peso %>
  </div>
<div class="actions">
    <%= f.submit "Cadastrar" %>
  </div>

<% end %>
</pre>
<p>Ao terminar esse passo, o cucumber começará a passar em várias etapas, como indica a primeira linha do código abaixo.</p>
<pre  class="brush:ruby">
....F-----

(::) failed steps (::)

The action 'create' could not be found for PessoasController (AbstractController::ActionNotFound)
./features/step_definitions/web_steps.rb:24:in `/^(?:|I )press "([^"]*)"$/'
features/gerenciamento.feature:12:in `E eu aperto "Cadastrar"'
</pre>
<p>Nesse momento, a execução irá parar no momento de submeter a página, pois, por padrão, o formulário é submetido para a função (action) create, e esta ainda não existe. Dessa forma, devemos criar essa função, logo abaixo da new, da seguinte forma:</p>
<pre  class="brush:ruby">
 def create
    @pessoa = Pessoa.new(params[:pessoa])

    respond_to do |format|
      if @pessoa.save
        format.html { redirect_to(@pessoa, :notice => "Pessoa cadastrado com sucesso") }
      else
        format.html { render :action => "new" }
      end
    end
  end
</pre>
<p>Após pressionar o botão cadastrar, por padrão, o nossa action está redirecionando para a action show, que mostrará os dados da pessoa que acabamos de cadastrar. No entanto, como essa action ainda não existe, nos deparamos com o seguinte erro ao rodar rake cucumber novamente:</p>
<pre  class="brush:ruby">
The action 'show' could not be found for PessoasController (AbstractController::ActionNotFound)
./features/step_definitions/web_steps.rb:24:in `/^(?:|I )press "([^"]*)"$/'
features/gerenciamento.feature:12:in `E eu aperto "Cadastrar"
</pre>
<p>Para consertar esse problema, devemos criar a action show no controlador de pessoas (pessoas_controller) como segue:</p>
<pre  class="brush:ruby">
def show
    @pessoa = Pessoa.find(params[:id])
end
</pre>
<p>Feito isso, rodando rake cucubmer novamente encontramos o seguinte erro:</p>
<pre  class="brush:ruby">

Missing template pessoas/show with {:formats=>[:html], :handlers=>[:erb, :builder, :rjs, :rhtml, :rxml], :locale=>[:en, :en]} in view paths "/home/ricardo/trabalho/app/views" (ActionView::MissingTemplate)
/usr/lib/ruby/1.8/benchmark.rb:308:in `realtime'
./features/step_definitions/web_steps.rb:24:in `/^(?:|I )press "([^"]*)"$/'
features/gerenciamento.feature:12:in `E eu aperto "Cadastrar"'
</pre>
<p>Vimos um erro parecido com esse anteriormente, que significa que ainda não existe a visão correspondente para a action show. Sendo assim, vamos corrigir esse erro criando o arquivo show.html.erb na pasta app/views/pessoas, com o seguinte conteúdo:</p>
<pre  class="brush:ruby">
<p id="notice"><%= notice %>


  <b>Nome:</b>
  <%= @pessoa.nome %>



  <b>Idade:</b>
  <%= @pessoa.idade %>



  <b>Peso:</b>
  <%= @pessoa.matricula %>

</pre>
<p>Nessa visão, na primeira linha, mostramos as mensagens vindas da action, nesse caso a mensagem Pessoa cadastrada com sucesso. Após isso mostramos os dados da pessoa da forma como queríamos ver no teste que fizemos. Feito isso, ao rodarmos rake cucumber novamente, temos o erro a seguir:</p>
<pre  class="brush:ruby">
.........F

(::) failed steps (::)

expected the following element's content to include "Cadastrar nova pessoa":
Trabalho
Pessoa cadastrado com sucesso
  Nome:
  Ricardo
  Idade:
  24
  Peso:
  88.5
.
<false> is not true. (Test::Unit::AssertionFailedError)
</pre>
<p>Esse erro nos diz que está faltando mostrar a mensagem cadastrar nova pessoa, que era esperada no teste que fizemos. Obviamente, essa mensagem trata-se de um link para cadastrar novas pessoas. Para corrigir esse erro basta criarmos o link da forma mostrada a seguir, colocando no arquivo de visão <strong>show.html.erb</strong>. É possível ainda notar, que esse é o último passo e que, resolvendo esse erro, nosso cadastro estará completo e totalmente testado.</p>
<pre  class="brush:ruby">
<%= link_to "Cadastrar nova pessoa", new_pessoa_path %>
</pre>
<p>Roando rake cucumber novamente, temos a mensagem abaixo, mostrando que todos os passos do nosso teste passaram. 1 cenário e 10 passos executados com sucesso:</p>
<pre  class="brush:ruby">

ricardo@linuxmint ~/trabalho $ rake cucumber
(in /home/ricardo/trabalho)
bundle exec /usr/bin/ruby1.8 -I "/var/lib/gems/1.8/gems/cucumber-0.10.0/lib:lib" "/var/lib/gems/1.8/gems/cucumber-0.10.0/bin/cucumber"  --profile default
Using the default profile...
..........

1 scenario (1 passed)
10 steps (10 passed)
0m1.025s
</pre>
<p>Então pessoal, podemos notar que é um processo de execução do teste e correção dos erros que vão acontecendo até que tudo funcione corretamente. Espero que todos consigam chegar ao final desse tutorial com tudo executado.</p>
<p>Logo mais colocarei a especificação do nosso trabalho prático.</p>
<p>[]'s<br />
Ricardo Viana</p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.zn.inf.br/2011/02/06/tutorial-comecando-com-cucumber/feed/</wfw:commentRss>
		<slash:comments>91</slash:comments>
		</item>
		<item>
		<title>Tutorial básico: instalação do rails 3 + cucumber + webrat</title>
		<link>http://ricardo.zn.inf.br/2011/02/06/tutorial-basico-instalacao-do-rails-3-cucumber-webrat/</link>
		<comments>http://ricardo.zn.inf.br/2011/02/06/tutorial-basico-instalacao-do-rails-3-cucumber-webrat/#comments</comments>
		<pubDate>Sun, 06 Feb 2011 20:08:54 +0000</pubDate>
		<dc:creator>ricardo</dc:creator>
				<category><![CDATA[picos]]></category>
		<category><![CDATA[qualidade de software 2011.0]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[ufpi]]></category>
		<category><![CDATA[2011.0]]></category>
		<category><![CDATA[qualidade de software]]></category>

		<guid isPermaLink="false">http://ricardo.zn.inf.br/?p=795</guid>
		<description><![CDATA[Olá pessoal, vamos seguir os passos a seguir para configurarmos o ambiente necessário para fazermos nosso trabalho. Quem pegou o arquivo comigo em sala de aula não precisa seguir esses passos, fará apenas o seguinte: Extraia o arquivo que pegou para C:\Ruby e configurará a variável Path adicionando o caminho C:\Ruby\bin, da seguinte forma. Clique [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal, vamos seguir os passos a seguir para configurarmos o ambiente necessário para fazermos nosso trabalho. Quem pegou o arquivo comigo em sala de aula não precisa seguir esses passos, fará apenas o seguinte:</p>
<p>Extraia o arquivo que pegou para C:\Ruby e configurará a variável Path adicionando o caminho C:\Ruby\bin, da seguinte forma. Clique com o botão direito em meu computador e vá em propriedades. Após isso vá em Configurações avançadas do sistema e clique no botão variáveis de ambiente. Localize a variável Path (se não existir, crie uma) e adicione o caminho C:\Ruby\bin. Agora, siga para o passo 4.</p>
<p><strong>Passo 1: Instalação do Ruby</strong></p>
<p>Para que vocês possam começar a trabalhar com rails é necessário primeiro instalar o Ruby. Vamos baixar a versão 1.8.7 do seguinte endereço:</p>
<p><a href="http://rubyforge.org/frs/download.php/73719/rubyinstaller-1.8.7-p330.exe">http://rubyforge.org/frs/download.php/73719/rubyinstaller-1.8.7-p330.exe</a></p>
<p>A instalação segue o padrão next, next, finish. Abaixo seguem as telas correspondentes, com o detalhe de atentar para marcar os dois checkboxes na última tela que farão a adição da pasta bin do ruby (C:\Ruby\bin) ao Path e fará a associação de arquivos com extensão .rb e .rbw com o interpretador ruby.</p>
<p><a href="http://ricardo.zn.inf.br/wp-content/uploads/2011/02/ruby1.png" rel="lightbox[795]"><img src="http://ricardo.zn.inf.br/wp-content/uploads/2011/02/ruby1-300x232.png" alt="" title="ruby1" width="300" height="232" class="alignnone size-medium wp-image-796" /></a></p>
<p><a href="http://ricardo.zn.inf.br/wp-content/uploads/2011/02/ruby2.png" rel="lightbox[795]"><img src="http://ricardo.zn.inf.br/wp-content/uploads/2011/02/ruby2-300x232.png" alt="" title="ruby2" width="300" height="232" class="alignnone size-medium wp-image-797" /></a></p>
<p><a href="http://ricardo.zn.inf.br/wp-content/uploads/2011/02/ruby3.png" rel="lightbox[795]"><img src="http://ricardo.zn.inf.br/wp-content/uploads/2011/02/ruby3-300x232.png" alt="" title="ruby3" width="300" height="232" class="alignnone size-medium wp-image-798" /></a></p>
<p><strong>Passo 2: Instalação das bibliotecas</strong></p>
<p>Para instalar bibliotecas no ruby usamos o aplicativo <strong>gem</strong>. As bilbiotecas que precisamos são, basicamente, o rails, o cucumber, o webrat e a biblioteca para acesso ao banco de dados. Vamos abrir um terminal: Iniciar-> Executar-> cmd, no Vista ou 7 digitem cmd no campo de busca do menu iniciar e pressionem enter. Nesse terminal iremos executar o seguinte comando:</p>
<pre  class="brush:ruby">
gem install rails cucumber cucumber-rails webrat sqlite3-ruby
</pre>
<p>As bibliotecas serão baixadas da internet e instaladas no computador. Esse processo deve demorar um pouco, então, não fechem a janela ou coisa do tipo achando que está travado, ok?</p>
<p><strong>Passo 3: O banco de dados</strong></p>
<p>O banco de dados que usaremos será o sqlite3 (que é o banco de dados padrão do ruby), um banco de dados bem simples que só precisa de 2 arquivos para funcionar. Vamos baixar os arquivos do seguinte endereço:</p>
<p><a href="http://www.sqlite.org/download.html">http://www.sqlite.org/download.html</a></p>
<p>Baixaremos os arquivos:</p>
<p><a href="http://www.sqlite.org/sqlite-shell-win32-x86-3070500.zip">http://www.sqlite.org/sqlite-shell-win32-x86-3070500.zip</a></p>
<p><a href="http://www.sqlite.org/sqlite-dll-win32-x86-3070500.zip">http://www.sqlite.org/sqlite-dll-win32-x86-3070500.zip</a></p>
<p>Ao extrair esses arquivos teremos os arquivos: sqlite3.exe, sqlite3.dll, sqlite3.def. Colocaremos esses arquivos na pasta bin do ruby (C:\Ruby\bin), para facilitar nosso acesso a eles.</p>
<p><strong>Passo 4: Criando uma aplicação simples</strong></p>
<p>Vamos testar nossa instalação criando uma aplicação simples. Abriremos um terminal (cmd) e executaremos o seguinte comando:</p>
<pre  class="brush:ruby">
rails new aplicativo
</pre>
<p>Será criada a pasta aplicativo com toda a estrutura necessária para a aplicação funcionar. Entraremos na pasta (cd aplicativo) e executaremos os seguintes comandos para criar um cadastro simples e verificar seu funcionamento:</p>
<pre  class="brush:ruby">
rails generate scaffold pessoa nome:string idade:integer nascimento:date peso:float
</pre>
<p>(Esse comando cria o modelo, o controlador e as visões necessárias para um cadastro de pessoas funcionar)</p>
<pre  class="brush:ruby">
rake db:create:all
</pre>
<p>(Cria os bancos de dados necessários para a aplicação (Ambientes de desenvolvimento, teste e produção))</p>
<pre  class="brush:ruby">rake db:migrate</pre>
<p>(Migra os dados para o banco: nesse caso, cria a tabela pessoas)</p>
<p>Estamos prontos para ver a aplicação funcionando, para isso, devemos iniciar o servidor:</p>
<pre  class="brush:ruby">rails server</pre>
<p>E acessar a página correspondente ao cadastro criado:</p>
<p><a href="http://localhost:3000/pessoas">http://localhost:3000/pessoas</a></p>
<p>Devemos ver o cadastro completamente funcional, com os dados inseridos na execução do scaffold.</p>
<p>No próximo tutorial colocarei um passo a passo básico de utilização do cucumber.</p>
<p>[]&#8216;s<br />
Ricardo Viana</p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.zn.inf.br/2011/02/06/tutorial-basico-instalacao-do-rails-3-cucumber-webrat/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Trabalho Final de Qualidade de Software</title>
		<link>http://ricardo.zn.inf.br/2011/02/04/trabalho-final-de-qualidade-de-software/</link>
		<comments>http://ricardo.zn.inf.br/2011/02/04/trabalho-final-de-qualidade-de-software/#comments</comments>
		<pubDate>Fri, 04 Feb 2011 15:06:39 +0000</pubDate>
		<dc:creator>ricardo</dc:creator>
				<category><![CDATA[picos]]></category>
		<category><![CDATA[qualidade de software 2011.0]]></category>
		<category><![CDATA[ufpi]]></category>
		<category><![CDATA[2011.0]]></category>
		<category><![CDATA[qualidade de software]]></category>

		<guid isPermaLink="false">http://ricardo.zn.inf.br/?p=793</guid>
		<description><![CDATA[Olá pessoal, Estou em Fortaleza, volto amanhã para Teresina e colocarei toda a especificação do trabalho para vocês. Resolvi o problema que deu em sala de aula e não nos permitiu ir até o final da aplicação. Colocarei um tutorial básico de como fazer o que fiz em sala de aula para ajudar vocês e [...]]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal,</p>
<p>Estou em Fortaleza, volto amanhã para Teresina e colocarei toda a especificação do trabalho para vocês.</p>
<p>Resolvi o problema que deu em sala de aula e não nos permitiu ir até o final da aplicação.</p>
<p>Colocarei um tutorial básico de como fazer o que fiz em sala de aula para ajudar vocês e como usar o ruby que passei para alguns.</p>
<p>Até amanhã,</p>
<p>[]&#8216;s<br />
Ricardo Viana</p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.zn.inf.br/2011/02/04/trabalho-final-de-qualidade-de-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Aulas 05 e 06 de Qualidade de Software</title>
		<link>http://ricardo.zn.inf.br/2011/01/30/aulas-05-e-06-de-qualidade-de-software/</link>
		<comments>http://ricardo.zn.inf.br/2011/01/30/aulas-05-e-06-de-qualidade-de-software/#comments</comments>
		<pubDate>Sun, 30 Jan 2011 12:53:54 +0000</pubDate>
		<dc:creator>ricardo</dc:creator>
				<category><![CDATA[picos]]></category>
		<category><![CDATA[qualidade de software 2011.0]]></category>
		<category><![CDATA[ufpi]]></category>
		<category><![CDATA[2011.0]]></category>
		<category><![CDATA[qualidade de software]]></category>

		<guid isPermaLink="false">http://ricardo.zn.inf.br/?p=787</guid>
		<description><![CDATA[Seguem os slides de nossas últimas duas aulas. Os dois últimos capítulos para a primeira prova. Aula 05 &#8211; Programação &#8211; Fatores de Qualidade (PDF) Aula 05 &#8211; Programação &#8211; Fatores de Qualidade (PPTX) Aula 06 &#8211; Qualidade de Código (PDF) Aula 06 &#8211; Qualidade de Código (PPTX) Lembrando que nossa prova é na terça-feira, [...]]]></description>
			<content:encoded><![CDATA[<p>Seguem os slides de nossas últimas duas aulas. Os dois últimos capítulos para a primeira prova.</p>
<p><a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/01/Aula-05-Programação-Fatores-de-Qualidade.pdf'>Aula 05 &#8211; Programação &#8211; Fatores de Qualidade (PDF)</a><br />
<a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/01/Aula-05-Programação-Fatores-de-Qualidade.pptx'>Aula 05 &#8211; Programação &#8211; Fatores de Qualidade (PPTX)</a><br />
<a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/01/Aula-06-Qualidade-de-Código.pdf'>Aula 06 &#8211; Qualidade de Código (PDF)</a><br />
<a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/01/Aula-06-Qualidade-de-Código.pptx'>Aula 06 &#8211; Qualidade de Código (PPTX)</a></p>
<p>Lembrando que nossa prova é na terça-feira, dia 01/02/2011, e contemplará todos os capítulos vistos: 01, 02, 03, 04, 09, 14 e 15.</p>
<p>[],s<br />
Ricardo Viana</p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.zn.inf.br/2011/01/30/aulas-05-e-06-de-qualidade-de-software/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Aulas 03 e 04 de Qualidade de Software</title>
		<link>http://ricardo.zn.inf.br/2011/01/20/aulas-03-e-04-de-qualidade-de-software/</link>
		<comments>http://ricardo.zn.inf.br/2011/01/20/aulas-03-e-04-de-qualidade-de-software/#comments</comments>
		<pubDate>Thu, 20 Jan 2011 19:17:12 +0000</pubDate>
		<dc:creator>ricardo</dc:creator>
				<category><![CDATA[picos]]></category>
		<category><![CDATA[qualidade de software 2011.0]]></category>
		<category><![CDATA[ufpi]]></category>
		<category><![CDATA[2011.0]]></category>
		<category><![CDATA[qualidade de software]]></category>

		<guid isPermaLink="false">http://ricardo.zn.inf.br/?p=782</guid>
		<description><![CDATA[Seguem os slides usados nas aulas 03 e 04. Novamente disponibilizo o PDF e o arquivo do PowerPoint. Aula 03 &#8211; Fatores Humanos de Qualidade (PPTX) Aula 03 &#8211; Fatores Humanos de Qualidade (PDF) Aula 04 &#8211; Influência dos Requisitos na Qualidade (PPTX) Aula 04 &#8211; Influência dos Requisitos na Qualidade (PDF) []&#8216;s Ricardo Viana]]></description>
			<content:encoded><![CDATA[<p>Seguem os slides usados nas aulas 03 e 04. Novamente disponibilizo o PDF e o arquivo do PowerPoint.</p>
<p><a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/01/Aula-03-Fatores-Humanos-de-Qualidade.pptx'>Aula 03 &#8211; Fatores Humanos de Qualidade (PPTX)</a><br />
<a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/01/Aula-03-Fatores-Humanos-de-Qualidade.pdf'>Aula 03 &#8211; Fatores Humanos de Qualidade (PDF)</a><br />
<a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/01/Aula-04-Influência-dos-Requisitos-na-Qualidade.pptx'>Aula 04 &#8211; Influência dos Requisitos na Qualidade (PPTX)</a><br />
<a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/01/Aula-04-Influência-dos-Requisitos-na-Qualidade.pdf'>Aula 04 &#8211; Influência dos Requisitos na Qualidade (PDF)</a></p>
<p>[]&#8216;s<br />
Ricardo Viana</p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.zn.inf.br/2011/01/20/aulas-03-e-04-de-qualidade-de-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Plano de Curso e Primeiras aulas</title>
		<link>http://ricardo.zn.inf.br/2011/01/13/plano-de-curso-e-primeiras-aulas/</link>
		<comments>http://ricardo.zn.inf.br/2011/01/13/plano-de-curso-e-primeiras-aulas/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 22:55:14 +0000</pubDate>
		<dc:creator>ricardo</dc:creator>
				<category><![CDATA[picos]]></category>
		<category><![CDATA[qualidade de software 2011.0]]></category>
		<category><![CDATA[ufpi]]></category>
		<category><![CDATA[2011.0]]></category>
		<category><![CDATA[qualidade de software]]></category>

		<guid isPermaLink="false">http://ricardo.zn.inf.br/?p=775</guid>
		<description><![CDATA[Pessoal, seguem nosso plano de curso e os slides usados em nossas duas primeiras aulas: Plano de Curso &#8211; Qualidade de Software Aula 01 &#8211; O Que é qualidade (PPTX) Aula 01 &#8211; O Que é qualidade (PDF) Aula 02 &#8211; Normas e Organismos normativos &#8211; Métricas visão geral (PPTX) Aula 02 &#8211; Normas e [...]]]></description>
			<content:encoded><![CDATA[<p>Pessoal, seguem nosso plano de curso e os slides usados em nossas duas primeiras aulas:</p>
<p><a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/01/Plano-de-Curso-Qualidade-de-Software.pdf'>Plano de Curso &#8211; Qualidade de Software</a><br />
<a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/01/Aula-01-O-Que-é-qualidade.pptx'>Aula 01 &#8211; O Que é qualidade (PPTX)</a><br />
<a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/01/Aula-01-O-Que-é-qualidade.pdf'>Aula 01 &#8211; O Que é qualidade (PDF)</a><br />
<a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/01/Aula-02-Normas-e-Organismos-normativos-Métricas-visão-geral.pptx'>Aula 02 &#8211; Normas e Organismos normativos &#8211; Métricas visão geral (PPTX)</a><br />
<a href='http://ricardo.zn.inf.br/wp-content/uploads/2011/01/Aula-02-Normas-e-Organismos-normativos-Métricas-visão-geral.pdf'>Aula 02 &#8211; Normas e Organismos normativos &#8211; Métricas visão geral (PDF)</a></p>
<p>Coloquei versões em PDF para quem não conseguir abrir a versão PowerPoint.</p>
<p>[]&#8216;s<br />
Ricardo Viana</p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.zn.inf.br/2011/01/13/plano-de-curso-e-primeiras-aulas/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Início das aulas</title>
		<link>http://ricardo.zn.inf.br/2011/01/03/inicio-das-aulas/</link>
		<comments>http://ricardo.zn.inf.br/2011/01/03/inicio-das-aulas/#comments</comments>
		<pubDate>Mon, 03 Jan 2011 19:16:05 +0000</pubDate>
		<dc:creator>ricardo</dc:creator>
				<category><![CDATA[picos]]></category>
		<category><![CDATA[qualidade de software 2011.0]]></category>
		<category><![CDATA[ufpi]]></category>
		<category><![CDATA[2011.0]]></category>
		<category><![CDATA[qualidade de software]]></category>

		<guid isPermaLink="false">http://ricardo.zn.inf.br/?p=774</guid>
		<description><![CDATA[Olá pessoal, Quero informar aos alunos matriculados em minha disciplina no período especial (Qualidade de Software), que nossas aulas terão início na próxima terça-feira (11/01/2011). []&#8216;s Ricardo Viana]]></description>
			<content:encoded><![CDATA[<p>Olá pessoal,</p>
<p>Quero informar aos alunos matriculados em minha disciplina no período especial (Qualidade de Software), que nossas aulas terão início na próxima terça-feira (11/01/2011).</p>
<p>[]&#8216;s<br />
Ricardo Viana</p>
]]></content:encoded>
			<wfw:commentRss>http://ricardo.zn.inf.br/2011/01/03/inicio-das-aulas/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

