Professional Documents
Culture Documents
1. Software
2. Software Testing
2.1. Software Testing Definition
The British Standards Institution, in their standard BS7925-1, define testing as
The process of exercising software to verify that it satisfies specified requirements and
to detect faults; the measurement of software quality
Software testing is a process of exercising and evaluating the system component by
manual or automation, to ensure that the system is satisfying the stated specifications.
Software Testing can also be stated as
The separation of debugging from testing was initially introduced by Glen ford J.
Myers in 1979.He illustrated the desire of the software engineering community to
separate fundamental development activities, such as debugging, from that of
verification. Dr. Dave Gelperin and Dr. William C. Hetzel classified in 1988 the phases and
goals in software testing in the following stages:
Until 1956 - Debugging oriented, where testing was often associated to debugging:
there was no clear difference between testing and debugging.
1979-1982 - Destruction oriented period, where the goal was to find errors.
1983-1987 - Evaluation oriented period, intention here is that during the software
lifecycle a product evaluation is provided and measuring quality.
Testing will give confidence for the software development Company that the software
will work satisfactorily in Client environment.
To withstand in business.
3. Software Quality
Conformance to explicitly stated functional and performance requirements,
explicitly documented development standards, and implicit characteristics that are
expected of all professionally developed software.
The degree to which a system, component or process meets specified
requirements and customer or user expectations.
Quality Control
4.1 Pre-SDLC
PRE-SDLC PROCESS
Sign-in:
It is the process in which the legal agreement is done between the customer and
the development company in such a way that the customer agrees to give the project to
the development Company, the project development is done with in a specific budget
and the project is to be delivered to the customer on so and so deadline.
Kick of meeting:
It is the first meeting conducted soon after the project came with in the
development company in order to discuss and do the following:
Overview of the project, Nature of the customer, Project team selection (project
manager the development team, quality head and quality team).
The participants of this meeting are HOO (Head of Operations), Technical Manager and
the Software Quality Manager. Once the project manager is selected he will release a PIN
(Project Initiation Note).
Roles
Process:
First the BA will take an appointment with the customer, Collects the
requirement template, meets the customer, gathers requirements and comes back to the
company with the requirements document.
Then the EM will go through the requirements document. Try to find additional
requirements, Get the prototype (dummy, similar to end product) developed in order to
get exact details in the case of unclear requirements or confused customers, and also
deal with any excess cost of the project.
Proof: BRD, The Requirements document is the proof of completion of the first
phase of SDLC.
Tasks
Feasibility Study,
Tentative planning,
Technology selection
Roles
Process: A detailed study on the requirements and judging the possibilities and
scope of the requirements is known as feasibility study. It is done by the Manager level
teams usually. After that in the next step we move to a temporary scheduling of staff to
initiate the project, Select a suitable technology to develop the project effectively
(customers choice is given first preference, If it is feasible).
And Finally the Hardware, software and Human resources required are listed
out in a document to baseline the project.
Proof : The proof document of the analysis phase is SRS (System Requirement
Specification.)
Tasks:
Role:
Process: The Chief Architect will divide the whole project into modules by drawing
some graphical layouts using Unified Modeling Language (UML). The Technical lead will
further divide those modules into sub modules using UML. And both will be responsible
for visioning the GUI (The screen where user interacts with the application OR Graphical
User Interface.) and developing the Pseudo code (A dummy code or usually, its a set of
English Instructions to help the developers in coding the application.)
Proof: TDD Technical Design Document.
Task:
Roles:
Developers/programmers
Process: The developers will take the support of technical design document and will
be following the coding standards, while actual source code is developed. Some of the
Industry standard coding methods include Indentation, Color coding, Commenting etc.
The complete implementation of Design phase is Coding phase. In this
the pseudo code is converted into source code. In this phase developer will develop the
actual code using the source code and they release the application to the testee, the
application is converted into .exe format in the case of client server applications and
the packet of code like WAR files with a URL (web address) in the case of web
application will be given for testing. Once test engineer receive this testing is performed.
The developers must follow the coding standards in order to
ensure that the program is clear and systematic so that anybody can enhance it under
maintenance of project in feature. Some of the coding standards are as follows.
1. Four character margins have to be left on the left side.
2. Comments must be placed for each and every specific block of code.
3. Color coding must be maintained for various types of variables.
4. A single line space must be maintained between two blocks of code as well as between a
comment and a block etc.
Proof: The proof document of the coding phase is Source Code Document (SCD).
Task
: Testing
Roles
Process:
The test engineers will review the requirements in order to understand them.
While revising, If at all any doubts arise, then the testers will list out all the unclear
requirements in a document named Requirements Clarification Note (RCN).
Then they send the RCN to the author of the requirement document ( i.e, Business
Analyst ) in order to get the clarifications.
Once the clarifications are done and sent to the testing team, they will take the test
case template and write the test cases. (Test cases like example1 above).
Once the first build is released, they will execute the test cases.
While executing the test cases, if at all they find any defects, they will report it in the
Defect Profile Document or DPD.
Since the DPD is in the common repository, the developers will be notified of the status
of the defect.
Once the defects are sorted out, the development team releases the next build for
testing. And also update the status of defects in the DPD.
Testers will here check for the previous defects, related defects, new defects and
update the DPD.
Proof: The last two steps are carried out till the product is defect free, so quality
assured product is the proof of the testing phase (and that is why it is a very important
stage of SDLC in modern times).
Tasks
: Delivery
: Post delivery maintenance
Roles
: Deployment engineers
Process:
Maintenance: Once the application is delivered the customer will start using the
application, while using if any problem occurs, then it becomes a new task, Based on the
severity of the issue corresponding roles and process will be formulated. Some
customers may be expecting continuous maintenance; In that case a team of software
engineers will be taking care of the application regularly.
In this process usually PM, SQM, DM (Deployment Manager),
Development team and testing team are involved. During this phase the following
documents are produced.
i.
Certification document
ii.
iii.
iv.
SDN document (Software Delivery Note) Used for letting know the customer special
information about the product.
Waterfall Model
Incremental model
Prototype Model
Spiral Model
V Model
Agile Model
Advantages
a) Generates working software quickly and early during the software life cycle.
b) More flexible less costly to change scope and requirements.
c) Easier to test and debug during a smaller iteration.
d) Easier to manage risk because risky pieces are identified and handled during its
iteration.
e) Each iteration is an easily managed milestone.
Disadvantages
a) Each phase of an iteration is rigid and do not overlap with each other.
b) Problems may arise pertaining to system architecture because not all requirements are
gathered up front for the entire software life cycle.
Advantages
Another advantage of having a prototype modeled software is that the software is
created using lots of user feedbacks. In every prototype created, users could give their
honest opinion about the software. If something is unfavorable, it can be changed.
Slowly the program is created with the customer in mind.
Disadvantages
There is also a great temptation for most developers to create a prototype and stick to it
even though it has flaws. Since prototypes are not yet complete software programs,
there is always a possibility of a designer flaw. When flawed software is implemented, it
could mean losses of important resources
The spiral is a risk-reduction oriented model that breaks a software project up into miniprojects, each addressing one or more major risks. After major risks have been
addressed, the spiral model terminates as a waterfall model.
Advantages
a. Dynamic requirement changes present.
b. Time taken to deliver the product is more.
c. Only intended to large and complicated project.
Disadvantages
a. The spiral model is intended for large, expensive and complicated projects.
b. Requires considerable expertise in risk evaluation and reduction.
c. Complex, relatively difficult to follow strictly.
4.3.5. V Model
First unit testing is performed (white box testing). Generally developers perform unit
testing, which needs technical knowledge.
ii)
Then system testing (Black box testing) is done which includes Field validations, GUI, UI,
Calculation, Database, URL etc.
iii)
iv)
Advantages
a) Emphasize planning for verification validation of the product in early stages of product
development.
b) Each deliverable must be deliverable.
c) Easy to use, the errors can be corrected in that phase itself.
Disadvantages
a) Does not easily handle iterations.
b) Does not easily handle dynamic changes in the requirements.
c) It needs lots of money and resources.
The Requirement functionality may not be covered in one iteration for releasing the
project, but it will be covered in multiple iterations. This idea is to have a defect free
release available at the end of each iteration.
Advantages
a) The team does not have to invest time and effort and finally find that by the time they
delivered the product, the requirement of the customer has changed.
b) The documentation is crisp and to the point to save time.
Disadvantages
c) There is lack of emphasis on necessary designing and documentation.
d) The project can easily get taken off track if the customer representative is not clear what
final outcome that they want.
Performed By
Explanation
Deliverable
Requirements
Reviews
Users, Developers,
Test Engineers.
Requirement Reviews
help in base lining
desired requirements
to build a system.
Reviewed and
approved statement
of requirements.
Design Reviews
Designers, Test
Engineers
System Design
Document, Hardware
Design Document.
Code Walkthroughs
Developers, Subject
Specialists, Test
Engineers.
Code Walkthroughs
help in analyzing the
coding techniques and
if the code is meeting
the coding standards
Code Inspections
Developers, Subject
Specialists, Test
Engineers.
5.1.1 Reviews
The focus of Review is on a work product (e.g. Requirements document, Code etc.).
After the work product is developed, the Project Leader calls for a Review. The work
product is distributed to the personnel who involves in the review. The main audience for
the review should be the Project Manager, Project Leader and the Producer of the work
product.
i) Peer Review is generally a one-to-one meeting between the author of a work product
and a peer, initiated as a request for import regarding a particular artifact or problem.
There is no agenda, and results are not formally reported. These reviews occur on an as
needed basis throughout each phase of a project.
ii) Walkthroughs: The author of the material being reviewed facilitates walk-Through.
The participants are led through the material in one of two formats; the presentation is
made without interruptions and comments are made at the end, or comments are made
throughout. In either case, the issues raised are captured and published in a report
distributed to the participants. Possible solutions for uncovered defects are not discussed
during the review.
Validation
Strategy
Performed By
Explanation
Deliverable
Unit Testing.
Developers / Test
Engineers.
Testing of single
program, modules,
or unit of code.
Integration Testing.
Test Engineers.
Testing of integrated
programs, modules,
or units of code.
System Testing.
Test Engineers.
Testing of entire
computer system.
This kind of testing
usually includes
functional and
structural testing.
Tested computer
system, based on what
was specified to be
developed.
Production
Environment
Testing.
Developers, Test
Engineers.
Stable application.
User Acceptance
Testing.
Users.
Testing of computer
system to make sure
it will work in the
system regardless of
what the system
requirements
indicate.
Installation Testing.
Test Engineers.
Testing of the
Computer System
during the
Installation at the
user place.
Successfully installed
application.
Beta Testing
Users.
Testing of the
application after the
installation at the
client place.
Successfully installed
and running
application.
6. Testing Methodologies:
6.1. Kinds of testing:
Depends on what part of (SDLC) is tested, there are basically two kinds of testing
that are evolved
1. Conventional testing(as usual)
2. Unconventional testing
Conventional Testing
It is a sort of testing in which the test engineer will test the application in the testing
phase of SDLC.
Unconventional Testing
It is a sort of testing in which quality assurance people will check each and every
outcome document right from the initial phase of the SDLC.
It is a method of testing in which one will perform testing only on the functional part of
an application without having any structural knowledge. Usually test engineers perform
it.
STUB
While integrating the modules in top down approach if at all any mandatory module is
missing then that module is replace with a temporary program known as STUB.
DRIVER
While integrating the modules in bottom up approach if at all any mandatory module is
missing then that module is replace with a temporary program known as DRIVER.
This approach is a mixed approach of both Top down and Bottom up approaches.
2.
Regression Testing.
3.
Re Testing.
4.
Alpha - Testing.
5.
Beta - Testing.
6.
Static Testing.
7.
Dynamic Testing.
8.
Installation Testing.
9.
Compatibility Testing.
2. Regression Testing
It is a type of testing in which one will perform testing on the already tested functionality
again and again this is usually done in scenarios (Situations).
Scenario 1:
Whenever the defects are raised by the Test Engineer rectified by the developer and the
next build is released to the testing department then the Test Engineer will test the
defect functionality and its related functionalities once again.
Scenario 2:
Whenever some new changes are requested by the customer, those new features are
incorporated by the developers, next built is released to the testing department then the
test engineers will test the related functionalities of the new features once again which
are already tested. That is also known as regression testing.
Note:
Testing the new features for the first time is new testing but not the regression testing.
3. Re Testing:
It is a type of testing in which one will perform testing on the same function again and
again with multiple sets of data in order to come to a conclusion whether the
functionality is working fine or not.
4. Alpha - Testing:
It is a type of testing in which one (I.e., out Test Engineer) will perform user acceptance
testing in our company in the presents of the customer.
Advantages:
If at all any defects are found there is a chance of rectifying them
immediately.
5. Beta - Testing:
It is a type of testing in which either third party testers or end users will perform user
acceptance testing in the client place before actual implementation.
6. Static Testing:
It is a type of testing in which one will perform testing on an application or its related
factors without performing any actions.
Ex:
7. Dynamic Testing:
It is a type of testing in which one will perform testing on the application by performing
same action.
Ex:
Functional Testing.
8. Installation Testing:
It is a type of testing in which one will install the application in to the environment by
following the guidelines given in the deployment document and if the installation is
successful the one will come to a conclusion that the guidelines are correct otherwise the
guidelines are not correct.
9. Compatibility Testing:
It is a type of testing in which one may have to install the application into multiple
number of environments prepared with different combinations of environmental
components in order to check whether the application is suitable with these
environments or not. This is use usually done to the products.
For example usually the developers will be doing any many changes to the program and
check its performance it is known as mutation testing.
i) Authentication Testing:
it is a type of testing in which a Test Engineer will enter different combinations of user
names and passwords in order to check whether only the authorized persons are
accessing the application or not.
19 .Scalability Testing
It is a type of testing in which one can perform testing on the application to check if the
application is enhance able / expandable and measurable without having to do with
design changes and environmental alterations.
can also serve to validate and verify other quality attributes of the system, such as
scalability, reliability and resource usage.
internalization testing
It is the testing done to check the application is working on different
platforms of international languages.
Ex: - Spanish, German etc.
localization testing
It is the testing done to check the application is working on different
platforms of local languages.
Ex: - Win 95/98/2000 etc.
7. ENVIRONMENT
-Presentation Layer
-Business Layer
-Database Layer
Types of Environment
There are 4 types of environments.
i)
3) Web Environment
In this Environment three tiers will be there client resides in one tier, application server
resides in middle tier and database server resides in the last tier. Every client will have
the presentation layer, application server will have the business layer and database
server will have the database layer.
4) Distributed Environment
It is same as the web Environment but the business logic is distributed among
application server in order to distribute the load.
Web Server: It is software that provides web services to the client.
Application Server:
implement white box testing, the tester has to deal with the code and hence is needed to
possess knowledge of coding and logic i.e. internal working of the code.
c) Cyclomatic Complexity
Cyclomatic complexity is software metric that provides a quantitative measure of the
logical complexity of a program. In basis path testing method, the value computed for
Cyclomatic complexity defines the number for independent paths in the basis set of a
program and provides us with an upper bound for the number of tests that must be
conducted to ensure that all statements have been executed at least once.
An independent path is any path through the program that introduces at least one new
set of processing statements or a new condition.
d) Graph Matrices
The procedure for deriving the flow graph and even determining a set of basis paths is
amenable to mechanization. To develop a software tool that assists in basis path testing,
a data structure, called a graph matrix can be quite useful.
A Graph Matrix is a square matrix whose size is equal to the number of nodes on the
flow graph. Each row and column corresponds to an identified node, and matrix entries
correspond to connections between nodes.
Condition Testing
Condition testing is a test case design method that exercises the logical conditions
contained in a program module.
f) Loop Testing
Loop Testing is a white box testing technique that focuses exclusively on the validity of
loop constructs. Four classes of loops can be defined: Simple loops, Concatenated loops,
nested loops, and unstructured loops.
Simple Loops
The following sets of tests can be applied to simple loops, where n is the maximum
number of allowable passes through the loop.
1. Skip the loop entirely.
2. Only one passes through the loop.
3. Two passes through the loop.
4. m passes through the loop where m<n.
5. n-1, n, n+1 passes through the loop.
Nested Loops
If we extend the test approach for simple loops to nested loops, the number of possible
tests would grow geometrically as the level of nesting increases.
1. Start at the innermost loop. Set all other loops to minimum values.
2. Conduct simple loop tests for the innermost loop while holding the outer loops at their
minimum iteration parameter values. Add other tests for out-of-range or exclude values.
3. Work outward, conducting tests for the next loop, but keeping all other outer loops at
minimum values and other nested loops to typical values.
4. Continue until all loops have been tested.
Concatenated Loops
Concatenated loops can be tested using the approach defined for simple loops, if each of
the loops is independent of the other. However, if two loops are concatenated and the
loop counter for loop 1 is used as the initial value for loop 2, then the loops are not
independent.
Unstructured Loops
Whenever possible, this class of loops should be redesigned to reflect the use of the
structured programming constructs.
b. Error Guessing:
This is purely based on previous experience and judgment of tester. Error Guessing is the
art of guessing where errors can be hidden. For this technique there are no specific tools,
writing the test cases that cover all the application paths.
BVA techniques:
1. Number of variables
For n variables: BVA yields 4n + 1 test cases.
2. Kinds of ranges
Generalizing ranges depends on the nature or type of variables
Advantages of Boundary Value Analysis
1. Robustness Testing - Boundary Value Analysis plus values that go beyond the limits
2. Min - 1, Min, Min +1, Nom, Max -1, Max, Max +1
3. Forces attention to exception handling
Limitations of Boundary Value Analysis:
Boundary value testing is efficient only for variables of fixed values i.e boundary.
d. Equivalence Partitioning:
Equivalence partitioning is a black box testing method that divides the input domain of a
program into classes of data from which test cases can be derived.
How this partitioning is performed while testing:
1. If an input condition specifies a range, one valid and one two invalid classes are
defined.
2. If an input condition requires a specific value, one valid and two invalid equivalence
e. Comparison Testing:
Different independent versions of same software are used to compare to each other for
testing in this method.
Various testing types that fall under the Black Box Testing strategy are: functional
testing, stress testing, recovery testing, volume testing, User Acceptance Testing (also
known as UAT), system testing, Sanity or Smoke testing, load testing, Usability testing,
Exploratory testing, ad-hoc testing, alpha testing, beta testing etc.
Technique
Description
Example
Stress
Execution
Transaction turnaround
time adequate.
Recovery
Evaluate adequacy of
backup data.
Operations
Compliance
Standards follow.
Security
Access denied.
Description
Example
Requirements
Regression
Unchanged system
segments function.
Error Handling
test.
Manual Support
Manual procedures
developed.
Intersystems.
Intersystem parameters
changed.
Control
File reconciliation
procedures work.
Parallel
1. Test Planning
2. Test development
3. Test execution
4. Result Analysis
5. Bug Tracking
6. Reporting
Software testing has its own life cycle that intersects with every stage of the SDLC. The
basic requirements in software testing life cycle is to control/deal with software testing
Manual, Automated and Performance.
ii.
Coverage of Testing
-inscope (Features to be tested):
The list of all the features that are to be tested based on the Implicit and
explicit requirements from the customer will be mentioned here.outscope (Features not to be tested)
The list of all the features that can be skipped from testing phase are mentioned
here, Generally Out of scope features such as incomplete modules are listed here. If
severity is low and time constraints are high then all the low risk features such as GUI or
database style sheets are skipped. Also the features that are to be incorporated in future
are kept out of testing temporarily.
iii. Test Strategy
-Levels of testing: Its a project level term which describes testing procedures in
an organization. All the levels such as Unit, module, Integration, system and UAT (User
Acceptance test) are mentioned here which is to be performed.
-Types of testing: All the various types of testing such as compatibility, regression and
etc are mentioned here with module divisions
-Test design techniques: The List of All the techniques that are followed and maintained
in that company will be listed out here in this section. Some of the most used techniques
are Boundary Value Analysis (BVA) and Equivalence Class Participation (ECP).
-Configuration Management: All the documents that are generated during the testing
process needs to be updated simultaneously to keep the testers and developers aware of
the proceedings. Also the naming conventions and declaring new version numbers for
the software builds based on the amount of change is done by the SCM (Software
Configuration Management team) and the details will be listed here.
-Test Metrics: The list of all the tasks that need to be measured and maintained will be
present here. Different metrics for tracing back the exact requirement and test case
depends on the availability of metrics at the right time.
-Terminology: Testing specific jargons for the project that will be used internally in the
company will be mentioned here in this section.
-Automation Plan: The list of all the features or modules that are planned for
automation testing will be mentioned here. The application only undergoes automation
testing after being declared STABLE by the manual testing team.
-List of Automated tools: The list of Automated tools, like QTP, Load runner, Win runner;
etc which will be used in this project will be mentioned along with license details.
iv. Base Criteria:
-Acceptance Criteria: The standards or metrics that need to be achieved by the testing
team before declaring the product fit will be listed here. So before handing over to the
customer, the time at which the testing needs to be stopped is mentioned here in this
section.
-Suspension Criteria: In high risk projects, or huge projects that consists several
modules, It is necessary to minimize the repetitive process to be efficient. The situations
when the testing needs to be suspended or temporarily halted will be listed here in this
section
v. Test deliverables:
The list of all the documents that are to be prepared during the testing process will
be mentioned here in this section. All the copies of verification documents after each
level are submitted to the customer along with the user manual and product at the end
of the project.
Documents include:
1.
2.
3.
4.
5.
6.
Environmental components and combinations that will be simulated for testing the
product will be made sure that it is very close to the actual environment when the end
user works on the product. All the details will be mentioned here in this section that is to
be used for testing the application.
vii. Resource planning:
Roles to be performed or in other words who has to do what will be mentioned
clearly here.
viii. Scheduling:
The starting dates and ending dates for each and every task and module will be
listed here in this section.
ix. Staffing and Training:
How much staff is to be recruited and what kind of training is to be provided to
accomplish this project successfully will be described here in a detailed fashion.
xi. Assumptions:
Some features or testing methods have to be done mandatorily even though, the
customer does not mention it in his requirements document. These assumptions are
listed out here in this section.
This is the most important stage of the testing life cycle, in this phase of the
testing; the testers will develop the test scenarios and test cases based against the
requirements of the customer.
The Test cases ensure that all the functionalities are being covered in testing but
these should be mapped with business requirements to ensure that all the requirements
are met. For this we need to prepare RTM, to verify 100% Coverage of Requirements.
Requirement Traceability matrix typically consists of
Module Name: The module in the project where the requirement is under
consideration
Test Case ID: The Test case Id from the test case template
Requirement Changes: If any changes are made in the requirements that has to be
notified.
The following is the RTM Template of iSpace:
Failure: Deviation of the component or system from its expected delivery, service or
result.
Issue: Its same as defect.
Suggestion: The points not covered in BRD but which can improve quality can be
suggested by testers to the developers
M
ail
TE1
TE2
TE3
Dev1
Dev2
Dev3
Drawbacks:
1.Time consuming
2. Redundancy.
3. No Security.
TL
Dev1
Dev2
Dev3
TE1
TE2
TE3
Drawbacks:
1.Time consuming.
2. Redundancy.
TL
PL
TE1
TE2
TE3
Dev1
Dv2
Dve3
BTT
Very Important stage to update the DPD (Defect profile document) and the let the
developers know of the defects.
d)
Minor: Minor loss of function, or other problem where easy work around is present.
e)
a) High: Bug must be fixed immediately; the product cannot ship with this bug.
b) Medium: These are important problems that should be fixed as soon as possible. The
problem should be fixed within the time available.
c) Low: It is not important that these bugs be addressed.
Fix these bugs after all other bugs have been fixed
Test case ID: Test case Number that is written in the test case Document.
Client Acceptance
e) ANSI
'American National Standards Institute', the primary industrial standards body in
the U.S.; publishes some software-related standards in conjunction with the IEEE and
ASQ (American Society for Quality).