Custom Search

Collection of Useful Metrics by Software Testing Managers for Effective Test Management

Collection of Useful Metrics by Software Testing Managers for Effective Test Management

Software testing managers usually come across a vital & tricky question, "What metrics should be collected?" There is no pin pointed answer to this question. Fact remains that, metrics depend upon the varying needs of every development and testing organization. In fact software testing itself is a measurement activity involving collection of various metrics related to the quality of the software application being developed by a different group of people.

The Software Engineering Institute (SEI) has prescribed four basic metrics areas:

1) Schedule
2) Quality
3) Resources
4) Size

Though it is difficult to specify any particular set of metrics for any organization, it is ideal to work out at least one metric for each of the above mentioned four areas prescribed by SEI.

Despite complexity of the process of collection & use of metrics, following article describes various tips & strategies software testing managers adopt while effectively deploying different metrics all across their testing effort. This discussion should be helpful to the testing managers in using accurate metrics for their decision making, planning of time estimates, tracking of progress & improving their current processes.

Different metrics tabulated below represent good example in development as well as testing projects. We can create many more working examples for each of the five metrics described in the following table.


Sr.

Metric

For Software Testing

For Software Development

1

Size

Number of modules, lines of code, or test cases.

Number of modules or lines of code.

2

Schedule

Number of test cases written or executed versus the timeline.

Number of modules completed versus the timeline.

3

Resources

Money spent, hours of work.

Money spent, hours of work.

4

Quality

Defect Removal Efficiency (DRE), coverage.

Number of defects per line of code.

5

Rework

Number of test cycles to test bug fixes.

Lines of code written to fix bugs.

How the Test Managers use Metrics? 
Different test managers like software testing engineers, developers, development managers, and others personnel in the development team perform the following activities.

1) Identification of risky areas needing additional testing:
Experts declare that the areas of a system that have been the source of many defects in the past will very likely be a good place to look for defects now and in the future as well. So, by collecting and analyzing the defect density by module, the tester can identify potentially risky areas that warrant additional testing. "Pareto Analysis" does the similar thing. Likewise, using a tool to analyze the complexity of the code can help identify potentially risky areas of the system that require a greater testing focus.

2) Identification of additional training needs:
Metrics that measures information about the type and distribution of defects in the software, testware, or process can help us identify the training needs. For instance, if a certain type of defect, like a memory leak, is encountered on a regular basis, it may indicate that training is required on how to prevent the creation of this type of bug. Or, if a large number of "testing" defects are discovered (e.g. incorrectly prepared test cases), it is a certain pointer to provide more training in test case design.

3) Identification of process Improvement opportunities:
Similar analysis can be used to find out opportunities for process improvement. Rather than providing training, maybe the process can be improved or simplified, or maybe a combination of the two can be used. Another example would be that if the test manager found that a large number of the defects discovered were requirements related defects, the manager might conclude that the organization needed to implement requirement's reviews or preventive testing techniques.

4) Providing a basis for estimating:
In the absence of some kind of metrics, managers and practitioners remain helpless when it comes to estimation. Estimates of how long the testing will take, how many defects are to be expected, the number of testers needed, and other variables have to be based upon previous experiences. These previous experiences are nothing but "metrics," whether they're formally recorded or just happen to remain in the mind of the software engineer.

5) Providing metrics to trigger actions:
Metrics can be used as a trigger or threshold signaling that an action needs to be taken. Examples can be exit criteria, smoke tests, and suspension criteria. These are treated as mature metrics because for meters to be effective, they must be planned in advance and based upon some criteria established earlier in the project or on a previous project. However some exceptions always remain. Some organizations ship the product on a specified day, irrespective of the consequences. This is a live example of a metric triggering the action of shipment of the product when the particular date is reached.

6) Justification of budget, infrastructure, or training:
It is a common feeling among the test managers that they are understaffed and require more people, or they feel that they need a bigger budget or more training. Hence, without good metrics to support their feeling, their requests are not bound to reap any benefits. Test managers need to create sound metrics to justify their requests for additional persons, budgets and training needs.

