Created by Pete Suggitt / @suggz
Joined UBS in 1998
Worked many roles across a number of departments
Now I spend a lot of time thinking about Software Engineering
I like helping teams solve problems
... and yes ... it's Movember
we all know it looks ridiculous, please ignore it
Created by Pete Suggitt / @suggz
“automatically controlled operation of an apparatus, process, or system by mechanical or electronic devices that take the place of human labour.”
The key thing here is:
take the place of human labour
Really? All human labour???
take the place of wasteful human labour
What do we expect to get from it?
... we work in Technology, remember?
where do we start?
This is where the Value Chain comes in
Typically everyone focuses on test automation, what about:
... it took a long time to build it
... but we found a number of problems
This was our acceptance criteria
Releases to all environments must be the same, focus on simplicity and repeatability.
Test the release process continuously (including data migrations).
Production Services should be bored all the time.
Lisa Crispin & Janet Gregory
Using natural language as a Specification By Example
Using structured language in the Gherkin style
Test functionality at the appropriate level.
Testability is a requirement. If its hard to test, change the application.
Tests are the primary form of documentation: a living documentation.
Design the test content for the reader: use different techniques and tools to achieve this.
Treat test code with the same respect as production code.
Continuous Integration vs. Feature Branches
This means everything:
... wow thats a lot of testing
This is our sausage machine!!!
Use branches to segregate incomplete work, until you are ready to integrate
Be in control of integration; yet integrate often
Changes should be large enough to make sense to the customer; yet small enough to deliver swiftly.
Employ a strict regime of "stop & fix"
You should be able to release to production from Master at all times.
we sometimes need environments for short periods of time
... with specific features in them
CERN Data Center Evolution
Our static environments:
have names
have personal attendents
are regularly groomed
if they are ill we nurse them back to health
when we have finished playing with them they wait for us
Our environments should:
have numbers
live in a herd
when they are ill we get another one from the herd
when we have finished playing with them we put them back in the herd
... it happens to use Open Stack
... it builds environments from nothing in around 2 minutes
... we are looking at Docker for scaling common things
meet SSENG-master-19
it is the same as SSENG-master-18
it is a fully contained environment
It is based on our specifications
... all we really care about is how to communicate with it
14.67.67.200Test environments should be treated as a disposable resource: used on demand and then thrown away.
Infrastructure as code: never change an environment, throw it away and create a new one from a template.
No budget
No permission sought
No project managers
GOTO 10Don't ask for permission to do the right thing