my journey as a developer

43
My journey as a developer Or how I learnt to release high quality software frequently 1

Upload: mehdi-khalili

Post on 26-Jan-2015

132 views

Category:

Technology


0 download

DESCRIPTION

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.

TRANSCRIPT

My journey

as a developerOr 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 YOUMehdi KhaliliSenior Consultant @ ThoughtWorks

www.mehdi-khalili.com@MehdiKhalili