Quality Assurance (Testing) in Scrum

development-processrelease-managementscrum

I just had a Release Retrospective for my scrum team. We talked a lot about our release process.

I pointed out that because our company is not able to tolerate bugs in our production environment we are not be able to adhere to the traditional scrum mantra of releasing often.

In short, we are a medical company. Bugs in production can cause issues with patient care. (A rapid fix release does not help the patient that was negatively impacted by the bug.)

I pointed out that scrum does not have a formal quality assurance process. (It is assumed that testing will be done during development.)

I then stated that scrum has an implied expectation of bugs in production. (Based on the process of releasing early and often.) The Scrum Process people in the room said that scrum is not that way. They said that properly done scrum can be bug free in production.

So here is my question:

How does testing and quality assurance work for scrum? (So that there is very low occurrence of bugs in production.)

OR

Is there documentation that bugs are expected to a small degree in Scrum (along with quick follow up releases)?

NOTE: This is for full enterprise level development. We have 6+ WCF services, several Service Buses, 4 databases, a WPF front end application and a Web Interface all written by two separate scrum teams of about 6-8 people each. This means answers that include just coding it right the first time are not realistic.

NOTE II: I know that no software product is going to be bug free. But our release process (non-agile) catches the few that get past our development process and brings our software fairly close to the "No Bugs" level.

Best Answer

How does testing and quality assurance work for scrum? (So that there is very low occurrence of bugs in production.)

Actually, I don't think SCRUM addresses this. SCRUM does not cover all stages of a product/project. SCRUM is mainly about organizing the development itself - the part from "we have an idea for a feature" to "the dev team thinks this is production ready". It does not cover the very first part of a project (basic idea, project vision, finding stakeholders, getting a budget...), and it does not cover the final delivery (deployment, customer feedback etc.).

So if you feel you need an additional stage after the SCRUM team is done, by all means have a separate stage of QA testing, regression testing, certification, whathever, before going into production.

You still get the value of frequent releases because there is something to test and get feedback from stakeholders - but just because you want feedback does not mean you must ship to customers (though this is often helpful). Note that SCRUM speaks of a "potentially shippable product", because you might not actually want to ship the product for various reasons.

Note: Obviously, the disadvantage of a separate QA/testing stage is that it will take longer to actually ship a feature to customers. However, if quality is more important than quickly shipping new features, then that may be the right compromise for you - that is up to the stakeholders and developers to decide.