Fundamentals of Quality Assurance Final
Fundamentals of Quality Assurance Final
Fundamentals of Quality Assurance Final
Quality Assurance
WHITEPAPER
www.getzephyr.com
Table of contents:
3
3
6
7
9
9
10
10
11
13
What is Quality?
Bug free? Is there really such a thing?
What is the Scope of our testing?
How much does a bug cost?
Who owns the overall Quality of the product?
How does the QA team provide value to the
project, other than nding bugs?
Data is Everything
Test Case Data
Bug Data
Summary
www.getzephyr.com
What Is Quality?
As a Quality Assurance Manager or Analyst, our very title tells us what our role is we assure quality.
It seems to be such a simple concept but one that is often misunderstood or misinterpreted by many in a
software development and testing organization. Hiding behind those words is a world of interpretation and
nuance that can be claried and dened further.
Lets start with a very basic concept what exactly is Quality? Typical denitions include such phrases as
the degree of excellence of something, or how good or bad something is or a high level of value.
When we apply those concepts to building and testing software we can surmise that software with a
high level of value and a degree of excellence would be bug-free, do the job it was designed to do, and
have a high degree of stability and value to the user.
#include <stdio.h>
main( )
{
printf("hello, world\n");
}
The Hello World program above is usually the rst program beginning coders write as they are learning
a new language. It is hard to argue that the Hello World program above is not bug free. It works perfectly
every time you run it, and it always prints exactly what it is supposed to hello, world. So it meets the
denition of bug free and a degree of excellence. However, this is a trivial example and one that fails the
high level of value test, as it does not produce any real and valuable output (except for introducing new
programmers to their rst program).
Software in todays world is complex, and that complexity is increasing. As far back as 1970 E.W Dijkstra
discussed the idea of complexity and software bugs in a paper titled Structured Programming. One of the
many corollaries established by Dijkstra is that Program testing can be used to show the presence of bugs,
but never their absence(1). To summarize Dijkstras thinking; without testing every possible outcome of a
program we cannot be sure that a bug does not exist. And complex programs can consist of thousands or
millions of possible code paths and outcomes. Testing each and every outcome of complex software would be
prohibitive in terms of cost and time.
3
www.getzephyr.com
Its come to light in recent years that something often perceived as simple, such as the engine
management or infotainment software that runs in a modern car, can contain between 1M and 100M lines of
code(2).
So it appears that we cannot necessarily test every possible outcome and every possible code path in a
piece of software thats been given to us to test, because QA teams are generally charged with testing (the
quality component) on a schedule (the time component) and within a budget (the cost component). A testing
organization needs to balance these three components, quality, cost, and time, in order to be successful and
many organizations struggle to get this balance correct. We can visualize this struggle with a modied version
of the traditional Fast, Good, Cheap diagram thats popular in project management circles. However our
version will be labeled Fast, Low Cost, Highest Quality
HIGH QUALITY
Balance Diagram
LOW COST
FAST
HIGH QUALITY
HIGH QUALITY
LOW COST
FAST
Figure 1
LOW COST
FAST
Figure 2
In this diagram, the dot (or balance point) close to any one of the three vertices indicates that vertex
takes priority over the other two. A dot directly in the center of the triangle indicates a balance between Cost,
Speed and Quality with each having equal weight or priority in the project. For example, Figure 1 below
indicates an emphasis on Speed and low Cost, with a lowered emphasis on Quality. Figure 2 shows an
emphasis on Quality, with a correspondingly increased timeline and cost factor.
www.getzephyr.com
In viewing the project balance with this type of diagram, it becomes apparent that being as bug free as is
possible means making sacrices in time and cost (increasing both).
One thing that is critical to note, is that this balance will be dierent depending on the purpose behind
the software. For example, hosted web based applications for sharing photos with friends can be updated
quickly and easily if a bug is found. There may be no real downtime involved and the impact of a bug in the
code might be a bad user experience, or a broken image link on the web page. While user experience issues
cannot be considered trivial for the company, it is not something that would necessarily have a major eect on
peoples lives or the companys nancial future. So our balance in this scenario may lean more towards the
Low Cost and Fast sides of the triangle, with a higher tolerance for bugs as they can be squashed relatively
easily.
HIGH QUALITY
LOW COST
FAST
However, consider something like the ight control software for a Boeing 787, or the code thats running
in a medical device such as an implanted heart debrillator/ pacemaker. In both of these examples, bugs in
the code which manifest as incorrect behavior can cause more than just a bad user experience it could
endanger lives and cause extreme nancial burdens for the company. In addition, delivering software updates
is very dicult and expensive (if not impossible, in the case of implanted devices). So in this case the balance
point should be much closer to the Highest Quality side of the triangle at the expense of Fast and Low
Cost.
HIGH QUALITY
LOW COST
FAST
So lets summarize the attributes of Quality; strive to ensure that the software under test is as bug free as
possible, while balancing the needs of the business around Cost and Timelines.
www.getzephyr.com
DEVELOPMENT
REQUIREMENTS
TESTING
www.getzephyr.com
development and testing had started. In my experience, I have found that agreement on the scope and detail
of the requirements documentation by the QA and development teams leads to a much smoother
development and testing cycles (sprints) through out the project development and testing.
For example the above image illustrates a specic project requirement, showing the specic test cases
linked to that requirement from Zephyr Test Manager. So requirements determine the scope of the testing if
you have 100 requirements, then your testing scope is to verify all 100 of those requirements are
implemented and functioning correctly (this is a bit of a simplistic example, but lets go with it for illustrative
purposes). Having this scope dened allows the team to determine another critical factor in the creation of
the product how to dene when we are done. While this may not seem like a major issue, without a
dened scope and a formal denition of what it means to be done it is possible for development and testing
to become an endless cycle of test/x/retest as new areas of functionality are discovered as the testing
progresses. If, however, you have 250 test cases covering the 100 requirements (that have been dened,
reviewed, and agreed upon by SA, development, QA, and the project owner) you can easily track progress to
timelines, and declare testing to be completed once the 250 tests have been run successfully with minimal
(and accepted) defects remaining.
COST
www.getzephyr.com
Requirement
Design
Development
Integration
Testing
UAT
Production
PHASE
The QA team can have a useful and productive role in the design discussions and determinations
by having a seat at the table and considering these discussions through a testing lense. Questions and
open discussion about the design of the software can lead to changes that prevent bugs that may
manifest themselves further downstream in the software development lifecycle.
The QA team should be involved in reviewing the requirements to ensure they are specic and
testable prior to development starting. This will ensure that the requirements are not ambiguous and
are properly testable by the QA team (and specic enough to drive precise development of the feature
set).
Reviewing the requirements in concert with the development team will lead to a common
understanding of the requirements, which in turn prevents dierent interpretations by development
and the testing team. Diering interpretations of the intention of design components frequently shows
up as bugs in later phases of the project.
All of these points lead to the discovery of issues much earlier in the product development lifecycle,
which in turn saves the organization time and money.
8
www.getzephyr.com
Validate the functionality of the software under test according to the requirements specication.
Open bug tickets for functionality that does not match the specications.
Helping investigate the root cause and providing information to the development team.
Retest the issue once the development team has xed and unit tested the issue.
Finding and quantifying issues is the role of QA, xing issues is the role of development team.
www.getzephyr.com
As a unit, the QA Team provides a much broader value proposition to the project, project managers, and
upper management. As discussed earlier, the team provides requirements and design validation early on in
the project. The benet of this validation is the identication and remediation of issues in the requirements
and design phases of the project, allowing for a quicker and less costly development, testing, UAT, and
production transition phases.
Data is Everything
As the QA team progresses through the testing phase of the project it produces vast amounts of data that
can be benecial as an aid to guide the projects process and predict outcomes regarding timelines, cost
factors, and resourcing.
The QA Lead should track and provide information about the test cases and the bugs found. Good test
case management system (such as Zephyrs Enterprise Test Management suite) can provide easily congurable
reporting functions that can provide regular updates on test case progress, bug status and priority, and trouble
spots within the development and test eort. As illustrated below, this data provides a wealth of information
about to the project team and management, which is then used to in risk mitigation, expectation setting, and
troubleshooting of the development and testing process.
Real-time Metrics
Testcase Creation
Testcase Execution
Defect
Requirements
Trend charts
Overall
Testcase Creation
Testcase Execution
20
12
8
12
Functional Te...
Acceptance T...
Defect
Carlos ...
Mike Betts
300
160
240
180
120
180
120
80
120
60
40
60
fada...
fkursh
mbetts
asteri...
Cycle 4
Cycle 2
Cycle 3
240
180
120
60
0
Apps
pviera
Cycle 1
300
shail...
Erika...
200
mbetts
Padma...
240
shailes...
Mike B...
Anyone
pviera
300
asterix...
ewinslow
12
Verification T...
16
12
20
16
16
No Comp...
Sys Admi...
Configura...
In Prog...
Closed
Open
Reope...
Resolved
Save
Cancel
As the project moves through its phases the team tracks progress using the test case completion rates.
This information (along with bug information, discussed below) adds to a critical view of the projects health.
The person in the project management role uses test case progress and completion information to predict
completion dates and manage schedule expectations, as well as monitoring cost and setting appropriate
expectations with the project stakeholder.
10
www.getzephyr.com
If the test case management tools provides information on re-run test cases (tests run multiple times due
to retests of bug xes) combined bug retest failure data, the team can create a more in-depth view of the
project progress and possible issues.
Bug Data
Bug tracking software (such as Zephyrs Enterprise Test Management , Bugzilla, JIRA, etc.) is an essential
tool for a testing eort of any scope. Software of this type allows the project team to capture critical data
about functional issues found in the software, including metadata around the component, release, or
functional area the bug applies to. Good bug tracking software will also provide a workow tool for managing
bugs throughout their lifecycle, allowing the tester to assign a bug to a developer for comment and xing, and
then the developer can reassign back to the tester for retest once it is complete.
QA TEAM
"QUANTIFIES
QUALITY"
PRODUCT
STAKEHOLDER
REPORTS
GO?
RELEASE TO
PRODUCTION
NO GO?
CONTINUE
DEVELOPMENT
AND TESTING
The workows are generally congurable and ensure that bugs are properly triaged, assigned, and do not
get lost in the system.
At a minimum, a good bug tracking system should allow the test team to report on the following
attributes:
bug by priority
bug by severity
bugs re-opened
www.getzephyr.com
Testing
Start
NUMBER OF BUGS
NUMBER OF BUGS
Time
Testing
End
Testing
Start
Time
Testing
End
Monitoring bugs in this fashion can alert a project manager or stakeholder to an issue with the project if,
for example, the number or severity of bugs is not declining as the project nears the end date.
The charts above illustrate the bug closure rate for a healthy project (left) and an unhealthy project
(right). Data like this can trigger intervention by the team Leads to determine why the bug rate is not
dropping.
12
www.getzephyr.com
This type of bug open rate prole can be cause by things like:
1
Requirements instability changes to requirements late in the development and testing of the
project
Over complex design an overly complex design can cause a high number of continuing issues
because any changes to extremely complex code is likely to cause unexpected side eects
Lack of quality unit testing code that comes to QA without proper unit testing manifests more
bugs than properly unit tested code
Poor development quality developers that are under undue pressure, or are being pushed beyond
their abilities
Additional reporting information produced by the QA team can help project management and project
stakeholders to determine the cause of an unhealthy project. Tracking the re-opening of bugs, and bugs that
have failed retest can (when combined with test case data around tests that have failed multiple times) give
insights into areas of the software where development is struggling. Having component information
associated with these failures can point to a possible design issue thats causing more bugs than average, or
even a development team thats skimping on the unit testing properly, leading to bugs in QA. This kind of data
can be invaluable when a project is struggling to stay on time and on budget, as it can guide us to design aws,
implementation aws, or even to teams that are not following process or functioning properly.
Summary
Assuring Quality is a complex and nuanced concept that is often not well understood. Quality is a
multi-dimensional measure that must take into consideration the cost and duration in determining the level of
quality a team must strive for. The scope of a testing eort is driven by a rm and agreed-upon set of
requirements or user stories with out a rm scope based on requirements risks to the projects quality and
schedule increase.
Quality is not owned by QA, but by the project stakeholder(s), and the QA teams responsibility is to
quantify the state of the software, providing data to the stakeholder such that they can make decisions about a
projects forward progression with full knowledge of the risks involved. In addition to nding bugs, the QA
team provides critical information to the project stakeholder(s) and managers that allow guidance and changes
in direction based on the current health prole of the project. Providing this information requires a good tool
suite which can minimize the overhead necessary mine for these reports.
With the insights and framework described in this white paper, a Quality Assurance manager can ensure
that the teams contribution to a software project assures business success.
13
About Zephyr
Zephyr is a leading provider of on-demand,
real-time enterprise test management solutions,
oering innovative applications and unparalleled,
metrics based visibility via real time dashboards into
the quality and status of software projects.
The feature rich products addresses todays dynamic
and global needs across a variety of industries
including nance, healthcare, mobile, IT services,
and enterprise software.
Zephyrs 8000+ global customers experience
improved productivity, faster time to market and
dramatic cost savings.