Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Continuous Integration
Optimizing Your Release Management Process
Continuous Integration? Why should I care? What’s in it for me?
Continuous Integration? Why should I care? What’s in it for me?
The cost of development is only a small part in the TCO
Continuous Integration? Why should I care? What’s in it for me?
The cost of development is only a small part in the TCO
Huge part of geing software to ship is bug remediation
Continuous Integration? Why should I care? What’s in it for me?
The cost of development is only a small part in the TCO
Huge part of geing software to ship is bug remediation
Commercial development—you may only get one chance
Continuous Integration? Why should I care? What’s in it for me?
The cost of development is only a small part in the TCO
Huge part of geing software to ship is bug remediation
Commercial development—you may only get one chance
IT development—schedules depend on being done on time, too!
Writing Software is a Wicked Problem
Writing Software is a Wicked Problem
Wicked problems can only be clearly de"ned by solving them
Writing Software is a Wicked Problem
Wicked problems can only be clearly de"ned by solving them
Insufficient design and testing have brought down bridges
Writing Software is a Wicked Problem
Wicked problems can only be clearly de"ned by solving them
Insufficient design and testing have brought down bridges
Software can be brought down in the same way
Writing Software is a Wicked Problem
Wicked problems can only be clearly de"ned by solving them
Insufficient design and testing have brought down bridges
Software can be brought down in the same way
Writing software is actually harder than building bridges, because has millions more parts than bridges do
So How Exactly Do We Get To Quality in Our Code?
So How Exactly Do We Get To Quality in Our Code?
Agile is more than just a social process in making software
So How Exactly Do We Get To Quality in Our Code?
Agile is more than just a social process in making software
Being Agile also requires beer engineering practices
So How Exactly Do We Get To Quality in Our Code?
Agile is more than just a social process in making software
Being Agile also requires beer engineering practices
“Technical excellence and good design enhances agility”
So How Exactly Do We Get To Quality in Our Code?
Agile is more than just a social process in making software
Being Agile also requires beer engineering practices
“Technical excellence and good design enhances agility”
We get there with eXtreme Programming practices
I Thought My Job Was To Write Code. Now I’m Told To Right It!
I Thought My Job Was To Write Code. Now I’m Told To Right It!
Writing code right is what we are after
I Thought My Job Was To Write Code. Now I’m Told To Right It!
Writing code right is what we are after
Constantly "xing mediocre code is expensive
I Thought My Job Was To Write Code. Now I’m Told To Right It!
Writing code right is what we are after
Constantly "xing mediocre code is expensive
Unit testing is the right way to write quality code
I Thought My Job Was To Write Code. Now I’m Told To Right It!
Writing code right is what we are after
Constantly "xing mediocre code is expensive
Unit testing is the right way to write quality code
Pair programming allows for constant code reviews
I Thought My Job Was To Write Code. Now I’m Told To Right It!
Writing code right is what we are after
Constantly "xing mediocre code is expensive
Unit testing is the right way to write quality code
Pair programming allows for constant code reviews
TDD allows for continuous design improvements
I Thought My Job Was To Write Code. Now I’m Told To Right It!
Writing code right is what we are after
Constantly "xing mediocre code is expensive
Unit testing is the right way to write quality code
Pair programming allows for constant code reviews
TDD allows for continuous design improvements
Small releases expose code early and often for user review
I Thought My Job Was To Write Code. Now I’m Told To Right It!
Writing code right is what we are after
Constantly "xing mediocre code is expensive
Unit testing is the right way to write quality code
Pair programming allows for constant code reviews
TDD allows for continuous design improvements
Small releases expose code early and often for user review
CI gives us the time to make all of the above possible
What sort of testing do we do?
What sort of testing do we do?
Doesn’t work: ad hoc and V model testing
What sort of testing do we do?
Doesn’t work: ad hoc and V model testing
Hit or miss: alpha and beta testing
What sort of testing do we do?
Doesn’t work: ad hoc and V model testing
Hit or miss: alpha and beta testing
Unsure of what it means: QA (which is usually QC) testing
What sort of testing do we do?
Doesn’t work: ad hoc and V model testing
Hit or miss: alpha and beta testing
Unsure of what it means: QA (which is usually QC) testing
Works and should be automated:
What sort of testing do we do?
Doesn’t work: ad hoc and V model testing
Hit or miss: alpha and beta testing
Unsure of what it means: QA (which is usually QC) testing
Works and should be automated: Functional testing (black as well as white box)
What sort of testing do we do?
Doesn’t work: ad hoc and V model testing
Hit or miss: alpha and beta testing
Unsure of what it means: QA (which is usually QC) testing
Works and should be automated: Functional testing (black as well as white box)
Non-functional testing (performance, volume, stress, etc.)
What sort of testing do we do?
Doesn’t work: ad hoc and V model testing
Hit or miss: alpha and beta testing
Unsure of what it means: QA (which is usually QC) testing
Works and should be automated: Functional testing (black as well as white box)
Non-functional testing (performance, volume, stress, etc.) Smoke testing
What sort of testing do we do?
Doesn’t work: ad hoc and V model testing
Hit or miss: alpha and beta testing
Unsure of what it means: QA (which is usually QC) testing
Works and should be automated: Functional testing (black as well as white box)
Non-functional testing (performance, volume, stress, etc.) Smoke testing
Deployment testing
How does a Continuous Integration server work?
How does a Continuous Integration server work?
First need to get what we want to do under scripted control
How does a Continuous Integration server work?
First need to get what we want to do under scripted control
Then, we can use scheduled or triggered automation
How does a Continuous Integration server work?
First need to get what we want to do under scripted control
Then, we can use scheduled or triggered automation
Scheduled automation works similar to a cron job
How does a Continuous Integration server work?
First need to get what we want to do under scripted control
Then, we can use scheduled or triggered automation
Scheduled automation works similar to a cron job
Triggered automation works based on something else happening
How does a Continuous Integration server work?
First need to get what we want to do under scripted control
Then, we can use scheduled or triggered automation
Scheduled automation works similar to a cron job
Triggered automation works based on something else happening
Typical triggers are from SCM or other automation tasks
What does a Continuous Integration server produce?
What does a Continuous Integration server produce?
CRISP builds
What does a Continuous Integration server produce?
CRISP builds
Test results to monitor quality from
What does a Continuous Integration server produce?
CRISP builds
Test results to monitor quality from
The artifacts generated during the run
What does a Continuous Integration server produce?
CRISP builds
Test results to monitor quality from
The artifacts generated during the run
Information radiation of the results
What does a Continuous Integration server produce?
CRISP builds
Test results to monitor quality from
The artifacts generated during the run
Information radiation of the results
Safety net to allow us to know that we are “ready to ship”
Wait a minute… Some of this seems real hard!
Wait a minute… Some of this seems real hard!
There is no silver bullet product
Wait a minute… Some of this seems real hard!
There is no silver bullet product
But you can automate just about anything
Wait a minute… Some of this seems real hard!
There is no silver bullet product
But you can automate just about anything
Use good OO practices, such as IoC, for breaking dependencies
Wait a minute… Some of this seems real hard!
There is no silver bullet product
But you can automate just about anything
Use good OO practices, such as IoC, for breaking dependencies
Treat databases like code and match schemas to code versions
Wait a minute… Some of this seems real hard!
There is no silver bullet product
But you can automate just about anything
Use good OO practices, such as IoC, for breaking dependencies
Treat databases like code and match schemas to code versions
User interfaces will require frameworks such as Selenium
Wait a minute… Some of this seems real hard!
There is no silver bullet product
But you can automate just about anything
Use good OO practices, such as IoC, for breaking dependencies
Treat databases like code and match schemas to code versions
User interfaces will require frameworks such as Selenium
CI server based on build agents makes sense
Wait a minute… Some of this seems real hard!
There is no silver bullet product
But you can automate just about anything
Use good OO practices, such as IoC, for breaking dependencies
Treat databases like code and match schemas to code versions
User interfaces will require frameworks such as Selenium
CI server based on build agents makes sense
Proper set of test machines is needed for optimal results
Wait a minute… Some of this seems real hard!
There is no silver bullet product
But you can automate just about anything
Use good OO practices, such as IoC, for breaking dependencies
Treat databases like code and match schemas to code versions
User interfaces will require frameworks such as Selenium
CI server based on build agents makes sense
Proper set of test machines is needed for optimal results
Preference is for builds triggered on repository commits
Wait a minute… Some of this seems real hard!
There is no silver bullet product
But you can automate just about anything
Use good OO practices, such as IoC, for breaking dependencies
Treat databases like code and match schemas to code versions
User interfaces will require frameworks such as Selenium
CI server based on build agents makes sense
Proper set of test machines is needed for optimal results
Preference is for builds triggered on repository commits
Schedule NFR and other long running tests for off-hours
The road to Continuous Integration takes us way past testing!
The road to Continuous Integration takes us way past testing!
Metrics are another factor to indicate quality
The road to Continuous Integration takes us way past testing!
Metrics are another factor to indicate quality
Deployment packaging and testing of the packaging
The road to Continuous Integration takes us way past testing!
Metrics are another factor to indicate quality
Deployment packaging and testing of the packaging
Deployments can be tested as well
The road to Continuous Integration takes us way past testing!
Metrics are another factor to indicate quality
Deployment packaging and testing of the packaging
Deployments can be tested as well
Monitoring of deployed systems may be useful
Poor quality? “I’m not going to take it anymore!”
Poor quality? “I’m not going to take it anymore!”
This is really just a modest proposal that makes sense
Poor quality? “I’m not going to take it anymore!”
This is really just a modest proposal that makes sense
The truth is that quality comes from technical excellence
Poor quality? “I’m not going to take it anymore!”
This is really just a modest proposal that makes sense
The truth is that quality comes from technical excellence
Blaming QA and DevOps for poor quality is not fair
Poor quality? “I’m not going to take it anymore!”
This is really just a modest proposal that makes sense
The truth is that quality comes from technical excellence
Blaming QA and DevOps for poor quality is not fair
That makes as much sense as shooting the messenger on bad news
Poor quality? “I’m not going to take it anymore!”
This is really just a modest proposal that makes sense
The truth is that quality comes from technical excellence
Blaming QA and DevOps for poor quality is not fair
That makes as much sense as shooting the messenger on bad news
Fixing problems late in the cycle is expensive on many fronts
Poor quality? “I’m not going to take it anymore!”
This is really just a modest proposal that makes sense
The truth is that quality comes from technical excellence
Blaming QA and DevOps for poor quality is not fair
That makes as much sense as shooting the messenger on bad news
Fixing problems late in the cycle is expensive on many fronts
Take control of the situation and everyone bene"ts!
Fin
Continuous Integration
Optimizing Your Release Management Process