Quality Control

June 2nd, 2009  |  Published in Quality Control, Quality Management, Software Development Lifecycle

Testing involves operation of a system or application under controlled conditions and evaluating the results. The controlled conditions should include both normal and abnormal conditions. Testing should intentionally attempt to make things go wrong to determine if things happen when they shouldn’t or things don’t happen when they should. It is oriented detective action.

Highlights of the QC Role during the Testing Phase:

1.    Executes testing strategy described in the test plan.
2.    Executes end to end testing cycles known as regressions.
3.    Performs acceptance testing.
4.    Performs black box, white box, integration and system testing.
5.    Performs load and stress testing.
6.    Performs usability testing.
7.    Performs concurrency testing.
8.    Performs security testing.
9.    Performs Alpha and Beta Testing.
10.    Performs Ad Hoc testing.
11.    Performs scalability testing.
12.    Performs usability testing.
13.    Performs sanity and smoke testing.
14.    Performs browser compatibility testing for web applications.
15.    Creates and presents test log reports and test incident reports.
16.    Logs defects in bug tracking tools.
17.    Assign bugs to relevant stakeholders.
18.    Performs regression testing.
19.    Maintains bug reports and categorizes them into in various ways. Category examples include:

  • logic level issue
  • GUI issue
  • Database level issue.

20.    Performs ripple analysis when changes are incorporated into the code.
21.    Prepares ripple analysis report.
22.    Calculates DRE (Defect Removal Efficiency).
23.    Prepares bug sheet.

Highlights of QA/QC Role in Deployment Phase:

1.    QA prepares CRF (Change request form) template.
2.    Prepares installation/deployment guide.

Alpha Release

The first semi-functional version of the application is available for testing, mostly done at the unit level by engineers. Additional QA Resources are acquired to help with the testing cycles and the application is deployed in a separate QA environment for testing.

Beta Release

Software is considered beta quality when the features identified in its scope are complete and it has stabilized. At this point, development is exclusively targeted at fixing defects. Fixed bugs should outnumber new and open bugs. Defects continue to be found & reported and fixes are verified or rejected.

GMC (Golden Master Candidate)

This is usually the final build candidate and all severity level one and two defects are retested and verified. Severity level three and four defects are also tested to make sure the extent of the problem is known.

GM (Golden Master)

This is the final build where all severity level one and two defects have been fixed and all severity level three and level four defects are understood. QA signs off on the product and confirms that it meets all performance and functionality requirements.

A Tester’s role on Agile Projects:

First let’s take a look at testers in the traditional software development life cycle. Some examples of what we usually find are:

  1. A separate QA group.
  2. The tests are derived from detailed requirements and specifications.
  3. QA may or may not participate in planning sessions, but is not usually privy to design considerations until after they have been finalized

Now, if we observe a tester in an agile project, we find that the tester:

  1. is part of the team and attends all team sessions.
  2. is an integral part of the planning game.
  3. practices pair testing, i.e. collaborates with the developers to get good tests

Agile Testing Values

The four values that are part of the XP philosophy can be applied to testing as well. We will discuss what this means, and how they are applied to the tester role.

  • Communication
  • Simplicity
  • Feed Back
  • Courage

Understanding the tools

What tools does an agile tester need? Many of them are the same that a traditional tester would use, but applied differently. Some of the questions are listed below. I can explain them in comprehensive and precise way based on the demand of the customer:
1.    Can the same skills be applied that were learned in the traditional QA role?
2.    What is the difference between unit tests and acceptance tests?
3.    What is testing Life Cycle.
4.    What are different stages of testing cycle.
5.    How QA pro actively participate in requirements gathering phase?.
6.    How do you write an automated acceptance test?
7.    When would you do manual testing?
8.    Why use a risk-based approach to testing?
9.    What do we mean by Context Driven testing?

The Role of QA in Agile Projects

An interesting question in Agile Development is “how do you incorporate QA?” I guess this depends on what you see as the role of QA. For instance, if you have your QA people involved from start to finish, then you really wouldn’t have to change a thing. For instance, a QA person can:
•    Help to determine if your stories are well defined
•    Suggest adding stories related to testability
•    Make sure that people are creating good unit tests and/or write unit tests
•    Increase your code coverage by adding more automated tests
•    Write tests for stories for test first development.
•    Organize usability testing
•    Add stories for improving usability
•    Do exploratory testing on early builds
•    Verify the completion of stories as they are completed

Leave a Response