69
Continuous Integration Optimizing Your Release Management Process

Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

Continuous Integration

Optimizing Your Release Management Process

Page 2: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

Continuous Integration? Why should I care? What’s in it for me?

Page 3: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

Continuous Integration? Why should I care? What’s in it for me?

The cost of development is only a small part in the TCO

Page 4: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 5: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 6: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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!

Page 7: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

Writing Software is a Wicked Problem

Page 8: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

Writing Software is a Wicked Problem

Wicked problems can only be clearly de"ned by solving them

Page 9: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 10: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 11: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 12: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

So How Exactly Do We Get To Quality in Our Code?

Page 13: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

So How Exactly Do We Get To Quality in Our Code?

Agile is more than just a social process in making software

Page 14: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 15: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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”

Page 16: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 17: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

I Thought My Job Was To Write Code. Now I’m Told To Right It!

Page 18: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

I Thought My Job Was To Write Code. Now I’m Told To Right It!

Writing code right is what we are after

Page 19: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 20: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 21: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 22: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 23: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 24: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 25: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

What sort of testing do we do?

Page 26: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

What sort of testing do we do?

Doesn’t work: ad hoc and V model testing

Page 27: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

What sort of testing do we do?

Doesn’t work: ad hoc and V model testing

Hit or miss: alpha and beta testing

Page 28: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 29: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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:

Page 30: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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)

Page 31: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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.)

Page 32: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 33: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 34: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

How does a Continuous Integration server work?

Page 35: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

How does a Continuous Integration server work?

First need to get what we want to do under scripted control

Page 36: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 37: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 38: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 39: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 40: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

What does a Continuous Integration server produce?

Page 41: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

What does a Continuous Integration server produce?

CRISP builds

Page 42: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

What does a Continuous Integration server produce?

CRISP builds

Test results to monitor quality from

Page 43: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

What does a Continuous Integration server produce?

CRISP builds

Test results to monitor quality from

The artifacts generated during the run

Page 44: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 45: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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”

Page 46: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

Wait a minute… Some of this seems real hard!

Page 47: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

Wait a minute… Some of this seems real hard!

There is no silver bullet product

Page 48: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

Wait a minute… Some of this seems real hard!

There is no silver bullet product

But you can automate just about anything

Page 49: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 50: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 51: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 52: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 53: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 54: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 55: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 56: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

The road to Continuous Integration takes us way past testing!

Page 57: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

The road to Continuous Integration takes us way past testing!

Metrics are another factor to indicate quality

Page 58: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

The road to Continuous Integration takes us way past testing!

Metrics are another factor to indicate quality

Deployment packaging and testing of the packaging

Page 59: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 60: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 61: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

Poor quality? “I’m not going to take it anymore!”

Page 62: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

Poor quality? “I’m not going to take it anymore!”

This is really just a modest proposal that makes sense

Page 63: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 64: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 65: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 66: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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

Page 67: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

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!

Page 68: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

Fin

Page 69: Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to write quality code Pair programming allows for constant code reviews TDD allows for

Continuous Integration

Optimizing Your Release Management Process