Software Testing
Software Testing
What is testing?
Testing is the process of evaluating a system or its component(s) with the intent to
find that whether it satisfies the specified requirements or not. This activity results
in the actual, expected and difference between their results.
In simple words testing is executing a system in order to identify any gaps, errors
or missing requirements in contrary to the actual desire or
Who does testing?
In most cases, following professionals are involved in testing of a system within
their respective capacities:
● Software Tester
● Software Developer
● Project Lead/Manager
● End User
Difference between Testing and Debugging
Testing: It involves the identification of bug/error/defect in the software without
correcting it. Normally professionals with a Quality Assurance background are
involved in the identification of bugs. Testing is performed in the testing phase.
Testers use test plan, test cases or test scenarios to test the Software to ensure
the completeness of testing. Manual testing also includes exploratory testing as
testers explore the software to identify errors in it.
Automation Testing
Automation testing which is also known as “Test Automation”, is when the tester
writes scripts and uses another software to test the software. This process
involves automation of a manual process. Automation Testing is used to re-run the
test scenarios that were performed manually, quickly and repeatedly.
Apart from regression testing, Automation testing is also used to test the
application from load, performance and stress point of view. It increases the test
coverage; improve accuracy, saves time and money in comparison to manual
testing.
Testing Methods
● Black Box Testing
● White Box Testing
● Grey Box Testing
Black Box Testing
The technique of testing without having any knowledge of the interior workings of
the application is Black Box testing. The tester is oblivious to the system
architecture and does not have access to the source code. Typically, when
performing a black box test, a tester will interact with the system’s user interface
by providing inputs and examining outputs without knowing how and where the
inputs are worked upon.
White Box Testing
White box testing is the detailed investigation of internal logic and structure of the
code. White box testing is also called glass testing or open box testing. In order to
perform white box testing on an application, the tester needs to possess
knowledge of the internal working of the code. The tester needs to have a look
inside the source code and find out which unit/chunk of the code is behaving
inappropriately.
Grey Box Testing
Grey Box testing is a technique to test the application with limited knowledge of
the internal workings of an application. In software testing, the term “the more you
know the better” carries a lot of weight when testing an application.
Levels of Testing
● Functional Testing.
● Non- functional Testing.
Functional Testing
This is a type of black box testing that is based on the specifications of the
software that is to be tested. The application is tested by providing input and then
the results are examined that need to conform to the functionality it was intended
for. Functional Testing of the software is conducted on a complete, integrated
system to evaluate the system's compliance with its specified requirements.
Cont’d
Unit Testing This type of testing is performed by the developers before the setup
is handed over to the testing team to formally execute the test cases. Unit testing
is performed by the respective developers on the individual units of source code
assigned areas. The developers use test data that is separate from the test data of
the quality assurance team.
The goal of unit testing is to isolate each part of the program and show that
individual parts are correct in terms of requirements and functionality.
Integration Testing
The testing of combined parts of an application to determine if they function
correctly together is Integration testing. There are two methods of doing
Integration Testing Bottom-up Integration testing and Top Down Integration testing.
Top-Down integration testing, the highest-level modules are tested first and
progressively lower-level modules are tested after that. In a comprehensive
software development environment, bottom-up testing is usually done first,
followed by top-down testing.
Cont’d
System Testing: This is the next level in the testing and tests the system as a
whole. Once all the components are integrated, the application as a whole is
tested rigorously to see that it meets Quality Standards. This type of testing is
performed by a specialized testing team.
Regression Testing: Whenever a change in a software application is made it is
quite possible that other areas within the application have been affected by this
change. To verify that a fixed bug hasn’t resulted in another functionality or
business rule violation is Regression testing. The intent of Regression testing is to
ensure that a change, such as a bug fix did not result in another fault being
uncovered in the application.
Acceptance Testing This is arguably the most important type of testing as it is
conducted by the Quality Assurance Team who will gauge whether the application
meets the intended specifications and satisfies the client’s requirements. The QA
team will have a set of pre written scenarios and Test Cases that will be used to
test the application.
Alpha Testing
This test is the first stage of testing and will be performed amongst the teams
(developer and QA teams). Unit testing, integration testing and system testing
when combined are known as alpha testing. During this phase, the following will
be tested in the application:
● Spelling Mistakes
● Broken Links
● Cloudy Directions
● The Application will be tested on machines with the lowest specification to test
loading times and any latency problems.
Beta Testing
This test is performed after Alpha testing has been successfully performed. In beta
testing a sample of the intended audience tests the application. Beta testing is
also known as pre-release testing. Beta test versions of software are ideally
distributed to a wide audience on the Web, partly to give the program a
"real-world" test and partly to provide a preview of the next release.
Non-Functional Testing
● Performance Testing
○ Network delay.
○ Client side processing.
○ Database transaction processing.
○ Load balancing between servers.
○ Data rendering.
Usability Testing
Usability testing ensures that a good and user friendly GUI is designed and is easy
to use for the end user. UI testing can be considered as a sub part of Usability
testing.
● Easy to Learn
● Easy to Remember
● Efficient to Use
● Satisfactory to Use and
● Easy to Understand.
Security Testing
● Confidentiality.
● Integrity.
● Authentication.
● Availability.
● Authorization.
● Non-repudiation.
● Software is secure against known and unknown vulnerabilities.
● Software data is secure.
● Software is according to all security regulations.
Test Case Sample