System Testing includes testing of a fully integrated software system. Generally, a computer system is
made with the integration of software (any software is only a single element of a computer system).
The software is developed in units and then interfaced with other software and hardware to create a
complete computer system. In other words, a computer system consists of a group of software to
perform the various tasks, but only software cannot perform the task; for that software must be
interfaced with compatible hardware. System testing is a series of different type of tests with the
purpose to exercise and examine the full working of an integrated software computer system against
requirements.
There is four levels of software testing: unit testing, integration testing, system testing and
acceptance testing, all are used for the testing purpose. Unit Testing used to test a single software;
Integration Testing used to test a group of units of software, System Testing used to test a whole
system and Acceptance Testing used to test the acceptability of business requirements. Here we are
discussing system testing which is the third level of testing levels.
System testing falls under Black box testing as it includes testing of the external working of the
software. Testing follows user's perspective to identify minor defects.
o Verification of input functions of the application to test whether it is producing the expected
output or not.
o Testing of integrated software by including external peripherals to check the interaction of
various components with each other.
o Testing of the whole system for End to End testing.
o Behavior testing of the application via auser's experience
Load Testing
Load testing is performed under system testing to clarify whether the system can work under real-
time loads or not.
Functional Testing
Functional testing of a system is performed to find if there's any missing function in the system.
Tester makes a list of vital functions that should be in the system and can be added during functional
testing and should improve quality of the system.
Recovery Testing
Recovery testing of a system is performed under system testing to confirm reliability, trustworthiness,
accountability of the system and all are lying on recouping skills of the system. It should be able to
recover from all the possible system crashes successfully.
Migration Testing
Migration testing is performed to ensure that if the system needs to be modified in new infrastructure
so it should be modified without any issue.
Usability Testing
The purpose of this testing to make sure that the system is well familiar with the user and it meets its
objective for what it supposed to do.
o
o Software testing is a process of identifying the correctness of a software by considering its all
attributes (Reliability, Scalability, Portability, Re-usability, Usability) and evaluating the
execution of software components to find the software bugs or errors or defects.
o Software testing provides an independent view and objective of the software and gives surety
of fitness of the software. It involves testing of all components under the required services to
confirm that whether it is satisfying the specified requirements or not. The process is also
providing the client with information about the quality of the software.
o Testing is mandatory because it will be a dangerous situation if the software fails any of time
due to lack of testing. So, without testing software cannot be deployed to the end user.
o
o Overview
o Testing is a group of techniques to determine the correctness of the application under the
predefined script but, testing cannot find all the defect of application. The main intent of
testing is to detect failures of the application so that failures can be discovered and corrected.
It does not demonstrate that a product functions properly under all conditions but only that it
is not working in some specific conditions.
o Testing furnishes comparison that compares the behavior and state of software against
mechanisms because the problem can be recognized by the mechanism. The mechanism may
include past versions of the same specified product, comparable products, and interfaces of
expected purpose, relevant standards, or other criteria but not limited up to these.
o Testing includes an examination of code and also the execution of code in various
environments, conditions as well as all the examining aspects of the code. In the current
scenario of software development, a testing team may be separate from the development
team so that Information derived from testing can be used to correct the process of software
development.
o The success of software depends upon acceptance of its targeted audience, easy graphical
user interface, strong functionality load test, etc. For example, the audience of banking is
totally different from the audience of a video game. Therefore, when an organization develops
a software product, it can assess whether the software product will be beneficial to its
purchasers and other audience.
SDLC describes various phases of software development and the order of execution of phases. Each
phase requires deliverable from the previous phase in a life cycle of software development.
Requirements are translated into design, design into development and development into testing, after
testing it is given to the client.
o Requirement Phase
o Design Phase
o Build /Development Phase
o Testing Phase
o Deployment/ Deliver Phase
o Maintenance
1. Requirement Phase
This is the most crucial phase of software development life cycle for the developing team as well as for
the project manager. During this phase, the client states requirements, specifications, expectations
and any other special requirement related to the product or software. All these are gathered by the
business manager or project manager or analyst of the service providing company.
Requirement includes how the product will be used and who will use the product to determine the load
of operations. All information gathered from this phase is critical to developing the product as per the
customer requirements.
2. Design Phase
Design phase includes a detailed analysis of new software according to the requirement phase. This is
the high priority phase in the development life cycle of a system because the logical designing of the
system is converted into physical designing. The output of requirement phase is a collection of things
that are required and design phase gives the way to accomplish these requirements. The decision of
all required essential tools such as programming
language like Java, .NET, PHP; database like Oracle, MySQL, a combination of hardware and
software to provide a platform on which software can run without any problem is taken in this phase.
There are several techniques and tools such as data flow diagrams, flowcharts, decision tables and
decision trees, Data dictionary, and the structured dictionary are used for describing the system
design.
Front-end developers develop easy and attractive GUI and necessary interfaces to interact with back-
end operations and back-end developers do back-end coding according to the required operations. All
is done according to the procedure and guidelines demonstrated by the project manager.
Since, this is the coding phase it takes the longest time and more focused approach for the developer
in the software development life cycle.
4. Testing Phase
Testing is the last step of completing software system. In this phase, after getting the developed GUI
and back-end combination, it is tested against the requirements stated in the requirement phase.
Testing determines whether the software is actually giving the result as per the requirements
addressed in the requirement phase or not. Development team makes a test plan to start the test.
This test plan includes all types of essential testing such as integration testing, unit testing,
acceptance testing, and system testing. Non-functional testing is also done in this phase.
If there are any defects in the software, or it is not working as per expectations, then testing team
gives information to the development team in detail about the issue. If it is a valid defect or worth to
sort out, it will be fixed and development team replaces it with the new one and it also needs to be
verified.
As soon as customers receive the product, they are recommended first to do the beta testing. In beta
testing, customer can require any changes which are not present in the software but mentioned in the
requirement document or any other GUI changes to make it more user-friendly. Besides this, if any
type of defect is encountered while a customer using the software; it will be informed to the
development team of that particular software to sort out the problem. If it is a severe issue, then the
development team solves it in a short time otherwise, if it is less severe, then it will wait for the next
version.
After the solution of all type of bugs and changes, software finally deployed to the end user.
6. Maintenance
The maintenance phase is the last and long-lasting phase of SDLC because it is the process which
continues till the software's life cycle comes to an end. When a customer starts using software, then
actual problems start to occur, and at that time there's a need to solve these problems. This phase
also includes making changes in hardware and software to maintain its operational effectiveness like
to improve its performance, enhance security features and according to customer's requirements with
upcoming time. This process to take care of product time to time is called maintenance.
"So, all these are six phases of software development life cycle (SDLC) under which the process of
development of software takes place. All are compulsory phases without any one of the development
cannot be possible because development continues for the lifetime of software with maintenance
phase".
An error is something that a human does, we all make mistakes and when we do whilst
developing software, it is known as an error. The result of an error being made is a fault. It is
something that is wrong in the software (source code or documentation – specifications,
manuals, etc.). Faults are also known as defects or bugs.
When a system or piece of software produces an incorrect result or does not perform the
correct action, this is known as a failure. Failures are caused by faults in the software. Note that
software system can contain faults but still never fail (this can occur if the faults are in those
parts of the system that are never used). In other words, failure is the manifestation of one or
more faults (bugs).
Reliability
Another term that should be understood is reliability. A system is said to be reliable when it
performs correctly for long periods of time. However, the same system used by two different
people may appear reliable to one but not to the other. This is because the different people use
the system in different ways.
Reliability: the probability that the software will not cause the failure of the system for a
specified time under specified conditions.
The definition of reliability therefore includes the phrase ‘under specified conditions’. When
reporting on the reliability of a system it is important to explain under what conditions the
system will achieve the specified level of reliability. For example, a system may achieve a
reliability of no more than one failure per month providing no more than 10 people use the
system simultaneously.
Incident
While executing a test, you might observe that the actual results vary
from expected results. When the actual result is different from the
expected result then it is called as incidents, bugs, defects, problems or
issues.
To be specific, we sometimes make difference between incidents
and the defects or bugs. An incident is basically any situation where
the system exhibits questionable behavior, but often we refer to an
incident as a defect only when the root cause is some problem in
the item we are testing.
Other causes of incidents include misconfiguration or failure of the
test environment, corrupted test data, bad tests, invalid expected
results and tester mistakes.
Test Case
Test Scenario
Test Steps
Prerequisite
Test Data
Expected Result
Test Parameters
Actual Result
Environment Information
Comments
Example:
Let us say that we need to check an input field that can accept maximum of 10 characters.
While developing the test cases for the above scenario, the test cases are documented the following way. In
the below example, the first case is a pass scenario while the second case is a FAIL.
Scenario Test Step Expected Result Actual
Outcome
If the expected result doesn't match with the actual result, then we log a defect. The defect goes through the
defect life cycle and the testers address the same after fix.
8. Test deliverables The deliverables that are delivered as part of the testing
process,such as test plans, test specifications and test
summary reports.
9. Testing tasks All tasks for planning and executing the testing.
11. Responsibilities Lists the roles and responsibilities of the team members.
12. Staffing and Captures the actual staffing requirements and any
training needs specific skills and training requirements.
13. Schedule States the important project delivery dates and key
milestones.
15. Approvals Captures all approvers of the document, their titles and
the sign off date.
Planning when and how to test and deciding how the test results will be evaluated, and defining test
exit criterion.
Defining the management information, including the metrics required and defect resolution and risk
issues.
Software Validation
Validation is process of examining whether or not the software satisfies the user requirements. It is carried out
at the end of the SDLC. If the software matches requirements for which it was made, it is validated.
Validation ensures the product under development is as per the user requirements.
Validation answers the question – "Are we developing the product which attempts all that user needs
from this software ?".
Validation emphasizes on user requirements.
Software Verification
Verification is the process of confirming if the software is meeting the business requirements, and is
developed adhering to the proper specifications and methodologies.
Errors - These are actual coding mistakes made by developers. In addition, there is a difference in
output of software and desired output, is considered as an error.
Fault - When error exists fault occurs. A fault, also known as a bug, is a result of an error which can
cause system to fail.
Failure - failure is said to be the inability of the system to perform the desired task. Failure occurs
when fault exists in the system.
Manual - This testing is performed without taking help of automated testing tools. The software tester
prepares test cases for different sections and levels of the code, executes the tests and reports the
result to the manager.
Manual testing is time and resource consuming. The tester needs to confirm whether or not right test
cases are used. Major portion of testing involves manual testing.
Automated This testing is a testing procedure done with aid of automated testing tools. The
limitations with manual testing can be overcome using automated test tools.
A test needs to check if a webpage can be opened in Internet Explorer. This can be easily done with manual
testing. But to check if the web-server can take the load of 1 million users, it is quite impossible to test
manually.
There are software and hardware tools which helps tester in conducting load testing, stress testing, regression
testing.
Testing Approaches
Tests can be conducted based on two approaches –
Functionality testing
Implementation testing
When functionality is being tested without taking the actual implementation in concern it is known as black-box
testing. The other side is known as white-box testing where not only functionality is tested but the way it is
implemented is also analyzed.
Exhaustive tests are the best-desired method for a perfect testing. Every single possible value in the range of
the input and output values is tested. It is not possible to test each and every value in real world scenario if the
range of values is large.
Black-box testing
It is carried out to test functionality of the program. It is also called ‘Behavioral’ testing. The tester in this case,
has a set of input values and respective desired results. On providing input, if the output matches with the
desired results, the program is tested ‘ok’, and problematic otherwise.
In this testing method, the design and structure of the code are not known to the tester, and testing engineers
and end users conduct this test on the software.
Black-box testing techniques:
Equivalence class - The input is divided into similar classes. If one element of a class passes the
test, it is assumed that all the class is passed.
Boundary values - The input is divided into higher and lower end values. If these values pass the
test, it is assumed that all values in between may pass too.
Cause-effect graphing - In both previous methods, only one input value at a time is tested. Cause
(input) – Effect (output) is a testing technique where combinations of input values are tested in a
systematic way.
Pair-wise Testing - The behavior of software depends on multiple parameters. In pairwise testing, the
multiple parameters are tested pair-wise for their different values.
State-based testing - The system changes state on provision of input. These systems are tested
based on their states and input.
White-box testing
It is conducted to test program and its implementation, in order to improve code efficiency or structure. It is
also known as ‘Structural’ testing.
In this testing method, the design and structure of the code are known to the tester. Programmers of the code
conduct this test on the code.
The below are some White-box testing techniques:
Control-flow testing - The purpose of the control-flow testing to set up test cases which covers all
statements and branch conditions. The branch conditions are tested for both being true and false, so
that all statements can be covered.
Data-flow testing - This testing technique emphasis to cover all the data variables included in the
program. It tests where the variables were declared and defined and where they were used or
changed.
Testing Levels
Testing itself may be defined at various levels of SDLC. The testing process runs parallel to software
development. Before jumping on the next stage, a stage is tested, validated and verified.
Testing separately is done just to make sure that there are no hidden bugs or issues left in the software.
Software is tested on various levels -
Unit Testing
While coding, the programmer performs some tests on that unit of program to know if it is error free. Testing is
performed under white-box testing approach. Unit testing helps developers decide that individual units of the
program are working as per requirement and are error free.
Integration Testing
Even if the units of software are working fine individually, there is a need to find out if the units if integrated
together would also work without errors. For example, argument passing and data updation etc.
System Testing
The software is compiled as product and then it is tested as a whole. This can be accomplished using one or
more of the following tests:
Functionality testing - Tests all functionalities of the software against the requirement.
Performance testing - This test proves how efficient the software is. It tests the effectiveness and
average time taken by the software to do desired task. Performance testing is done by means of load
testing and stress testing where the software is put under high user and data load under various
environment conditions.
Security & Portability - These tests are done when the software is meant to work on various
platforms and accessed by number of persons.
Acceptance Testing
When the software is ready to hand over to the customer it has to go through last phase of testing where it is
tested for user-interaction and response. This is important because even if the software matches all user
requirements and if user does not like the way it appears or works, it may be rejected.
Alpha testing - The team of developer themselves perform alpha testing by using the system as if it
is being used in work environment. They try to find out how user would react to some action in
software and how the system should respond to inputs.
Beta testing - After the software is tested internally, it is handed over to the users to use it under their
production environment only for testing purpose. This is not as yet the delivered product. Developers
expect that users at this stage will bring minute problems, which were skipped to attend.
Regression Testing
Whenever a software product is updated with new code, feature or functionality, it is tested thoroughly to
detect if there is any negative impact of the added code. This is known as regression testing.
Testing Documentation
Testing documents are prepared at different stages -
Before Testing
Testing starts with test cases generation. Following documents are needed for reference –
Test Policy document - This describes how far testing should take place before releasing the
product.
Test Strategy document - This mentions detail aspects of test team, responsibility matrix and
rights/responsibility of test manager and test engineer.
Traceability Matrix document - This is SDLC document, which is related to requirement gathering
process. As new requirements come, they are added to this matrix. These matrices help testers know
the source of requirement. They can be traced forward and backward.
Test description - This document is a detailed description of all test cases and procedures to execute
them.
Test case report - This document contains test case report as a result of the test.
Test logs - This document contains test logs for every test case report.
After Testing
The following documents may be generated after testing :
Test summary - This test summary is collective analysis of all test reports and logs. It summarizes
and concludes if the software is ready to be launched. The software is released under version control
system if it is ready to launch.
Software quality assurance - These are software development process monitoring means, by which
it is assured that all the measures are taken as per the standards of organization. This monitoring is
done to make sure that proper software development methods were followed.
Software quality control - This is a system to maintain the quality of software product. It may include
functional and non-functional aspects of software product, which enhance the goodwill of the
organization. This system makes sure that the customer is receiving quality product for their
requirement and the product certified as ‘fit for use’.
Software audit - This is a review of procedure used by the organization to develop the software. A
team of auditors, independent of development team examines the software process, procedure,
requirements and other aspects of SDLC. The purpose of software audit is to check that software and
its development process, both conform standards, rules and regulations.
Agile Testing
Questions
Quizzes
Home » SDLC » Incremental Model
Incremental Model
Updated: December 2, 2018 - Amir Ghahrai
The product is decomposed into a number of components, each of which are designed and built
separately (termed as builds). Each component is delivered to the client when it is complete. This
allows partial utilisation of product and avoids a long development time. It also creates a large
initial capital outlay with the subsequent long wait avoided. This model of development also
helps ease the traumatic effect of introducing completely new system all at once.
There are some problems with this model. One is that each new build must be integrated with
previous builds and any existing systems. The task of decomposing product into builds not
trivial either. If there are too few few builds and each build degenerates this turns into Build-
And-Fix model. However if there are too many builds then there is little added utility from each
build.
What is the difference between Incremental Model and Iterative
Model?
The Incremental Approach uses a set number of steps and development goes from start to
finish in a linear path of progression.
The Iterative Approach has no set number of steps, rather development is done in cycles.
Iterative development is less concerned with tracking the progress of individual features.
Instead, focus is put on creating a working prototype first and adding features in development
cycles where the Increment Development steps are done for every cycle. Agile Modeling is a
typical iterative approach.
The test plan serves as a blueprint to conduct software testing activities as a defined
process which is minutely monitored and controlled by the test manager.
In a meeting, you want to discuss the Test Plan with the team members, but they
are not interested - .
In such case, what will you do? Select your answer as following figure
A) I am Manager do everything as I said
Test Plan helps us determine the effort needed to validate the quality of the
application under test
Help people outside the test team such as developers, business managers,
customers understand the details of testing.
Test Plan guides our thinking. It is like a rule book, which needs to be
followed.
Important aspects like test estimation, test scope, Test
Strategy are documented in Test Plan, so it can be reviewed by
Management Team and re-used for other projects.
Now let’s apply above knowledge to a real product: Analyze the banking
website http://demo.guru99.com/V4.
You should take a look around this website and also review product
documentation. Review of product documentation helps you to understand all the
features of the website as well as how to use it. If you are unclear on any items, you
might interview customer, developer, designer to get more information.
Back to your project, you need to develop Test Strategy for testing that banking
website. You should follow steps below
Defining the scope of your testing project is very important for all stakeholders. A
precise scope helps you
Give everyone a confidence & accurate information of the testing you are
doing
All project members will have a clear understanding about what is tested and
what is not
Now should clearly define the "in scope" and "out of scope" of the testing.
As the software requirement specs, the project Guru99 Bank only focus on
testing all the functions and external interface of website Guru99 Bank (in
scope testing)
Nonfunctional testing such as stress, performance or logical
database currently will not be tested. (out of scope)
Problem Scenario
The customer wants you to test his API. But the project budget does not permit to do
so. In such a case what will you do?
Well, in such case you need to convince the customer that Api Testing is extra work
and will consume significant resources. Give him data supporting your facts. Tell him
if Api Testing is included in-scope the budget will increase by XYZ amount.
The customer agrees and accordingly the new scopes, out of scope items are
Each testing type is formulated to identify a specific type of product bugs. But, all
Testing Types are aimed at achieving one common goal “Early detection of all the
defects before releasing the product to the customer”
Whenever we talk about technologies and some processes, every process has
set of limitations or drawbacks. Even in the software development, different
approaches limits themselves to some extent. Software testing which is an
inherited part of the whole software development process also possess some
limitations. Read and explore areas and aspects, where software testing lacks
to deliver the results.
1. We use testing to disclose many hidden errors but this methodology never
guarantees the absence of errors. It is only used to identify the known
errors. It never gives any information about those defects which remain
uncovered.
2. Testing do not provide you any help when you have to make a decision
either “you should release the product consisting errors for meeting the
deadline” or “you should release late by compromising the deadline”.
4. While injecting the defects, software testing unable to find the root causes
which may help in placing defects at the first place. Identifying the root
causes of defects/errors helps in injection of defects for future purposes.
GUI object size difference and color combination are the two essential
measures which are very difficult to find by using manual testing. Manual
testing process is not suitable for large scale projects and limited time
projects. Comparing huge amount of data will be unrealistic in terms of
manual testing.
5. GUI object size difference and color combination are the two essential
measures which are very difficult to find by using manual testing.
6. Manual testing process is not suitable for large scale projects and limited
time projects.