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

QA without QA

Uri Nativ
February 18, 2013

QA without QA

My talk from #reversim 2013 conference.

I believe that the best way to improve the quality of your software is not to have a QA organization. It's not about not testing, on the contrary, it is about treating quality as a mindset, a way of working and a good set of tools. Not as a process or a gatekeeper. I'll talk about fixing bugs before writing new features, BDD, TDD, Unit tests, CI, CD, testing in production, the value of fast tests and more. I'll talk about tools and the methodology we use and the challenges we're facing with our no-QA approach.

Uri Nativ

February 18, 2013
Tweet

More Decks by Uri Nativ

Other Decks in Programming

Transcript

  1. our job is NOT to CODE our job is NOT

    to TEST we are software engineers we SHIP software that SOLVES problems
  2. COST of bug fix 1x 5x 150x Phase detected Cost

    Requirements Design Code Test Production 10x 50x
  3. CUCUMBER SCENARIO 1 Feature: Upsale for existing merchant Background: Given

    I have valid user for Klarna Scenario: Complete upsale flow Given I am on the login page When I login as a valid user Then I should see a pricing page When I accept the terms and conditions And I click the next button Then I should see the thank you page
  4. CUCUMBER SCENARIO 1 Feature: Upsale for existing merchant Background: Given

    I have valid user for Klarna Scenario: Complete upsale flow Given I am on the login page When I login as a valid user Then I should see a pricing page When I accept the terms and conditions And I click the next button Then I should see the thank you page
  5. CUCUMBER SCENARIO 1 Feature: Upsale for existing merchant Background: Given

    I have valid user for Klarna Scenario: Complete upsale flow Given I am on the login page When I login as a valid user Then I should see a pricing page When I accept the terms and conditions And I click the next button Then I should see the thank you page
  6. CUCUMBER SCENARIO 1 Feature: Upsale for existing merchant Background: Given

    I have valid user for Klarna Scenario: Complete upsale flow Given I am on the login page When I login as a valid user Then I should see a pricing page When I accept the terms and conditions And I click the next button Then I should see the thank you page
  7. CUCUMBER SCENARIO 2 Feature: Upsale for existing merchant Background: Given

    I have valid user for Klarna Scenario: Upsale dropout Given I am on the login page When I login as a valid user Then I should see a pricing page When I wait 24 hours Then a Lead is created in the CRM
  8. CUCUMBER STEP DEFINITON Given /^I am on the login page$/

    do url = “https://www.klarna.com/login” visit url end When /^I login as a valid user$/ do fill_in "uid", :with => @valid_user[:uname] fill_in "pass", :with => @valid_user[:pass] click_button "login" end Then /^I should see a pricing page$/ do page.should have_selector ("title", :text => 'Pricing Page Title') end
  9. RSPEC – CONTROLLER TEST describe ‘UpsaleController’ do describe ‘login endpoint’

    do it "should redirect to OAuth login" do OAuthAPI.stub(:get_login_url). and_return ("https://login.klarna.com") get :login response.should redirect_to ("https://login.klarna.com") end end
  10. RSPEC – CONTROLLER TEST describe ‘UpsaleController’ do describe ‘login endpoint’

    do it "should redirect to OAuth login" do OAuthAPI.stub(:get_login_url). and_return ("https://login.klarna.com") get :login response.should redirect_to ("https://login.klarna.com") end end
  11. RSPEC – CONTROLLER TEST describe ‘UpsaleController’ do describe ‘login endpoint’

    do it "should redirect to OAuth login" do OAuthAPI.stub(:get_login_url). and_return ("https://login.klarna.com") get :login response.should redirect_to ("https://login.klarna.com") end end
  12. RSPEC – CONTROLLER TEST describe ‘UpsaleController’ do describe ‘login endpoint’

    do it "should redirect to OAuth login" do OAuthAPI.stub(:get_login_url). and_return ("https://login.klarna.com") get :login response.should redirect_to ("https://login.klarna.com") end end
  13. RSPEC – CONTROLLER TEST describe ‘UpsaleController’ do describe ‘login endpoint’

    do it "should redirect to OAuth login" do OAuthAPI.stub(:get_login_url). and_return ("https://login.klarna.com") get :login response.should redirect_to ("https://login.klarna.com") end end
  14. RSPEC – CONTROLLER TEST describe ‘UpsaleController’ do describe ‘login endpoint’

    do it "should redirect to OAuth login" do OAuthAPI.stub(:get_login_url). and_return ("https://login.klarna.com") get :login response.should redirect_to ("https://login.klarna.com") end end