7) Providing controlling & tracking of status:
Test managers (and testers, developers, development managers, and others) need to use metrics to control the testing effort and track progress. For example, most test managers use some kind of measurement of the number, severity, and distribution of defects, and number of test cases executed, as a way of marking the progress of test execution.

Different Groups of Popular Testing related Metrics according to the possibilities of controls they provide are as under

A) Groups of Metrics based upon the Project progress

1) Related to test planning and monitoring:

# Number of tasks started
# Number of tasks completed

2) Related to test development:

# Number of specified and approved test procedures
# Number of relevant coverages achieved in the specification, for example, for code structures, requirements, risks, business processes
# Number of other tasks completed

3) Related to test execution and reporting:

# Number of executed or initiated test procedures
# Number of passed test procedures
# Number of passed confirmation tests
# Number of test procedures run as regression testing
# Number of other tasks completed

4) Related to test closure:

# Number of tasks completed

For each of these groups described above we can collect metrics for:

# Time spent on specific tasks both in actual working hours and elapsed time
# Cost both from time spent and from direct cost, such as license fees

B) Groups of Metrics based upon the coverage:

# Number of coverage elements covered by the executed test procedures code structures covered by the test

C) Groups of Metrics based upon the incidents:

# Number of reported incidents
# Number of incidents of different classes, for example, faults, misunderstandings, and enhancement requests
# Number of defects reported to have been corrected
# Number of closed incident reports

D) Groups of Metrics based upon the confidence:

# Subjective statements about confidence from different stakeholders 

Nine Thumb-rules for Collecting & Using the Metrics:
Experts prescribe certain thumb rules for collecting & using various metrics that are given below.

1) Question the developers & software testing engineers:
Developers and software testing engineers are the best first hand source of information as to what metrics would be helpful to them in doing their jobs better. If these people don't believe in the metrics or feel that management is thrusting another useless metric on them, they will possibly revolt & avoid collecting the metric, or by falsifying the metric by writing down any older stuff. 

2) Use One Metric to Validate Another:
Rarely do we have enough confidence in any one metric that we would want to make major decisions based upon that single metric. In almost every instance, managers would be well advised to try to validate a metric with another metric. For greater test effectiveness, it is a good practice to accomplish the key measures by using more than one metric (e.g., a measure of coverage and Defect Removal Efficiency (DRE), or another metric such as defect age). Likewise, the test managers would not recommend the release of a product based on a single measurement. The test manager would rather base such a decision on information about defects encountered and remaining & the coverage and results of test cases etc.

3) Normalize the Values of the Metric:
Since every project, system, release, person, etc. is unique, all metrics will need to be normalized. It is a good idea to reduce the amount of normalization required by comparing similar objects rather than dissimilar objects (e.g., it would be better to compare two projects that are similar in size, scope, complexity, etc. to each other than to compare two dissimilar projects and have to attempt to quantify the impact of the differences).

As a rule of thumb, the metric must be as far as a true replication of truth. For example, if you don't have a reservoir of data, you could compare your project to industry data. This may be better than nothing, but you would have to try to account for differences in the company cultures, methodologies, etc. in addition to the differences in the projects. A better choice would be to compare a project to another project within the same company. Even better would be to compare your project to a previous release of the same project.

4) Measure the Value of Collecting the Metric: 
Collection & analysis of metrics can be extremely time consuming effort. Seasoned test managers try to view the value of every metric collected viz.-a-viz. effort required to collect and analyze the data. Software inspections are a perfect example. A normal part of the inspection process is to measure the number of defects found per man hour. We need to be quite careful with this data, because a successful inspection program should help reduce the number of defects found on future efforts, since the trends and patterns of the defects are rolled into a process improvement process (i.e., the number of defects per man hour must go down). A good example is the collection of data that no one is using. There might be a field on the incident report, for example, that must be completed by the author of a report that no one is using.

