3. 1. No tests at all
● You can write very good code, but this code
WILL suck later
● “Refactoring” is a swearword
● That is why constant “No time for
refactoring”
● “We need to rewrite it from scratch” at the
end
1 2 3 4 5 6
4. 2. So called “Unittests”
● Not actual unittests
● xUnit based tests for controllers, entities,
repositories etc without any order
● Complex fixtures
● Hard to support
● “There is no time for tests” because of no
visible profit
21 3 4 5 6
5. 3. Selenium acceptance tests
● Written by QA automators usually in Java
even in PHP and .NET projects
● This approach is widely spread, well known
and may perform well, but I think autotests
implementation is not a QA job
1 2 4 5 63
6. 4. Behat acceptance tests
● This approach may perform very well
● Can be written by QA (and even sometimes by BA)
● Some people call it BDD, but it is not BDD actually
Given there is registered user Bob
And I am on homepage
When I follow “Sign Up”
And I fill “Bob” in “Username”
And I press “Sign Up”
Then I should see “This username is already in use”
1 2 3 5 64
7. 5. BDD
● BDD is not about tests
● It is the process to find out and deliver features which
provide value to users
● Should be used not only in dev team but in whole team
beginning from Product Owner
Given there is registered user Bob
When I try to sign up with username “Bob”
Then I should get error that this user is already signed up
1 2 3 4 65
8. 6. Lean
● The last point of Agile team and project
journey
● It is all about how to deliver more value to
customer and how to build sustainable
business around this product
1 2 3 4 5 6
9. 4,5. DDD with Behat
● Not a BDD yet
● Not just acceptance tests with Behat
BDD
Behat
acceptance
tests
DDD with
Behat
10. Coming soon...
● 8/28/2014
● PHP User Group Meetup #9
● Imaguru Startup Hub
● https://www.facebook.
com/events/600891746698048/