My journey as a developer
Upcoming SlideShare
Loading in...5
×
 

My journey as a developer

on

  • 239 views

How I learnt to release high quality software frequently. I started with no test automation and now I have CI and CD for all projects.

How I learnt to release high quality software frequently. I started with no test automation and now I have CI and CD for all projects.

Statistics

Views

Total Views
239
Views on SlideShare
230
Embed Views
9

Actions

Likes
1
Downloads
3
Comments
0

2 Embeds 9

https://www.linkedin.com 7
http://www.linkedin.com 2

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • TDD haters loved it <br />
  • Wife to programmer husband: “Dear, please, go to the nearby grocery store to buy some bread. Also, if they have eggs, buy 6.” <br /> Husband: “O.K. hun.” <br /> Twenty minutes later the husband comes back bringing 6 loaves of bread. <br /> Wife: “Dear, why on earth did you buy 6 loaves of bread?” <br /> Husband: “They had eggs.” <br />
  • Wife to programmer husband: “Dear, please, go to the nearby grocery store to buy some bread. Also, if they have eggs, buy 6.” <br /> Husband: “O.K. hun.” <br /> Twenty minutes later the husband comes back bringing 6 loaves of bread. <br /> Wife: “Dear, why on earth did you buy 6 loaves of bread?” <br /> Husband: “They had eggs.” <br />

My journey as a developer My journey as a developer Presentation Transcript

  • My journey as a developer Or how I learnt to release high quality software frequently 1
  • Fast coding 2
  • Feeling proud! 3
  • No automated tests 4 Lots of manual testing
  • “Software and cathedrals are much the same – we first build them, then we pray.” - Samuel T. Redwine, Jr. 5
  • No confidence in the releases 6
  • A fair few bugs 7
  • No regression suite 8 Maintenance was a nightmare
  • “Don’t use hands to do things that can be efficiently done by the computer.” – Tom Duff 9
  • Enter unit testing! 10
  • Code first 11 If manual testing is hard and time consuming, automate it!
  • Code first is hard 12 Adding tests after the code is implemented without unit testing in mind is hard!
  • Test first works better 13 What’s this TDD everyone talks about?
  • No TDD 14
  • So much better 15 • Easier to write unit tests • A lot less manual testing • Faster releases • Easier maintenance
  • There were still a few bugs! 16
  • Tdd: not a silver bullet 17 Unit tests cover a lot of things; but a lot of bugs happen in interaction between units.
  • Integration Testing to the rescue 18
  • Test a few things together 19 If the bug is in interactions, test the units together
  • Caught a lot of bugs 20 And the automation was a lot tighter
  • There were still UI related bugs! 21
  • Automated UI Testing 22
  • Test it end to end 23 Automated UI tests run through everything end to end!
  • Demo – UI Automation 24
  • But now business can’t read my test cases 25 No manual testing means No test cases which means Hard to verify behavior by the business which means Programmers could write the wrong thing
  • Self testing code: no silver bullet 26 • You misunderstand the requirements • You write the wrong test • You write the wrong code to pass the wrong test • You have a green test suite • But you’ve implemented the wrong thing
  • “The most important single aspect of software development is to be clear about what you are trying to build.” – Bjarne Stroustrup 27
  • BDD to the rescue 28
  • Behavior Driven Development 29 bridges the communication gap
  • Behavior Driven Development Benefits 30 • Getting verification from BAs • Automated regression suite defined by BAs • Always up-to-date software requirements • YAGNI
  • Demo – BDD 31
  • Acceptance Test Driven Development 32 BDD + UI Automation => AWESOME
  • But this is so slow to run. I’m bored!! 33
  • Enter Continuous Integration 34
  • Continuous Integration 35 • Integrate the code frequently • Build the code on each commit • Run the fast tests on each commit • Run the slow tests on schedules
  • CI Rules 36 • Fixing red CI is the highest priority • If you break the build, you do push ups • No one pulls from a red build • No one pushes to a red build
  • “If it hurts, do it more frequently, and bring the pain forward.” – Jez Humble 37
  • Enter Continuous Delivery 38
  • Push to production continuously 39 If everything is tested and verified properly, then you can push it to production at any time!
  • Demo – CI & CD 40
  • It feels good 41
  • And the guys who wanted my tests to fail 42
  • THANK YOU Mehdi Khalili Senior Consultant @ ThoughtWorks www.mehdi-khalili.com @MehdiKhalili