Optimizing Your Release Management Process Deiner - TechTarget...Unit testing is the right way to...

Preview:

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

Recommended