5) Revalidate the Need for Each Metric Regularly:
Good test managers as a routine evaluate the value of collecting a metric, to see if there's a continuing need for them. Metrics that are useful for one project, may not be as valuable for another (e.g., the amount of time spent writing test cases may be useful for systematic testing approaches, but has no meaning if exploratory testing techniques are used). A metric that is quite useful at one point of time may eventually outlive its usefulness. 

6) Simplify the Process of Collection & Analysis of Metric:
 
It is ideal to collect the metrics automatically. For example counting the number of lines of code, which is done automatically by our compiler. Collecting metrics as a by-product of some other activity or data collection activity is almost as good as collecting them automatically. For example, defect information must be collected in order to isolate and correct defects, but this same information can be used to provide testing status, identify training and process improvement needs, and identify risky areas of the system that require additional testing.

Let us keep it in mind that some metrics will have to be collected manually. For example, test managers may ask their testers to record the amount of time they spend doing various activities such as test planning. 

7) Maintain the Confidentiality of Data:
It is extremely important for the test managers to understand that certain data may be sensitive to other groups or individuals, and act accordingly. Test managers could benefit by understanding which programmers have a tendency to create more defects or defects of a certain type. While this information may be useful, the potential to alienate the developers should cause test managers to carefully weigh the benefit of collecting this information. Other metrics can be organizationally sensitive. For example, in some classified systems, the information about defects itself can be considered to be classified.

8) Look for Alternate Interpretations:
Generally there can be more than one way to interpret the same data. If, for example, you decide to collect information on the distribution of defects by programmers, you could easily assume that the programmers with the most defects are bad programmers. Upon further analysis, though, you may find out that they just write a lot more code, are always given the hardest programs, or have received particularly poor specifications.

9) Customize the Format of the Data as per the Audience:
Usually the test manager are given the opportunity to brief developers, users, upper management, marketing, and many other interested parties. When presenting the data, it is important for the test manager to consider the background of the audience and their needs. For example, if you are presenting the data that shows testing progress, the data might be presented to the users in a different format than it would to the developers. The users may want to know how much of the functionality has passed the test, while developers might want to see the data presented with respect to the amount of code that was tested.

Advantages of Deploying Metrics: Metrics provides following help to the software testing managers.

1) They help in Identification of risky areas that may need more testing, training needs, and process improvement opportunities. 

2) They are helpful in controlling & tracking the project status by providing a basis for estimating how long the testing will take.

Important Lessons Learnt:

1) Developers and software testing engineers should be involved in deciding what metrics will be used and how they will be collected.

2) By collecting and analyzing defect density by module, the software-testing engineer can identify potentially risky areas that need additional testing.

3) When you can measure a thing & express it in numbers, you can say that you know something about it; but when you cannot measure it & cannot express it in numbers, your knowledge is limited about it. Or in other words, a thing that can not be measured can not be controlled.

4) Compelling people in using metrics without proper explanation and implementation is counter productive.

5) Collecting metrics as a by-product of some data collection activity is as good as collecting them automatically.

6) Farther a metric is from the truth, the less reliable the metric becomes.

7) Every measurement must have a linkage to a need, failing which it becomes a sheer wastage of time. 

8) Use of an incorrect metric can lead to catastrophic results like dissatisfaction among employees or even several unpleasant situations in the organization.

Challenges Faced by Testers in the Healthcare Domain

Challenges Faced by Testers in the Healthcare Domain



Testing healthcare software is a difficult task for testers as it requires a vast knowledge of the domain. It also poses many challenges because of the complexity of the design, diagnosis, and the day to day development of the patient. Moreover, the product needs to conform to various Safety and Regulatory Standards such as IHE, HL7 and others.

With an increase in the demand for healthcare software, there is also a rise in the complexity of the product. Let us have a look at some of the challenges faced while testing healthcare products as mentioned by Adarsh on testrepublic.com.



1.    Healthcare Standards
Testers should be aware of the various standards in the healthcare domain such as DICOM, HIPAA and others while testing the product for various aspects. Testing a healthcare product without having knowledge of the various standards will result in the inadequacy of testing.

