1.software Testing: The IEEE Definition For Testing Is
1.software Testing: The IEEE Definition For Testing Is
1.software Testing: The IEEE Definition For Testing Is
Software Testing
Software testing is the process used to help identify the correctness,
completeness, security and quality of developed computer software.
Testing is used to determine the status of the product during and after the
build or do component of the process. The role of testing changes as the type
of process used to build the product changes.
What is Testing?
* An examination of the behavior of a program by executing on sample data
sets.
* Testing comprises of set of activities to detect defects in a produced
material.
* To unearth & correct defects.
* To detect defects early & to reduce cost of defect fixing.
* To avoid user detecting problems.
* To ensure that product works as users expected it to.
What is the goal of testing?
The main goal of testing is to check if the system meets the user
requirements and check for the systems reliability.
Black box testing - Internal system design is not considered in this type of
testing. Tests are based on requirements and functionality.
White box testing - This testing is based on knowledge of the internal logic
of an application’s code. Also known as Glass box Testing. Internal software
and code working should be known for this type of testing. Tests are based
on coverage of code statements, branches, paths, conditions.
Functional testing - This type of testing ignores the internal parts and focus
on the output is as per requirement or not. Black-box type testing geared to
functional requirements of an application.
System testing - Entire system is tested as per the requirements. Black-box
type testing that is based on overall requirements specifications, covers all
combined parts of a system.
Alpha testing - In house virtual user environment can be created for this
type of testing. Testing is done at the end of development. Still minor design
changes may be made as a result of such testing.
1. Requirement analysis
Testing should begin in the requirements phase of the software life cycle
(SDLC). The actual requirement should be understand clearly with the help
of Requirement Specification documents, Functional Specification
documents, Design Specification documents, Use case Documents etc.
During the requirement analysis the following should be considered.
-Are the definitions and descriptions of the required capabilities precise?
-Is there clear delineation between the system and its environment?
-Can the requirements be realized in practice?
-Can the requirements be tested effectively?
2. Test Planning
During this phase Test Strategy, Test Plan, Test Bed will be created.
A test plan is a systematic approach in testing a system or software.
The plan should identify:
-Which aspects of the system should be tested?
-Criteria for success.
-The methods and techniques to be used.
-Personnel responsible for the testing.
-Different Test phase and Test Methodologies
-Manual and Automation Testing
-Defect Mgmt, Configuration Mgmt, Risk Mgmt. Etc
-Evaluation & identification – Test, Defect tracking tools
During this phase the required environment will be setup will be done. The
following should also be taken in account.
- Network connectivity’s
-All the Software/ tools Installation and configuration
-Coordination with Vendors and others
4. Test Design
5. Test Automation
In this phase the requirement for the automation will be identified. The
tools that are to be used will be identified. Designing framework, scripting,
script integration, Review and approval will be undertaken in this phase.
Testers execute the software based on the plans and tests and report any
errors found to the development team. In this phase
-Test cases will be executed.
-Test Scripts will be tested.
-Test Results will be analyzed.
-Raised the defects and tracking for its closure.
7. Test Reports
Once testing is completed, testers generate metrics and make final reports
on their test effort and whether or not the software tested is ready for
release.
-Test summary reports will be prepared
-Test Metrics and process Improvements made
-Build release
-Receiving acceptance
CMMI
A process improvement approach to software development.
Requirements Development
Requirements Management
Technical Solution
Product Integration
Verification
Validation
It is also interesting to note that SQA and SQC are processes defined within
CMMI, they are under the Support process area.
In CMMI SQA\SQC is defined as Process and Product Quality
Assurance.
Each of the main Engineering process areas is now described together with
the role that SQA\SQC plays within those areas.
SQC role SQC takes an active role with Verification (this is a process itself
that is described later).
Verification of the requirements would involve inspection (reading) and
looking for clarity and completeness.
SQC would also verify that any documentated requirement standards are
followed.
Note there is a subtle difference between SQA and SQC with regard to
standards, SQC’s role is in verifying the output of this process (that is the
Requirement document itself) while SQA’s role is to make sure the process is
followed correctly.
SQA is more of an audit role here, and may sample actual Requirements
whereas SQC is involved in the Verification of all Requirements.
The type of requirement need not be just the functional aspect (or
customer\user facing requirements) they could also include product and\or
component requirements.
that is defects detected in the shipped product that were not tested due to the
fact that they were not referenced in the Traceability matrix that referenced
the requirements.
SQC may also get involved at this stage as they will be the people doing the
actual Testing (Verification and Validation) so for their test coverage a
complete Traceability Matrix is essential.
SQA and SQC roles in CMMI Technical solution
SQC role The major SQC role during this process will be testing (see
Validation and Verification).
The finished product does not have to be present before testing can begin.
Unit and Component can both take place before the product is complete.
Design and Code reviews are also something that SQC could get involved
with.
The purpose of the review has to be clearly stated, i.e. to verify standards are
followed or to look for potential Supportability (part of the Product
Requirements) issues. The Supportability metric is the time it takes for a
defect in a system to be fixed. This metric is influenced by the complexity of
the code, which impacts the developer’s ability to find the defect.
SQA and SQC roles in CMMI Product Integration
Validation confirms that the product, as provided, will fulfill its intended use.
In other words, validation ensures that “you built the right thing.” As with
Verification, Validation is mainly the domain of SQC. The term Acceptance
Test could also apply to Validation, in most cases the Acceptance test is
carried out by a different group of people from the SQC team that performed
Verification, as the product was being built. In the case where an application
is going to be used internally, then the end user or business representative
would perform the Acceptance testing. Wherever this is done it is in essence
a SQC activity. As with Verification, SQA makes sure that these processes
conform to standards and documented procedures. The Validation process
itself is subject to continuous improvement and measurement.
Conclusion
Although only a high level snapshot has been given of how some SDLC
processes are subjected to SQA and SQC a clear pattern can be seen. In all
cases the SQA and SQC do not get involved in building any of the products.
SQC are only involved in Verification and Validation. The role of SQA is
even more removed from development; they are mainly providing the role of
an Auditor. In addition SQA will collect measurements of the effectiveness
(and cost) of the processes in order to implement continuous process
improvement. This separation of SQC from development and SQA from SQC
ensures objectivity and impartiality. In an ideal environment theses
(Development, SQC and SQA) would be three separate organization units
reporting to different managers. Some of the benefits of SQA\SQC can be
achieved in a less formal environment. This hybrid approach is typically used
by small development groups. An example of this hybrid approach is
documented here at SQA in Practice.
Code coverage, measures the code lines that are executed for a given
set of software tests.
Cohesion, measures how well the source code in a given module work
together to provide a single function.
Coupling, measures how well two software components are data
related, i.e. how independent they are.
The above list is only a small set of software metrics, the important
points to note are:-
From our previous definition of SQA and SQC, we now see the
importance of measurement (metrics) for the SDLC and SPI. It is
metrics that indicate the value of the standards, processes, and
procedures that SQA assures are being implemented correctly within a
software project. SQA also collects relevant software metrics to provide
input into a SPI (such as a CMMi continuous improvement initiative).
This exercise of constantly measuring the outcome, then looking for a
causal relationship to standards, procedures and processes makes SQA
and SPI pragmatic disciplines.
That said the following section tries to pull the ideas of quality metrics,
quality characteristics, SPI, SQC and SQA together with some examples
by way of clarifying the definition of these terms.
The standard, including the new ISO 9126-1, quality models describe
only the system behavioral characteristics.
The SATC model can be used to reference all the CMMi, for example
Requirements management (which includes traceability).
If you need to do this work in practice, you will need to select a single
reference point for the Software Quality Model, then research the best
metric for evaluating the characteristic. The importance of being able to
break down a model of characteristics into measurable components
indicates why these models all have a hierarchal form.
The SATC Software Quality Model (which includes Goals and Metrics as
well as the software attributes)
GOALS ATTRIBUTES METRICS
Number of Weak Phrases.
Ambiguity
Number of Optional Phrases.
Number of To Be Determined
Completeness (TBDs) and To be Added
(TBAs).
Requirements Document Structure.
Understandability
Quality Readability Index.
Count of Changes / Count of
Volatility Requirements. Life cycle stage
when the change is made.
Number of software
requirements not traced to
Traceability system requirements. Number
of software requirements not
traced to code and tests.
Although all of the CMMi process areas are not covered by the SATC goals,
the main stream development activities are, that is:-
Project Management.
Requirements.
Development (coding and implementing).
Testing.
The measures can also be added to, the idea being to better measure the
software attributes (characteristics). For example for Reusability data
coupling and functional cohesion could be used instead of correlation of
complexity/size. Data coupling measures how closely two components are
tied together, with loose data coupling being desirable. Functional cohesion
measures the extent to which a module performs one function, whenever the
scope of a component is stretched to be multiple functional the code
becomes less reusable. The main goal being to be continually experimenting
with new metrics to make a better (i.e. more useful) determination of the
extent to which the characteristic, that they are measuring, exists in the
software.
The measures listed in the above table, i.e. for traceability, code complexity
etc., would provide a good starting point for any software metrics program.
What is important is to place software metrics in the context of contiunous
improvement. In order to achieve this a well defined quality model is needed
which lists the desired characteristics and how they are measured (i.e.
metrics). The final essential relationship that needs to be established is the
causal relationship between the metrics and the SDLC activities (i.e.
processes, procedures and standards). When these models and relationships
have been implemented then a continuous improvement life cycle can be
implemented (such as CMMi), in short:-