QA Labs Inc.
Issue #36 - Oct 2005
QA Labs Testing Treats
services@qalabs.com  -  http://www.qalabs.com
 Reduce costs - Take advantage of lower labour costs and today's exchange rate. Make the choice to hire QA Labs Inc.

Archives... Archives of this newsletter along with other on-line resources are available on our website.


Test Earlier... It is a well-established fact that the sooner a defect is found the less expensive it is to fix. Early involvement also allows evaluation of important planning, design, and development decisions with respect to how these decisions aid or impair the testability of the application.



Outsource Testing... We have the facilities and the people - you have the software. We can assist your in-house test team by performing system / compatibility testing, functionality testing, usability testing, performance testing, and localization testing to help you make sure you're ready to go to market.



Regression Testing... Outsource your regression testing and keep your software reliable. Working in parallel with your in-house team, we can help ensure that after the latest additions and changes your software continues to work across your supported configurations: operating systems, processors, browsers, networks, etc. with effective test plans, leveraged automation and custom facilities.



TX Packages... Do you need short-term test resources? Do you want to try outsourced test execution? QA Labs' Test Execution Packages give you a zero ramp-up, zero overhead, full reporting solution right at your fingertips.



Roadmaps... Improve product quality and reduce support costs with a Roadmap to Quality. QA Labs can investigate your current project workflows and tools to produce a report of recommendations and Quick Wins tailored to you - all in parallel to your current ship cycle and at a low fixed cost.



Tool Choices... Specific selection criteria in advance of a significant software purchase are crucial. QA Labs has the expertise required to provide you with an objective evaluation of the commercial tools that may best fit your requirements. Before you commit valuable time and money, let us do the evaluation that will let you make the best decision.

QA Labs brings you practical tips and tools on testing, quality assurance (QA), and related topics through this monthly e-newsletter.

Upcoming Course Announcement:

Register now for QA Labs' four-day Principles and Components of Successful Test Team Management course presented through the University of British Columbia Continuing Studies on October 11 - November 01, 2005

Visit the course links above, http://www.tech.ubc.ca/softeng/curric.html, or call 604-822-1420 to register.


FEATURE ARTICLE

This month's article author: Cip Ticea, editor: Trevor Atkins.

Quality Approach As A Strategic Differentiator

Analysts have noted that the era of "deadline-driven" and "do more for less (cost saving)" is ending. More and more companies today have adopted a new mantra: "do the right things the right way". Time to market, cost and now quality are key ingredients of today’s corporate strategies.

It is important to note that real life will drive company executives to commit to this approach only if quality is perceived as strategic market differentiator.

The Challenge

For those that work in QA/QC area, it is important to know what to do in order to bring quality up to this "market differentiator" statute.

The roadmap to put it in practice usually starts with getting executive's formal "go do it" type commitment. Once you have the commitment, the next step is to write it down in the form of a policy. This policy would cover the basic principles on which "quality" is to be built. The policy will spell out corporate business strategies in the form of related engineering principles. Now you have the money (a.k.a the commitment) and the standards and rules (a.k.a the policy). The next step is to define the best possible testing process that fits your newly defined needs and within your constraints.

In an ideal world, every company ought to have their testing process defined. One mistake companies might make is to develop or adopt a testing process and then expect that it will address all their testing needs. The magnitude of the impact of this mistake is directly proportional to the diversity of projects a company holds in its portfolio. The higher the diversity, the more likely that a single testing process/framework will fail to respond to the company's overall testing needs.

In support of this statement consider the following challenge: assume you are the QA manager in company with a diverse project portfolio. What would work best for you: to be given a prescribed, well laid-out formalized process and testing artifacts (i.e. templates, tools, etc) or to have the flexibility to create your own testing process and artifacts on a per project basis? Many of us would answer this question with: "it depends."

Looking at this from another angle, our possible choice could be somewhere between the two ends of the spectrum: "no process" which might equate to full flexibility and "very detailed process" which equates to rigidity.

One can approach the answer from a perspective of economics. What the executives want to hear is that we are productive and that we "do the right things the right way". Therefore we make clear at the corporate level that it is necessary to have a testing policy and a set of test practices which one could use to quickly assemble a custom fit-for-purpose test process for each given project.

The key principle behind this rationale is that quality can be improved while time-to-market and cost go down by re-using and refining components of a well architected test framework. In this context, it pays to know how to architect/tune-up your testing process to achieve the highest productivity and quality possible.

The Options

The external context of the testing process often dictates what flexibility means from the testing perspective. There are many variables that come into play and in support of what has been suggested above we will focus on the relationship between a given Software Development Lifecycle (SDLC) model and associated testing techniques.

There are many off-the-shelf SDLCs available today, each with its own related testing approach and/or philosophy. Each one of them is centered on one or more of the following main activity classes: requirements capture, design, coding, testing, roll-out, and maintenance.

It is common that a project is matched to a preferred SDLC rather than to a preferred testing process. Also, the "real world" suggests that very few companies follow a prescribed SDLC to the letter. Most often, the project manager ends up customizing an SDLC by borrowing approaches and techniques from existing, "proven", SDLCs they have had success with in the past. It is less common that a project manager has the ability to select testing techniques to match the chosen project execution approach. This is where the QA/Test architect comes in.

A well architected testing framework should integrate seamlessly with the SDLC of choice for any "normal"–type project a company might undertake. Being able to assemble that fit-for-purpose test process and techniques for a given SDLC could help project’s bottom line.

The following table highlights testing techniques employed in a few of some popular SDLCs as they are reflected in today’s literature and/or research:

SDLC Model Testing approach (The WHAT = activities & the HOW=techniques)
Boehm's Spiral Model