2.    Domain and System Knowledge
Testers should be well aware of the various functionality, clinical usage, the environment the software will be used and others while testing healthcare products.

3.    Safety and Hazards
If the healthcare product is not tested adequately for safety and hazards, it will have a fatal impact not only on the product but also on the patient. Testers must be able to identify the various hazards and their impact.

4.    Process Compliance
Healthcare products also need to comply with various standards like FDA, ISO and CMMI before they can be used. Testers must be well trained on the various standards so as to ensure that the product meets the requirements of the various standards.

5.    Cross Dependency of Software
Complex software has different components and layers. Changes in one component or layer can lead to some side effects on the other. Testers must ensure that there will be no side effects on the other layers whenever there are changes. 

All About Testing ERP Software

All About Testing ERP Software


he implementation of ERP software system involves changing some of the important complex business processes apart from involving a huge expenditure, time and effort. The success of this implementation depends on the co-operation of the employees in the organization. Before implementing ERP software, it has to be tested.

Terry Low on dvalde.com explains the types of testing for ERP and the need for extensive ERP testing.

Types of testing:

With regards to testing ERP software, there are different approaches.

1.    Performance Testing
Performance testing determines how the various components of a system will perform in a particular situation. It doesn't aim at finding defects in the system, but it aims at establishing the benchmark behavior of an application.

2.    Functional Testing
The main intention when companies adopt ERP software is to obtain solutions to problems. Functional tests on ERP software will verify if the software will provide the expected solution.  

3.    Integration testing
Integration testing verifies if all the units work together as a single application. Through integration testing, one will be able to visualize how the software will fit into the ERP system. Under this type of test, testers will deploy the software in real organizational settings. The main aim is to see how well the software will fit into the organization and how the employees are using it.

4.    Automated Testing
This refers to the automation of the testing procedure. It promises faster and reliable testing. However, in most cases, the results of manual test will be compared with the results of automated tests to get a clear picture of the results.

Extensive ERP Testing, is it needed?
From the above description of the types of testing involved in ERP implementation we can come to a conclusion that testing is needed to verify if the software fits into the organization. It is only through testing that defects and bugs can be detected. If the ERP software has been tested it becomes easier for companies to find possible solutions for problems.

ISTQB Certification Exam-Sample Papers

Q. 751: As a test leader you are collecting measures about defects. You recognize that after the first test cycle – covering all requirements - subsystem C has a defect density that is 150% higher than the average. Subsystem A on the other hand has a defect density that is 60% lower than the average.

What conclusions for the next test cycle could you draw from this fact?

 

A. It is probable that subsystem C has still more hidden defects. Therefore we need to test subsystem C in more detail.

 

B. Because we have already found many defects in subsystem C, we should concentrate testing resources n Subsystem A.

 

C. Observed defect density does not allow any conclusions about the amount of additional testing.

 

D. We should try to equalize the amount of testing over all modules to ensure that we test all subsystems evenly.

 

<<<<<< =================== >>>>>>

 

Q. 752: Which of the following is a TRUE statement about the use of static analysis tools?

 

A. Static analysis tools can change the code to reduce complexity.

B. Static analysis tools are intended to support developers only.

C. Static analysis tools aid in understanding of code structure and dependencies.

D. Static analysis tools cannot be used to enforce coding standards.

 

<<<<<< =================== >>>>>>

 

Q. 753: Which of the following best describes typical test exit criteria?

 

A. Reliability measures, number of tests written, and product completeness.

 

B. Thoroughness measures, reliability measures, cost, schedule, tester availability and residual risks.

 

C. Thoroughness measures, reliability measures, test cost, amount of time spent testing and product completeness, number of defects.

 

D. Time to market, residual defects, tester qualification, degree of tester independence, thoroughness measures and test cost.

 

<<<<<< =================== >>>>>>

 

Q. 754: How does testing contribute to software quality?

 

A. Testing ensures that the system under test will not error out in a production environment.

B. Testing identifies defects which ensures a successful product will be released to market.

