16 January 2017

What I learn from 009 talk: "BDD is not about testing" by Dan North

BDDX ’2016 in London BDD is not about testing

Dan is a legend. Dan is one of the funniest and definitely most humble speaker in our galaxy.
I attended to BDDx in London organised by Skills Matters, where Dan was one of the speakers.
Below, you can find informations that I learn or I believe are useful to know from

  1. Dan starts from point out that testers feel unloved and abandoned by Agile . "Goals of testing is To increase confidence for stakeholders through evidence" because as Kent Beck said : “I paid for code that works, not for tests, so my philosophy is to test as little as possible to reach given level of confidence”. Different stakeholder has different need for confidence that can be achieved through evidence. For example security stakeholder  needs have confidence that it is secure and so on.   
  2. We don’t see bug because of 2 cognitive bias:
    1.     Confirmation bias when my unconscious unconsciously delete anything with my world model. My world model is I am good programmer and I write really good code otherwise I will be depressed and I will be sad and I don’t want code.
    2.     Fundamental attribution error is You assumed If something good happen to me I assume that I have something to do with it. If something bad happen to other I assumed they have something to do with it.
  3. Good tester have 3 super powers:
    1. Empathy for stakeholders (to think like them).
    2. Ingenuity for evidence.
    3. Balance for trade off. 
  4. Programmers and Agile movement does NOT understand testing. Programmers usually see testing as irritation, managers see testing as source of risk. Industry see this as non-critical activity.  One of the reason is Agile movement doesn’t understand testing because Agile was invented by programmers (people who created Agile Manifesto are programmers ) so tester role is poorly defined.
  5. Agile testing is poorly defined and not mature yet. He shows example where 5 days agile testing course contains 1.5 day about testing and rest not (things like Agile manifesto , principles , planning ,estimations or soft skills assessment . Agile testing should cover things like test strategy (one of the most important elements ) , regression tests , functional and non functional testing , write automated and normal acceptance criteria , test metrics , tools for exploratory testing  
  6. TDD is a programming technique (discipline ) for programmers not testing
  7. BDD is not about testing.
    1. BDD acknowledge multiple stakeholder , because PO cannot know everything ( , security, compliance and so on ) and we need describe behaviour of the system 
    2. Acceptance criteria is first class citizen . We describe output (result)
    3. Acceptance criteria the outset ... What is outcome what is correct ,deployable
    4. Everything in BDD happens from perspective of the stakeholder. BDD implementing system by describe it behaviour from perspective of the stakeholder. Goal of BDD is to working software that matters for stakeholders. It happens while we build software we using various testing activities to build confidence . We increase confidence for stakeholders through evidence .
    5. In BDD ,testing is business critical
  8. Testing is a part duty of care.  
  9. BDD should be called BGD Behaviour Guided Development (name was inspired by book titled “ Growing Object-Oriented Software: Guided by Tests” by Nat Pryce and Steve Freeman . 
  10. Good Automated tests should have:
    1. Intention revealing name.
    2. Intention revealing error (need to know why and how it failed).
    3. Consistent language.
    4. Must be fast.
    5. Close to the action (if is communication through Http ,test through http).
  11. Gherkin is not designed for testing .It is tool for guide development bad for that because it is bad in intention revealing error, Consistent language (14 scenarios to catch one intent) and they are slow.
  12. BDD is not about testing , however testing is mandatory part of BDD because it helps gain confidence.
  13. Test thinking is critical to successful delivery .
  14. Most important aspect Good architecture/software is testability and simplicity (not flexibility and reusability as most people thinks).
Dan's talk was sublime. Last thing worth mention is I decided to learn 1 language and 1 technology per year. After his talk language that I will learn is Python , because he said it is a great language for … automated tests.