Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Software de alta calidad

Software de alta calidad

Fernando Perales

May 30, 2017
Tweet

More Decks by Fernando Perales

Other Decks in Programming

Transcript

  1. Ingenierio de Software ex Crowd Interactive / MagmaLabs / FreeAgent

    Software Promotor del FLOSS Amante del Heavy Metal y la cerveza Instructor de Ruby on Rails en Platzi Anfitrión de la comunidad RubyGDL Fundador de elbuencodigo.com Fan de Gregory Sallust
  2. “Es un enfoque colaborativo para definir requetimientos y pruebas funcionales

    orientadas al negocio para productos de software con base en capturar e ilustrar los requerimientos usando ejemplos reales en lugar de sentencias abstractas”
  3. Feature: Login In order to use the application As a

    user I want to be able to login Scenario: with invalid credentials Given I visit the / page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be shown a message error Scenario: with valid credentials Given I have created an account in the past And I visit the /events page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be redirected to events page
  4. “Es un lenguaje de dominio específico, leíble desde el lago

    de negocios que permite describir el funcionamiento del software sin detallar cómo será implementado”
  5. “Una holística y flexicle estrategia de desarrollo de producto donde

    un equipo de desarrollo trabaja como una unidad para alcanzar un objetivo común "
  6. “Una comprensible lista de tareas, expresadas en orden de importancia

    para el negocio y cuánto valor aportan al mismo”
  7. “Un sistema que guarda los cambios hechos a un archivo

    o conjunto de archivos a través del tiempo”
  8. “Una metodología de pruebas de software en la que las

    unidades individuales de código son probadas para determinar si son aptas para ser utilizadas”
  9. class User < ActiveRecord::Base # Método que prueba si un

    usuario tiene una cuenta de HackerGarage def has_hackergarare_account? !!self. email.match(/@hackergarage.mx$/) end end
  10. require 'rails_helper' describe User do let(:user_with_hackergarage_account) { User.create email: '[email protected]'

    } let(:user_with_gmail_account) { User.create email: '[email protected]' } describe '.has_hackergarage_account?' do it 'returns true when email ends with "@hackergarage.mx"' do expect( user_with_hackergarage_account.has_magmalabs_account? ).to be true end it 'returns false when email ends with "other domain"' do expect( user_with_gmail_account.has_hackergarage_account? ).to be false end end end
  11. “La fase de pruebas de software en la cual las

    unidades individuales se combinan y prueban como un grupo”
  12. “Un método de pruebas en el que se utilizan ejemplos

    para describir el comportamiento de la aplicación o el comportamiento de la misma”
  13. Feature: Login In order to use the application As a

    user I want to be able to login Scenario: with invalid credentials Given I visit the / page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be shown a message error Scenario: with valid credentials Given I have created an account in the past And I visit the /events page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be redirected to events page
  14. Feature: Login In order to use the application As a

    user I want to be able to login Scenario: with invalid credentials Given I visit the / page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be shown a message error Scenario: with valid credentials Given I have created an account in the past And I visit the /events page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be redirected to events page
  15. Feature: Login In order to use the application As a

    user I want to be able to login Scenario: with invalid credentials Given I visit the / page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be shown a message error Scenario: with valid credentials Given I have created an account in the past And I visit the /events page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be redirected to events page
  16. And(/^I have entered (.*) as my username$/) do |username| fill_in

    'user[login]', with: username end And(/^I have entered (.*) as my password$/) do |password| fill_in 'user[password]', with: password end
  17. Feature: Login In order to use the application As a

    user I want to be able to login Scenario: with invalid credentials Given I visit the / page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be shown a message error Scenario: with valid credentials Given I have created an account in the past And I visit the /events page And I have entered demo as my username And I have entered demo1234 as my password When I press Sign in Then I will be redirected to events page
  18. Given(/^I have created an account in the past$/) do @user

    = FactoryGirl.create :user, username: 'demo', password: 'demo1234' End Then(/^I will be shown a message error$/) do expect(page).to have_content 'Invalid login or password.' end When(/^I press Sign in$/) do click_button 'Sign in' end Then(/^I will be redirected to home page$/) do expect(page).to have_content 'Login successful' end Then(/^I will be redirected to (.*) page$/) do |url| path = URI.parse(current_url).path expect(path).to match "/#{url}" end
  19. role :demo, %w{example.com example.org example.net} task :uptime do on roles(:demo),

    in: :parallel do |host| uptime = capture(:uptime) puts "#{host.hostname} reports: #{uptime}" end end
  20. “Continuous Integration is the practice of merging development work with

    a Master/Trunk/Mainline branch constantly so that you can test changes, and test that changes work with other changes” http://blog.assembla.com/AssemblaBlog/tabid/12618/bid/92411/Continu ous-Delivery-vs-Continuous-Deployment-vs-Continuous-Integration-Wait- huh.aspx
  21. “Continuous Delivery is the continual delivery of code to an

    environment once the developer feels the code is ready to ship.” http://blog.assembla.com/AssemblaBlog/tabid/12618/bid/92411/Continu ous-Delivery-vs-Continuous-Deployment-vs-Continuous-Integration-Wait- huh.aspx
  22. “Continuous Deployment is the deployment or release of code to

    Production as soon as it is ready” http://blog.assembla.com/AssemblaBlog/tabid/12618/bid/92411/Continu ous-Delivery-vs-Continuous-Deployment-vs-Continuous-Integration-Wait- huh.aspx
  23. scss_files: "**/*.scss" linters: BangFormat: enabled: true space_before_bang: true space_after_bang: false

    BorderZero: enabled: true convention: zero # or `none` ColorKeyword: enabled: true ColorVariable: enabled: true Comment: enabled: true DebugStatement: enabled: true