C. Testing increases the quality of a software system by avoiding defects in the system under test.

D. Testing through verification and validation of functionality identifies defects in the system under test.

 

<<<<<< =================== >>>>>>

 

Q. 755: A company is going to provide their employees with a bonus which will be based on the employee's length of service in the company. The bonus calculation will be zero if they have been with the company for less than two years, 10% of their salary for more than two but less than five years, and 25% for five to ten years, 35% for ten years or more. The interface will not allow a negative value to be input, but it will allow a zero to be input.

 

How many equivalence partitions are needed to test the calculation of the bonus?

 

A. Two equivalence partitions.

B. Three equivalence partitions.

C. Four equivalence partitions.

D. Five equivalence partitions.

 

<<<<<< =================== >>>>>>

 

Q. 756: Which of the statements about reviews are correct?

 

I. Reviews are useful because, through their use, defects can be found early, resulting in cost savings.


II. Reviews are useful because they help management understand the comparative skills of different developers.


III. Testers should not get involved in specification reviews because it can bias them unfavorably.


IV. Many early defects are found in reviews, lengthening the time needed for the development life cycle

 

A. I

B. IV

C. I and IV

D. I and III

 

<<<<<< =================== >>>>>>

 

Q. 757: What is integration testing?

 

A. Integration of automated software test suites with the application under test.

B. Testing performed to expose faults in the interaction between components and systems.

C. Testing to verify that a component is ready for integration with the rest of the system.

D. Testing to verify that the test environment can be integrated with the product.

 

<<<<<< =================== >>>>>>

 

Q. 758: Below you find a list of descriptions of problems that can be observed during testing or operation. Which is most likely a failure?

A. The product crashed when the user selected an option in a dialog box.

B. One source code file included in the build was the wrong version

C. The computation algorithm used the wrong input variables.

D. The developer misinterpreted the computational requirement for that algorithm.

 

<<<<<< =================== >>>>>>

 

Q. 759: Which one of the following describes best the difference between testing

and debugging?

 

A. Testing shows failures that are caused by defects. Debugging finds, analyzes, and removes the causes of failures in the software.


B. Testing pinpoints the defects. De bugging analyzes the faults and proposes preventing activities.


C. Testing removes faults. Debugging identifies the causes of failures.


D. Dynamic testing prevents causes of failures. Debugging removes the failures.

 

<<<<<< =================== >>>>>>

 

Q. 760: Which of the following is a good reason for a developer to use a Test Harness tool?

 

A. To help the developer to compare differences between files and databases.

B. To reduce the quantity of component tests needed to be run.

C. To make it easier for developers to peer-test each other's code.

D. To simplify running unit tests when related components are not available yet.


Correct Answers to the Earlier Questions - Q. 751 to Q 760 are as under:

Question No.

Correct Answer

Q. 751

A

Q. 752

C

Q. 753

B

Q. 754

D

Q. 755

C

Q. 756

A

Q. 757

B

Q. 758

A

Q. 759

A

Q. 760

D

Tips for Software Testing Engineers-For Effective Writing of Integration Tests

Tips for Software Testing Engineers-For Effective Writing of Integration Tests


Software testing engineers can not afford to ignore the importance of integration tests. Integration test when breaks in the event of a dependent system changing unexpectedly are nothing but early warning that the system is about to break in the real world scenario as well. As an integration test breaks, pinpointing the problematic issue, the intelligent software-testing engineer can certainly prevent the problems from piling up until they come to the surface at a later stage of the project.

Integration tests are generally problematic, hence are extremely important in any project. Despite being tedious, integration tests even if automated or not, usually pay back for the efforts put in by us in creating them and keeping them working, reason being without the Integration tests, we would be simply left with set of unit tests. As such the unit tests do not offer a confirmation that the entire operation works, from the point when a user clicks "Go" through the complete operation, to the results displayed on the user's screen. An end-to-end test confirms that all the pieces integrate together as desired.

