Software Testing Guide
Software Testing Guide
Computer Software Testing is a process that consists of all Test Life Cycle activities Test planning, Test Design, Test Execution and Test closure to determine that the software products satisfy customer’s requirements and are fit for customers use.
Software Testing includes static and dynamic testing.
Software Testing is done to find software defects or failures in advance.
Basically Software Testing is done in Two ways one is Manual Testing and another is Test Automation.
Testing Computer software manually without using any software test tool (Tool also Software)
In this Manual Testing, Requirements can be understood, Testers plan for all Test activities, Test Scenarios and Test Cases can be prepared, Test data can be collected, Testers execute Test cases and if they find any deviation from excepted then Report defects, after fixing defects Testers conform fixes by conducting Re & Regressions Testing.
In Manual Testing important tasks are:
• Understanding Test Requirements,
• Test Planning
• Generating Test Scenarios, Documenting Test Cases, Collecting Test Data.
• Executing Test Cases and Reporting Defects
• Tracking Defects, Conformation Testing
• Summarizing Test Activates and Test Closure.
Automated Testing or Test Automation:
Testing Computer Software using any software test tool,
In Functional Test Automation Important tasks are:
• Object Identification,
• Selecting Tests for Test Automation,
• Generating Tests using Test Tool IDE and Scripting (Programming) features.
• Executing Series of Tests (Batch Tests), here human user interaction is optional.
• Reporting and Tracking Defects
• Re & Regression Testing on Modified builds.
I) SDLC Models
Software Tester must have exposure on Software Development process or Software Development Life Cycle. Actually it is Developers / Programmers concern, but testing is a part of SDLC, so Independent Testers also need to familiar with SDLC process.
In the IT industry there are several SDLC models available, but we can divide them in to two important categories.
1. Sequential Development Models
2. Iterative / Incremental Models
Sequential Development Models:
In this Approach Software project Development is divided into phases like Requirements gathering, Analysis & Planning, Design, Coding, Testing and Release & Maintenance, ever stage output is input for next stage.
• Waterfall Model,
• V-Model (Verification and Validation)
Iterative / Incremental Models:
In this approach, the First increment is often a core product. The core product is used by the customer or under goes a detailed review. As a result of use or evaluation a plan is developed for the next increment. The plan addresses the modification to the core project to better meet the needs of the customers and delivery of additional features and functionality.
Software is constructed in a step-by-step manner. While a software project is being developed, each step adds to what has already been completed.
a. Spiral Model,
b. Agile Models …etc
In this SDLC area, You must familiar with at least two Sequential Development Models and Two Iterative / Incremental Models in order to get better opportunities.
II) Test Levels
We have 4 levels of testing for every software project, some projects may have 5 levels of Testing (Ex: Distributed software applications).
Independent Applications (Less or No Business Dependency with other Applications) have four levels of testing.
Four Levels of Testing:
• Unit / Component / Module / Program Testing
• Integration level Testing
• System testing
• Acceptance Testing
Five Levels of Testing for N-Tier or Distributed Applications (Business Dependency with other Software Applications)
• Unit / Component / Module / Program Testing
• Component Integration Testing
• System Testing
• System Integration Testing
• Acceptance Testing
Ex: Internet Banking, Hospital Management Application etc…
1). Unit / Component Testing:
Unit: unit is defined as smallest meaning full part of software (program),
In this Level of Testing Testers are Developers.
In this Test Level developers conduct testing by using white box test design techniques like Statement testing, Condition Testing, Decision Testing etc…
2). Integration level Testing:
In integration testing the individual tested units are grouped as one and the interface between them is tested. Integration testing identifies the problems that occur when the individual units are combined i.e it detects the problem in interface of the two units. Integration testing is done after unit testing.
There are mainly Four approaches for conducting Integration testing.
Top down approach tests the integration from top to bottom, it follows the architectural structure.
Example: Integration can start with GUI and the missing components will be substituted by stubs and integration will go on.
In bottom up approach testing takes place from the bottom of the control flow, the higher level components are substituted with drivers
In this approach developers use Top-down Approach for some part of the integration and Bottom-up approach for remaining part of Components or units integration.
Big bang or System approach:
In Big bang approach most or all of the developed modules are coupled together to form a complete system and then used for integration testing.
3. System testing
After completion of final integration of all modules as a system, Testing Engineers plan to conduct Functional & System testing through Black box testing techniques like Equalent Classes, Boundary Value Analysis, Decision Tables Testing, State Transition Testing, Use case Testing etc…
Independent Testers conduct Functional and Non-Functional Test Types in this System Test Level.
Testing based on an analysis of the specification of the functionality of a component or system.
Sub sets of Functional Testing:
i. Functionality testing: The process of testing to determine the functionality of a software product.
ii. Security Testing: Testing to determine the security of the software product.
iii. Interoperability testing: The process of testing to determine the interoperability of a software product.
Performance testing: The process of testing to determine the performance of software product.
Sub sets of Performance Testing:
i. Load testing: A type of performance testing conducted to evaluate the behavior of a component or system with increasing load.
ii. Stress testing: A type of performance testing conducted to evaluate a system or component at or beyond the limits of its anticipated or specified workloads, or with reduced availability of resources such as access to memory or servers
Localization/Internationalization Testing etc…
Types of Acceptance Testing
a. User Acceptance Testing:
Acceptance testing: Formal testing with respect to user needs, requirements, and business processes conducted to determine whether or not a system satisfies the acceptance criteria and to enable the user, customers or other authorized entity to determine whether or not to accept the system.
b. Operational Acceptance Testing:
Operational testing in the acceptance test phase, typically performed in a (simulated) operational environment by operations and/or systems administration staff focusing on operational aspects, e.g. recoverability, resource-behavior, installability and technical compliance.
c. Certification Acceptance Testing
The process of confirming that a component, system or person complies with its specified requirements, e.g. by passing an exam.
III) Test Types:
Basically we have 2 types of testing
• Functional Testing (Functionality Test, Security testing)
Functionality Test: Subsets of all functional testing comes under Functionality Test.
Functional Testing: Verifying a component of systems Functionality with respect to functional Requirement .
• Non Functional Testing
Verifying systems Quality attributes with respect to Non functional testing.
Ex: Performance Testing, Reliability Testing, Usability Testing
These all are the subsets of Non functional testing.
Load testing, Stress testing, Spike testing, Endurance testing
these all are the subsets of Performance Testing.
Functional testing is mandatory for ever software applications. Non Functional testing is optional.
IV) Test Design Techniques:
(Techniques: An easy way to perform something)
We have 3 types of Test Design Techniques
Block Box Testing / Specification based techniques
• Equalent Classes (EC / EP)
(BVA extension of EC /EP, without EC / EP we can’t use BVA but without BVA we can use EC / EP )
• Boundary Value Analysis (BVA)
• Decision Tables
• State Transition Testing
• Use case Testing
White Box Testing / Structural Testing:
Internal architecture can be visible,
b) Condition Testing / Multi Condition Testing
c) Decision Testing …etc
Experienced based testing a) Exploratory Testing
b) Error guessing Testing
V) STLC / Software Test Process:
In STLC or Software Test Process we have Four important phases:
• Test planning
Test plan: A strategy Document which contains some information that describes how to perform testing on that application in an effective efficient and optimized way.
In this Phase Primary Role: Test Lead / Team Lead
Author of the Test plan Document is Test Lead in this Test Planning
• Requirements Specification
• Test Strategy
• Prepare test plan (project plan)
• Plan for the training needs
• Effort Estimation( like time budget, Resources)
Participants: Test Lead and Test manager and BA for Clarifications on Requirements
Templates: Test Strategy Document, Test Plan.
• Test Development (or) Test Design
In this Primary role is Testers, Team members,
Test lead: Monitoring, guidance, Controlling
Testers (or) Team members: Derived Test scenario, Test Cases, Test Data.
• Test Execution:
In this phase Primary role:Testers, Team members,
Testers executes test cases if they find any deviation from expected they send Defect report.
• Test Closure
In this phase primary role: Test Lead.
Evaluating the existing criteria means when to stop testing ,preparing Test Summary Report, send all test deliverables to customers. In this phase all team members contribution is required.
VI) Test Documents:
Some test documents are Company level and some documents are Project level.
a) Test Policy: It is high level Document, company level document, only one document for each company.
b) Test Strategy: It is a company level document, it is for one or more projects. But some companies may have multiple Test Strategies.
c) Test Plan: It is a project level document, planning all test activities, some companies may have multiple plans (unit test plan etc).
d) Traceability matrix: Mapping Requirements with test cases. Test lead (or) Team lead creates this document, all team members update this document throughout the life cycle.
e) Test scenario:
f) Test Case Documents:
g) Test Data: some companies maintain test cases and test data in same document, some companies maintain different documents.
i) Test summery Report: by team lead
VII) Quality Standards:
Testing Improves quality, so we mustt familiar with Quality Standards, some Non Governmental organizations are providing standards for Software Test Terminology, Test Documentation Templates and for Test Process.
Software Testing Interview Questions