SDLC key note: Uses prototyping and re-planning with reassessment of risks and constraints with each prototype.

Common techniques:

  1. Risk-driven testing: During the risk analysis phase of the SDLC, testing is used to identify risks. Defect analysis and defect patterns are key to identifying the "soft" areas of a product.
  2. Time-boxing techniques. Testing starts early in product development life cycle.
  3. Risk-based test success/stop criteria. Test coverage is not an explicit goal. Test strategy aims at uncovering as many risks as possible and help builders decide if they can move on to the next spiral or not.

Notes:

  1. Within the product development phase of the spiral, testing is very similar to that seen in waterfall life cycles except smaller in scope and duration.
  2. Time available for testing increases as there is a longer time between the start of testing and going live.
Personal Software Process (PSP)

SDLC key note: Training the developer to understand how to identify, analyze, and improve individual processes. The goal is to enable each individual to take charge of improving their own productivity and deliver on pre-established quality goals.

Common techniques:

  1. Reviews (code inspection, personal review, walkthrough).
  2. Early defect removal. Developers are encouraged to focus on removing defects early, record and manage defects, and conduct regular defect analysis.
  3. Strive to improve the testing process continuously.
  4. Personal Defect Management (fix your own defects soon after they have been injected; personal design & code reviews following prescribed checklists/guidelines).
Waterfall and/or waterwheel SDLC

( i.e. Giddings Domain-Dependent Life Cycle)

SDLC key note: Waterfall model with feedback loops, and experimentation or prototyping. Relies on large test phases which start after coding has completed.

Common techniques:

  1. Relies on internal deliveries of code to testers who look at the product from both a clear-box and black-box perspective.
  2. Clients are involved in testing at the end during acceptance testing.
  3. Additional, post-delivery testing is performed to validate product.

Notes:

  1. Testing improvements are usually possible at the end of the project (i.e. as part of the post-mortem/close-out analysis). It takes a longer period of time to get better because the opportunities to trial and implement new ideas are relatively far between.
Agile Programming SDLC

(covers approaches such are XP Programming, SCRUM, etc)

SDLC key note: Incremental approach relies on continuous (automated) testing by developers, on oral rather than written communication, and close collaboration.

Common techniques:

  1. Test-driven development. Developers are expected to write test cases before the design and coding are done. These test cases are to be executed by the developer once the coding is complete. Very important is that test cases are updated to improve readability/usefulness.
  2. Automation. When test cases are "stable" they are automated, preferably in groups such that they can be associated with a system design package/module.
  3. Good enough quality. The aim is to deliver "good enough" quality. Usually the good enough depends on factors related to the complexity of the system, criticality of its core functionality (i.e. are people's lives at stake or not? Is this product vital to company's growth strategy? etc.), customer's tolerance to errors, etc.
  4. Testing as risk mitigation strategy. Integration-type testing is regarded as main mitigation strategy for risks related to putting together code changes from various development teams.
  5. Acceptance tests (a.k.a. "User-stories") are usually written by the "customer/business" representatives. These tests should be completed before the developers starts designing and coding.
STEP (Systematic Test and Evaluation Process) SDLC

(Similar SDLCs: V- and W-model, Component Test Process Life Cycle)

SDLC key note: Life cycles that emphasizes the place of and control of software testing. Main activities are: Develop test strategy and plan; Design and implement fit-for-purpose test environment; Execute Test and collect results; Evaluate test process and test infrastructure and plan improvements (from one iteration to another).

Common techniques:

  1. Risk-driven testing. Concentrate on testing what matters.
  2. Evolutionary development of the test plan. Start with an outline plan and then add details as project advances. Start planning based on Requirements (acceptance test plan & cases), then based on high-level design (system test plan & cases), detailed design (integration test plan & cases) and coding (unit test plans & cases).
  3. Test design at each stage is completed as soon as possible.
  4. Employs a bottom-up approach to executing testing (i.e. unit tests first, module, system, etc).
  5. Map test cases to requirements, design, and code units with full coverage as a declared goal.
  6. Discourages un-structured testing (i.e. ad-hoc).
  7. Encourages/relies on collaboration among senior resources to identify risks, set test objectives, and take decisions fast through techniques such is "brainstorming meetings".
  8. Focuses on maintaining visibility and traceability of testing effort, deliverables and overall testing progress.
  9. STEP uses IEEE standard document templates as a recommended guideline.

This information is not a comprehensive listing of today's techniques. The intention is to show that testing is approached differently depending on the SDLC practiced by the project team.

From a practical perspective, each project has its own special needs which would be best served by a unique collection of testing techniques.

Conclusion

Starting in 2004, many companies have started to put "quality first" in their mission statements - a trend that Gartner predicts will continue. Good testing practices are key ingredients to convert this from a statement of intention into competitive advantage.

Corporate commitment to continuous improvement, well defined test process, and fit-for-purpose tools can dramatically reduce costs and time to market while overall product quality increases.

It is not enough to start testing early as much as to do the right things the right way.

About QA Labs Inc...

QA Labs is a powerful player on your team supplying the critical competitive advantage you need today. Our mission is to help you make your software products succeed in the marketplace, whatever the climate. We work with you to make wise choices that reflect project constraints, industry trends, and business considerations. We are the largest independent software quality assurance and testing service provider in Canada. For more information, please visit www.qalabs.com.

Contact Us...

QA Labs Inc.
#470 - 1122 Mainland St.
Vancouver, BC, Canada, V6B 5L1

Tel: 604.605.0111 x111
Fax: 604.484.2680
Email: services@qalabs.com
Web: http://www.qalabs.com


Subscribe to this newsletter at our website.

Unsubscribe from this newsletter at our website.

Copyright © 1999-2005 QA Labs Inc. All rights Reserved.