Integration testing is aimed at finding defects in the interfaces and invariants between interacting entities that interact in a system or a product. Invariants are substates that should be unchanged by the interaction between the two entities.

The objective of integration testing is not to find defects inside the entities being integrated, because there is an underlying assumption that these have already been found during previous testing.

When our final product is part of or in itself a complex product it is necessary to introduce many more integration test levels like, for example, hardware-software system integration and software-data system integration, customer product integration etc.

The entities to be integrated may be components as defined in the architectural design or different systems as defined in the product design. The principles for integration testing are the same no matter what is being integrated by the software testing engineer.



We can define the scope of our integration tests right from the simple tests involving testing of small group of functions working together, to the testing of a full scale end-to-end scenario covering many tiers in the enterprise system like the middleware and database etc.

Strategies for the testing order in integration testing:

1) Top down integration: 
This involves first testing the interfaces in the top layer in the design hierarchy followed by testing every layer going downwards. The main program serves as the driver. This way we able to quickly create a "shell".

2) Bottom up integration:
This involves first testing the interfaces in the lowest level. Here higher components are replaced with drivers, so we may need many drivers. This integration strategy enables early integration with hardware, where this is relevant.

3) Functional integration:
This involves integration of the functionality areas. This is a sort of vertically divided top-down strategy. With this integration strategy we are quickly able to get the possibility of knowing the functional areas available to us.

4) Big-bang integration:
This involves integration of everything in one go. At first glance it seems like this strategy reduces the test effort, but it does not. It is impossible to get proper coverage when testing the interfaces in a big-bang integration, and it is very difficult to find any defects in the interfaces. Both top-down and bottom-up integration generally end up as big-bang, even if this was not the initial intention.

Important tips for writing Integration tests

A) Creation of adequate test environment:
Create a test environment like test database etc. to run the tests in. This must be quite close to the live release environment as far as possible. A frequent data refresh from the live system will keep the test database fresh and realistic. Multiple test environments may be necessary, but remember that having them can be extremely problematic, as they all need to be maintained. However, you might want one database that can be torn down and reinstated regularly to provide a clean environment every time, plus a database with a dataset similar to the live system, to allow system, load, and performance testing.

B) Beginning of the tests from "test sandbox":
The software testing engineer should start every test scenario with a script that creates a "test sandbox" containing just the data needed for that test. A common reason given for not running integration tests against a real database is that it would take too much effort to "reset" the database before every run of the test suite. In fact, it is much easier to simply have each test scenario set up just the data it needs to run the scenario.

C) Execution of startup script to kick-start the test scenarios:
Do not execute a tear-down script after the test. Although it seems a bit odd, but if a test has to clean up the database after itself so that it can run successfully next time, then it totally relies on its cleanup script having run successfully the previous time. If the cleanup failed last time, then the test can never run again. It is much easier if the software-testing engineer consistently just runs a "setup script" at the start of each test scenario.

D) Avoid execution of scenario tests as part of the regular build:
Running of the scenario tests as part of the regular build can lead to a very fragile build process. The tests will be making calls to external systems, and will be highly dependent on test data being in a specific state, not to mention other unpredictable factors such as two people running the same tests at the same time, against the same test database. It is great for unit and controller tests to be part of your automated build because their output is always deterministic, but the scenario tests, not so much. The software-testing engineer should still run the scenario tests. If they were not set up to run automatically, chances are they will be forgotten, and will be left to gradually die until it would take too much effort to get them all passing again. So it is better to schedule them to run automatically on a server, either hourly or at least once per night. The software-testing engineer must ensure to automatically email the test results to the entire team.

E) Consideration of scenario tests like Black-Box Tests:
Treat scenario tests like "black box" tests, because they do not know about the internals of the code under test. Conversely, unit tests are always "white box" tests because they often need to set internal parameters in the code under test, or substitute services with mock objects. Controller tests, are "gray box" tests because it is preferable for them to be white box, but occasionally they do need to dive deep into the code under test.


Important Lessons learnt:
 

1) Always remember that the objective of integration testing is to address both "external system calls" and "end-to-end testing." 

