5th Unit ST Notes
5th Unit ST Notes
5th Unit ST Notes
A number of models have been developed by international bodies which are based on
industry best practices. The popular models are:
Capability Maturity Model (CMM)/Capability Maturity Model Integration
(CMMI)---staged or continuous representations
ISO 9001:2000
ISO/IEC 12207
ISO/IEC 15504
Only when the management is committed to quality, the employees can also be made to
commit themselves to quality. The management's commitment to quality is reflected by
creating a quality assurance/testing environment.
Specifically, the management has to:
Issue a policy statement that indicates the management's commitment.
Ensure that the necessary processes have been defined and followed.
Provide the necessary infrastructure, manpower and budget for these activities.
Provide an environment where there can be a free exchange of ideas and opinions-
good communication is a must for quality to succeed.
Conduct periodic reviews to ensure that the quality processes are being followed
and improved continuously.
5.1.1 Organization Structure
For any software project to succeed, the project manager has to bring synergy amongst
various groups such as domain experts, development experts, marketing experts and quality
experts, as shown in Figure 5.1.
For Example, in ISO 9001 quality management system, there should be a separate quality
assurance team and a Management Representative (MR) will be in-charge of the quality
assurance team. The MR will report directly to the top management/CEO. This
organization structure indicates that thrust is indeed being given to quality.
5.2 Testing Process Management
To deliver quality software, a process-oriented approach is a must. The philosophy behind
this approach is very simple: plan your work, track the work and after the work is
completed, do a postmortem analysis to find out what went right and what went wrong.
Based on the analysis, improve the process.
This is shown in Figure 5.2. If you follow this approach, you can deliver better product,
you can plan better next time and you will be better person. This approach is applicable to
everyone---engineers and managers. In fact, we can use this approach even in our daily
lives.
PLAN TRACK POST MORTEM
Lack of possibility to make modifications: If you want some special features now
or at a later date, the vendor may not be ready to make the modifications to Suit
your needs. You need to accept the software as it is.
Need for customization: Some software products such as ERP packages need lot
of customization after installation at your site. Sometimes, the customization cost
will be much more than the actual cost of the software. You need to probe into the
customization cost before taking a decision.
Testing the COTS software: The software has to be tested to ensure that it meets
all your functional and non-functional needs. The detailed testing process has to be
worked out.
Suppose the top management has given you the responsibility to make a payroll software
package in your organization. If you have to buy COTS software, you have to get the
details of the payroll software packages available in the market and compare their
specifications with your requirements. You have to shortlist a few packages that meet your
requirements and carry out a detailed study of each package the detailed specifications,
reputation of the vendor, support provided by the vendor, the training to be given by the
vendor and the cost.
After selecting a particular vendor's package, you need to test the software. This testing
basically involves checking whether it meets your needs or not and whether it is reliable or
not. You cannot ask for any modifications to be done by the vendor as it is a generic
package being sold by the vendor.
Software Development
If COTS software is not available, you need to consider the option of development. The
development can be done by using in-house development team or development can be sub-
contracted. If the development is sub-contracted, you need to carry out the testing to ensure
that the software is as per your requirements. If the development is done in-house, you need
to have a separate testing team to test the software. You also have an option to sub-contract
the testing activity.
Suppose the top management has given you the responsibility to make a payroll software
package in your organization. If you decide to get it developed, you can either get it
developed by the in-house development team or subcontract the development work. In
either case, testing is your responsibility. Here, you need to test the software, and then give
the feedback to the development team so that the bugs can be rectified and finally suitable
software is delivered to you.
5.2.2 Testing Process Management Activities
A well-defined testing process is fundamental to develop the quality software. Generally, in
ISO 9000/CMM/CMMI certified organizations, an organization-wide testing process is
developed. The process should define the objectives of testing, methodologies to be used,
infrastructure and tools required, method of testing, work products of the process and the
reviews to be conducted during the testing phase. The process should also identify the
training needs of the people.
The manager in-charge of the testing process has to carry out the following activities:
Planning the testing process, budgeting and scheduling.
Aligning organization-wide testing process to the project.
Forming the testing team.
Test
Design
Estimation Of
1. Effort
2. Time
3. Budget
Risk Analysis
1. Process Risk
2. Product Risk
Concluder-Producer
Controller-Inspector
Upholder-Maintainer
Based on a simple set of questionnaire, it is easy to assess and find out to which category a
person belongs. Team formation can be done by assessing the individuals' preferences and
matching the team requirements with these preferences.
For a testing team to succeed, the test engineers need to have the following skills:
Good understanding of the application domain.
Excellent knowledge of the software quality assurance principles.
Thorough knowledge of software testing.
Exposure to testing tools.
Experience in designing test cases.
Good oral and written communication skills.
Good listening skills.
Good inter-personal skills.
An eye for detail.
Excellent analytical abilities.
The skills required for test leaders/test managers are:
Ability to form high-performance teams.
Ability to identify strengths of the individuals.
Good written and oral communication skills.
Ability to resolve conflicts (that arise between testing team and development team;
development team and client).
Mentoring of the test engineers.
Motivate and inspire the test engineers to work with strict deadlines.
Leadership qualities.
Facilitate a group to achieve the goals.
The test manager's responsibilities are:
Plan the testing process.
Form the team and provide the training to the team members.
Ensure that the necessary infrastructure and tools are available.
Conduct periodic reviews and manage risk.
Monitor the progress and communicate the status to all persons concerned.
Coordinate with different groups.
Resolve any conflicts that arise between individuals and groups.
Identify and collect metrics data.
Configuration management.
A number of testing tools are available—both open source tools and commercial tools. The
classification of the tools is shown in Figure 7.4.
5.7 Reviewing, Monitoring and Risk Management
The manager expects everything to go as per the test plan. Invariably nothing will go as per
the plan. The manager has to constantly review the work of the individual test engineers,
monitor the overall progress and take corrective action. It is likely that there is a threat to
the project execution due to the risks. Risk control has to be done during the testing phase.
A very simple and effective tool for reviewing the progress of the project is through
Gantt chart, also known as bar chart shown in below Figure. In this chart, the important
activities are shown by bars. Each activity is represented by a bar along with the start date
and completion date. This bar chart is prepared at the time of planning and periodically, it
is checked whether the activities are going on as per the plan. This chart is generally used
by the top management for reviewing the activities.
If the project manager also wants to keep track of the estimated effort for each activity
along with the time frame, the cost-schedule-milestone graph shown in below Figure is
used.
In this figure, X-axis represents the time and Y-axis represents effort in person months or
cost in dollars. On the graph, the various milestones are indicated such as test
specifications, test case design, test execution etc. At the time of planning, the estimated
values are plotted on the graph and while executing the testing phase, the actual values are
plotted. So, periodically the manager will know whether he is 'earning' or 'losing - in terms
of cost and time.
5.8 Metrics
To effectively manage the testing process, the manager has to identify the metrics and
obtain the measurements. Some important metrics are as follows:
Effort (in person months), time and budget estimated and the actual values after
completion of the testing phase. The reasons for the difference between estimates
and actual values need to be studied-- is it a problem with estimation or execution?
The total number of lines of code, number of functions, number of classes in object
oriented design, number of tables and forms in a database, number of web pages in
a web site development etc (also called Project complexity metrics).
Total number of defects found and defects found in each category (for example,
critical/major/minor defects).
Root cause of defects (how many defects were due to problems in requirements,
problems in design, problems in coding etc.).
Severity of defects and percentage of defects in each severity level.
Defect removal efficiency (how many defects were removed per hour). This gives
an indication of the productivity of the test engineers
Total number of test cases executed and the percentage of test cases that detected
defects.
Reliability metrics (MTBF, MTTR and MTTF).
Testing effort/time/budget as a percentage of total project effort/time/budget.
Cost of quality (failure cost, appraisal cost, and preventive cost).
5.8.1 Software Reliability
A number of reliability analysis models are available to predict the reliability of the
software, in terms of the number of defects still remaining in the software. This metric is
very useful to decide when to deliver the product or when to release the product into the
market, particularly when the software is highly complex. The software reliability models
generally follow one of the trends as shown in Figure 5.7. Fig 5.7(a) shows the concave
model' and Figure 5.7(b) shows 'S-shaped model'. The assumption made in arriving at these
models is that during initial stages, testing is not as efficient as at later stages and hence
there is an increase in the rate of defect detection. In Figure 5.7(c), the two-stage model
curve is shown; this model is applicable when significant functionality is added to the
software during the testing process (which is normally the case).
The software reliability models are still at a theoretical level and studies are being carried
out at academic institutions. Very few organizations use them in practice for obtaining the
reliability figures. The most important reliability figures are MTBF (Mean Time Between
Failures), MTTR (Mean Time To Repair) and MTTF (Mean Time To Fail). The relation
among these three values is shown in Figure 7.8.
recording the defects, the severity of the defects also needs to be noted down. If a critical
defect is present in the code, then the software is not ready for delivery. The defects can be
classified as:
Critical
Major
Minor
Critical defects result in a system crash, or the application may not be useable at all if this
type of defect occurs. In a time critical application, if the timing is not within the limits or
if the response time is not within limits; then also the defect can be termed as critical.
Inconsistent performance of the application is also a critical defect.
Major defects will not lead to a system crash, but may result in some portions of the
application difficult to use, such as difficult navigation of the menus.
Minor defects can be tolerated, such as lack of help for some functionality, a spelling
mistake in an error message, incorrect ordering of control buttons in a GUI etc.
Product
Preventive
Release
Maintenance
Preventive Change
Maintenance Request
Preventive
Maintenance Change Request analysis
[Impact Analysis]
Work
Release Product
Planning Change
Implementation
Change
Release
Work
Product
Figure 5.9 Change management
Whenever a change request is received, a detailed impact analysis is made and then it is
decided whether the proposed change should be implemented or not. If it is decided to
implement the change, the necessary changes are made not only in the code, but in all the
work products and the software is thoroughly tested and then released.
Before accepting a change, a thorough analysis of the impact of the change has to be done,
as shown in Figure 7.10. The impact of the change on both functional requirements and
non-functional requirements has to be studied by the technical team and the impact and the
budget, time and effort have to be studied by the management. If the impact is not very
high, or if the impact is high but the client is ready to foot the bill, then the proposed
change can be accepted.
In many projects, the managers innocently accept a change proposed by the customer,
when the customer tells that it is a 'minor change. Without studying the impact (or the
damage to be caused by the change), if the proposed change is accepted, and later on if the
change turns out to be major---it is going to affect the profits of the organization.
Particularly, when changes in performance parameters are requested by the client, the
development team needs to be extremely cautious.
5.11Test Closure and Process Improvement
When the testing phase is completed, the manager and all the team members would gain
lot of experience from the project. The experience helps in improving the testing process
further.
As shown in Figure 7.11 for every project, we define a process and set quality goals. We
carry out the testing activities as per the plan using the process definitions. Then we need to
compare the quality goals with the actual results. If there is no match, we need to study
where there is a scope for improvement. This postmortem analysis helps in finding our
weaknesses so that we can work on how to overcome those weaknesses.
Process Refinement
Level 1: Initial
Level 2: Phase definition
Level 3: Integration
Level 4: Management and measurement
Level 5: Optimization/defect prevention and quality control.
Level 1 Organizations are characterized by:
Chaotic testing activities.
Testing is done on ad hoc basis.
Testing is done just to prove that software works.
Testing and debugging are not differentiated.
Staff not trained in intricacies of testing.
Level 2 organizations are characterized by:
Testing is recognized as a separate phase after construction /implementation
Testing is considered as separate from debugging.
Basic testing methods are followed.
Testing is done to show that software meets the requirements.
Level 3 organizations are characterized by:
Management considers testing as a professional activity and gives the necessary
support and thrust to testing phase.
Staff is trained thoroughly on testing process.
Formal testing processes for planning, reviewing and monitoring are in place.
Tools are used for testing
Testing objectives are defined on the basis of software requirements.
Level 4 organizations are characterized by:
Metrics are used for managing the testing process (testing process is measured and
quantified).
Quality parameters such as reliability, usability, security etc. are tested.
Test cases are designed, documented and reused for regression testing.
Defects are tracked.
Level 5: organizations are characterized by:
Well defined and managed testing process.
Testing effort and cost are planned and monitored.
Testing tools are evaluated, selected and introduced based on a defined process.
Testing process is continuously improved.
SW-TMM is a simple model that can be followed by every organization even if it is not
following CMM/CMMI. To start with, an organization has to assess itself at which level it
is at present based on the current process definitions. Then, it has to implement the various
processes to achieve Level 5.
B.L.D.E.A’S SSM POLYTECHNIC, CSE (S.R INAMDAR) Page 18
Software Testing