Professional Documents
Culture Documents
Oner Tekin
Technology Leader
Netas
Istanbul, Turkey
oner@netas.com.tr
I. INTRODUCTON
Software testing is a series of processes begin with
requirements step in the early phases of product life cycle and a
part of the Software Quality Assurance (SQA) process. Various
stages of testing that occur throughout a project are illustrated
in Fig. 1. These stages are:
x
x
x
x
x
x
x
x
x
x
Requirements
Test Strategy documentation and reviews
Test Plan documentation and reviews
Test Case documentation and reviews
Test development for Software Test Automation
applicable projects
Test execution
Result and Defect Reporting
Final Assessment Testing
Trial Preparation Testing
Customer Acceptance Preparation Testing
Unit Testing
Integration Testing
Feature Verification
Product Integration Testing
Product Verification
Solution Verification
Regression Testing
x
x
x
x
x
Performance Testing
Recovery Testing
Security Testing
Conformance Testing
Compatibility Testing
B. Integration Testing
Next step is to test the interoperability of the different
components of a subsystem which is known as Integration
Testing. Software Integration Testing covers off network
element specific stress testing, regression testing, and search
and destroy. Also ensuring that network element interfaces are
working correctly, and design teams are responsible for
software integration.
Feature Integration Testing verifies the basic feature
operation following integration into the release build or
integration stream. Tests verify that the feature interactions
with other architecture components or activities. Design and/or
test teams are responsible for feature integration tests.
There are three common approaches of implementing
integration tests:
1) Top-Down Approach
High level units are tested and combined first. This enables
early testing of high-level logic.
2) Buttom-Up Approach
In this approach, lower level units are tested and combined
first.
3) Umbrella Approach
This involves testing the control flow paths and the
functional data. Initially, the inputs for the different functions
are combined using the bottom-up approach. The outputs are
then
combined
utilizing
the
top-down
approach.
C. Feature Verification
Feature Verification provides a complete verification of
feature operation in a working system for both success path and
failure path against the requirements in the Feature
Requirements Spec and Feature Technical Spec. Design and/or
test teams are responsible for feature verification testing. This
type of testing is an example of Black-Box testing. Black-Box
testing assumes that the test specialist creates and implements
the test cases without any internal knowledge of the unit under
test. This approach tests all possible combinations of end-user.
D. Product Integration Testing
Product Integration is a regression testing of earlier release
features to ensure components and interfaces are still intact
amongst network elements. Design and/or test teams are
responsible for product integration testing.
E. Product Verification
At the phase of product verification, the main goal is to
ensure the system as a whole including all new features can
respond favorably to robustness scenarios, capacity stress tests,
reliability testing, extended soaking, end to end upgrade and
rollbacks and deployment scenarios. Test teams are responsible
for the product verification.
K. Conformance Testing
Conformance determines whether a product meets the
international and industrial standards and interoperates
properly.
L. Compatibility Testing
Compatibility testing determines whether a product
compatible with other elements of the system or environment.
Software test automation is applicable to compatibility testing.
IV. SOFTWARE TESTING METHODOLOGIES
The methodology of software deployment chosen depends
on the nature of project. Most software development projects
involve periodic testing, but some methodologies focus on
getting the input from testing earlier in the product life cycle.
A. Waterfall Model
One of the common methodologies is Waterfall Model
which is a non-iterative approach. This model is a sequential
development process which allows dividing life cycle into
various phases. Waterfall Model is shown in Fig. 2.
F. Solution Verification
Solution verification verifies specific end-to-end
functionality and performance of the solution in a customer
simulated environment, where realistic conditions are critical to
the tests, and test teams are responsible for the solution
verification.
G. Regression Testing
Regression testing verifies the existing behavior of the
software is unbroken after new implementations. Regression
testing is a good application area for software test automation.
H. Performance Testing
Performance testing verifies that a system performs in terms
of responsiveness and stability under a particular workload and
meets the specifications claimed by its manufacturer or vendor.
Software test automation is applicable to performance testing.
I. Recovery Testing
Recovery testing verifies that how a system or application is
able to recover from hardware and software crashes and
failures. This type of testing determines the ability to restart the
applications after integrity lost. The main focus is to ensure that
the functionality continuous after disaster cases.
J. Securtiy Testing
Security testing determines whether a product protects data
and maintains functionality of the system properly. Main focus
is to protect confidentiality. Vulnerability scanning finds
weakness of the system. Penetration testing simulates the
malicious attacks to the system.
B. V Model
In this approach, both development and test teams drive the
process in parallel (It could be visualized forming the letter 'V').
Development and testing takes place at the same time with the
same kind of information. Fig. 3, represents the V model.
C. Spiral Model
In the spiral development environment, software testing is
again described as a continuous improvement process that must
be integrated into a rapid application development
methodology. Testing as an integrated function prevents
development from proceeding without testing. There are a
number of cycles of all the sequential steps of the waterfall
model. Once the initial cycle gets completed, a thorough
analysis and review of the achieved product or output is
performed. Fig. 4, represents the Spiral Model.
D. Agile Model
Agile is a hybrid method which mixes sequential and
iterative approaches. The main focus is to create quick,
practical and visible outputs. This is a practice-based
methodology. Agile development is successful when software
test automation is implemented properly. This model relies on
the repetition of a very short development cycle.
User
Acceptance
Testing
Requirements
Analysis
System
Design
Functional
Testing
Integration
Testing
Architectural
Design
Unit Testing
Modal Design
1.Determine
Objectives
2.Identify
and Resolve
Risk
4.Plan the
Next
Iteration
3.Develop
and Test
Continuous Delivery
Quick handling of changing requests
Quick software delivery
Involvement of business units and developers
throughout the project
Self-organized teams
Good communication between the business units
Technical excellence and good design
Design
Analyse
Build
Plan
Coding
Test
Deploy
2) Extreme Programming
Extreme Programming is a collection of different models.
The main characteristics are, short iterations with rapid
feedback, and small releases, regular participation of the
customer, continuous testing and integration, collective code
ownership, not a detailed documentation.
3) Feature Driven Development
Feature Driven Development (FDD) is a client-centric,
architecture-centric software process. In FDD, testing is done
through inspection. In FDD process, unit tests are taken and
implemented according to the project and situation.
4) Crystal Clear Method
Crystal Clear method is used for small teams. It attempts to
describe a full methodology of the lightest, most habitable kind
that will produce good results.
V. SOFTWARE TEST AUTOMATION
Software test automation is a process which uses software
for testing a software product. Automation is a kind of
development process in this manner. If there are repeatable
actions in test scenarios, software test automation is an
effective way to implement these test cases.
It is critical to describe the automation test objectives for
the first step. Test architects and/or test automation experts are
responsible for designing the test framework and architecture.
Test specialists must then comply with and contribute to the
architecture and design automation scripts. Parameterization of
scripts is one of the important steps for software test
automation.
While the development is in progress, as soon as the
functional description is completed, test plan and detailed test
cases are created. Test libraries for common functions and test
scripts for base-unrelieved applications could be created, at this
point but this is an early phase to create all test scripts. Test
architects should start to build test framework. It is an
important phase to identify automated, semi-automated, and
manual test cases. When the development completed,
automation team could start to create test scripts for new
activities. These scripts will be updated when the functionality
change. Test automation maintenance is an important issue,
and automation teams should handle any changes in related
product. Automation provides many advantages in software
testing:
A. Speed
Testing process is expedited, since a program naturally
works quicker than the pace of a human tester. Many
automated testing tools can replicate the activity of a large
number of users using a single computer. Therefore, load/stress
testing using automated methods require only a fraction of the
computer hardware that would be necessary to complete a
manual test. Parallel execution reduces the execution effort and
time.
B. Cost Effectiveness
The cost of performing manual testing is prohibitive when
compared to automated methods. Automation is not time
F. Repeatable Testing
Automation allows the testing organization to perform
consistent and repeatable test. When applications need to be
deployed across different hardware or software platforms, tests
REFERENCES
[1] Koomen, T. and M. Pol, Test Process Improvement: A practical
step-by-step guide to structured testing, Addison-Wesley, 1999
[2] Copeland, L., A Practitioners Guide to Software Test Design,
STQE Publishing, 2004
[3] Graham, D. and M. Fewster, Experiences of Test Automation:
Case Studies of Software Test Automation, Pearson Education,
2012
[4] Hetzel, B., The Complete Guide to Software Testing, Wiley,
1993
[5] Galin, D., Software Quality Assurance: From Theory to
Implementation, Addison-Wesley, 2003
[6] Dustin, E., Rashkal J. and J. Paul, Automated Software Testing:
Introduction, Management, and Performance: Introduction,
Management, and Performance, Addison-Wesley Professional,
1999
[7] Venkatasubramanian, A. and V. Vinoline, Software Test Factory
(A proposal of a process model to create a Test Factory),
International Journal of Computational Intelligence Techniques,
vol. 1, no.1 2010, pp.14-19.
[8] Boehm, B., "A Spiral Model of Software Development and
Enhancement," Computer, vol.21, no.5 1988, pp.61-72.
[9] Nawaz, A and M. Masood, Software Testing Process In Agile
Development, Master Thesis, Dept. of Computer Science,
Blekinge
Tekniska
Hogskola,
2008.