2) We should test the GUI code as part of our scenario tests.

3) We should deploy some business-friendly testing framework for storing the scenario tests.

4) We should create end-to-end scenario tests. However the project must not be delayed if these happen to be complex.

5) We should drive scenario tests from our use case scenarios.

6) We should drive the unit / controller-level integration tests from our conceptual design.

7) We should make a prior decision as to which "level" of integration test we should write.

8) We should look for the test patterns in our conceptual design.

9) We should remember to include the security tests in the integration tests.

Testers' involvement in requirements gathering important

Testers' involvement in requirements gathering important
In this increasingly complex software development era, it is extremely important to include testing as early in the project as possible. In the predictable old waterfall lifecycle world, testing was typically included in the coding phase right before they were needed. In today's iterative world, testing needs to be included at the project's inception.
Even today the requirements phase of a project generates most of the defects. Over 50% of the defects are injected during the requirements phase. This is important because this phase forms the foundation for the product that future work will be built on. So, if the requirements are not correct, there may be fundamental issues that do not surface until the later phases. And that may mean having to completely redesign major portions of the product. The amount of rework to fix assumptions or undiscovered issues can have a significant impact on a project.
Let's first look at what can happen when testers are involved during the later phases of development.
  • Testers' understanding on the requirements is limited and tests designed aren't robust.
  • Requirements defects get carried on to next phase due to the insufficient review process.
  • Testers are forced to learn the application on the fly from the requirements.
  • The risk analysis on the requirements are skipped, and the tests designed may not be of adequate coverage.
  • Requirements-based testing gets skipped and most of the ambiguous, inconsistent and immeasurable requirements are not corrected.
  • Traceability, relationships, correlation and dependency in requirements are not traced.
  • Rapidly accelerated project cycles result in many requirement gray areas that force testers to determine expected results.
The above issues convey the need for testing to be active participants in the requirements elicitation process. Testers should not be passive recipients of requirements in the form of a use case or a requirements document.
The benefits of involving testing in the requirements elicitation process (such as requirement workshops, review sessions, interviews, etc.) include the following:
  • The test plan will include more than a regurgitation of the project features. By understanding the requirements as they are being created, the test plan will include a better plan of attack for testing each of the areas of functionality.
  • As the project progresses, testing will typically be asked to refine their resource estimates. Understanding the requirements as they are being created will help refine resource estimates with greater confidence. Even if test cases are not yet developed, you can get a sense of the number of requirements and estimate the necessary number of test cases and multiply by your time factor to create and execute test cases.
  • You will end up with clearer, concise requirements. For example, is the requirement test-able? Another example is clarifying the gray area requirements that frequently get overlooked, such as error messages and usability issues.
  • Testers can capture the feelings about certain requirements that they cannot get from an after-the-fact requirements review. Feelings are not captured as requirement attributes. Testers can also hear about how development feels about certain requirements. This dichotomy is essential for risk-based testing. If you don't have enough time to test the entire system, test efforts may focus on the following:
    • Requirements that are important to the business (high priority)
    • Requirements that make development uneasy (high risk).
  • Testers may better understand the impact of the requirement on other parts of the system. Participation from testing in requirements elicitation sessions may result in fewer changing requirements throughout the project and fewer design problems.
  • Testers can get a jump-start on test case creation. They may be able to create several tests with steps from basic flows of a use case. This preparation may allow time later on to automate between iteration releases.
  • Testers can better set test cases to business requirement traceability.
  • Part of the role of Testing is to ensure that projects adhere to the software development process that the organization has in place. Requirements elicitation is a distinct activity, and testing should ensure that it is performed and that it is performed correctly.
If testing passively waits until requirements are published, it may already be too late. The time needed to then learn, question and understand the requirements eats into precious time necessary for test plan and manual/automated test case development.
If your organization already includes testers in requirements elicitation, keep up the good work. If not, help the leaders understand the importance of early involvement and the value-add that testing gives this activity. The benefits far outweigh the costs.