Software Testing
Software Testing
2
Basics of Quality Assurance (QA) in Sofware Development..........................................3
Writing Good Test Cases and Finding Bugs effectively.................................................4
Tips and Tricks for doing AdHoc Testing.......................................................................8
Best practices in Software Testing.................................................................................11
Importance of Software Test Automation using tools such as QTP..............................13
Importance of Software Testing
In Internet, We can see lot of articles explaining/listing loss made by poor low-
quality software products.
For example, how will you feel if a bug in a bank software shows your bank
balance as 0 instead of some thousands?
And if you are a student, what will you be your state if your marksheet shows
your score as 0 instead of some good score?
Here, we will be feeling good if we see some notification (e.g Not able to show
your balance due to some unexpected error/Couldn't print your marksheet
because of unexpected issue)
instead of seeing wrong data.
And also,
- Cost of fixing the bug will be more if it is found in later stage than it is found
earlier.
One more important reason for doing testing is user/production environment will
be completely different from development environment.
For example, a webpage developer may be using FireFox as browser for doing
his webpage development. But the user may be using different browser such as
Internet Explorer, Safari, Chrome and Opera.
The web page appearing good in FireFox may not appear good in other browsers
(particularly IE). So ultimately, user will not be happy even if the developer puts
more efforts to develop the webpage. As we know that Users satisfaction is more
important for growth of any business, testing becomes more important.
So we can assume/treat the Testers as the representatives of the Users.
Read Software Testing News and Articles. Follow Software Testing News
But anyway, it is not true that expensive products are high-quality products. Even
inexpensive product can be high-quality product if it meets Customer’s
needs/expectation.
The quality assurance cycle consists of four steps: Plan, Do, Check, and Act.
These steps are commonly abbreviated as PDCA.
The four quality assurance steps within the PDCA model are
To understand very basic things in software testing this knol will be useful.
Read Software Testing News and Articles. Follow Software Testing News
I will consider a Test Case as "Good" only when a Tester feels happy to follow
the steps in the Test Case which is written by another Tester.
Because, Test Cases will be useful only when it is used by the people.
If a test case is poorly written with excessive unwanted steps, then most of the
Testers won't read it fully. Just they will read few lines and will execute it based
on their own understanding which will be mostly wrong.
On the other hand, if it is having less details then it is difficult to execute it.
• Before start writing test cases, become familiar with the (AUT) Application
Under Test. You will become familiar with Application by doing some
adhoc/exploratory testing.
• Very Important thing is, we should use only simple language or style to
write the Test cases so that any one can easily understand without any
ambiguity
1c- for testing negative scenario such as entering valid username and
invalid password.
• And also, if we have any similar module we can give separate sequence
number for specifying the module.
For example, assume that we are having separate login modules for User
and Admin with little changes.
In this case we can give number as below,
1.1-First case in User module.
1.2-Second case in User module.
2.1-First case in Admin module
2.2-Second case in Admin module.
By doing like this, we can avoid redundant details to have clear test case
document.
• In any situation, don't use "if condition" in the Test steps. Always
address only one scenario in one test case. It will be helpful to have
unambiguous Expected Result.
• Give some sample test data that will be useful for executing the test
cases.
• If the Test Case requires any Preconditions/prerequisite don't forget to
mention them.
The best way is, we should arrange/order the Test Cases such that the
need for specifying precondition is minimum.
For example, we need to write test case for testing user creation, user
modification and user deletion.
For doing user modification and user deletion we should have already
created user as precondition.
If we arrange the Test cases in below mentioned order, we can avoid the
need for specifying any preconditions/prerequisites.
1-Test case for creating user.
2-Test case for verifying duplicate/existing user when adding another user
with same username.
3-Test case for modifying user.
4-Test case for deleting user.
• Keep Traceability Matrix to make sure that we have written test cases for
covering all requirements.
• Once after completing all positive scenarios, think about all possibilities of
negative scenarios to have test cases which will effectively find most of
the bugs.
For doing this we can refer alternate flow section of use case document,
and we can think about different data, boundary conditions, different
navigations paths and multi user environment.
• In the test case document, we can give link to screenshots explaining the
steps and/or expected results with pictures. But anyway, it is not good
practice to place the screenshots within the Test Case document itself
unless it is very essential
• Many tools are available to capture the screenshots with user action as
video. We can make use of them to keep video explaining the steps and
expected results clearly in case the test case requires any complex steps.
We can give link to this video from the test case document.
Adhoc testing will help to find the defects earlier. We know that earlier a defect is
found the cheaper it is to fix it.
Go thro' all the pages of the application to find any broken links and also
make sure that each and every page is having proper links to reach other
pages either directly or indirectly.
• Test the tab order and default focus in all the pages
• You can try to enter text with HTML tags such as < and > also in the
textbox
• Try all the possibilities of boundary values such entering lot of data in
textbox and entering negative values in numeric fields.
• If your webpage uses flash files, try to see the behavior of your webpage
when it is loaded in a machine which is not having flash player.
• Instead of testing everything from your local machine, just try to test some
screens by hosting your site in some remote machine. It will help to
identify unexpected issues which may occur due to network latency.
• Try to refresh your confirmation screen many times to verify whether the
multiple refresh saves/inserts the data multiple times.
• Test with different Date and Time format if you webpage/application has
date and time entry fields. And, think about Time zone also.
• Whenever testing Delete feature make sure that all the related data also
getting deleted. For example, when deleting question and answers also
will be deleted.
And, make sure that necessary constraints are enforced correctly. For
example, deletion of questions should not be allowed if the questions are
already used in some other modules.
Here I am writing only the very essential things for medium level projects based
on my experience/view point.
• The test cases should be updated immediately once the client gives new
requirement or changes the requirements.
• The test case document should cover all the requirements even if some
requirements are non-testable. These non-testable items should be
marked as non-testable. Keeping traceability matrix document will
helpful to achieve this.
• Test execution should be done carefully based on the test cases. It is very
important to use appropriate test data. It is better to create different set
of test data during test case creation itself. The test data should cover
valid format,invalid format and boundary values.
Test result(pass/fail) should be clearly updated for each test case. It is
good practice to mention Actual behavior if the test case fails.
• The bug report should be prepared very clearly with all essential details,
especially with the steps/testdata for reproducing the bug. The bug report
should help the developers to reproduce the bug and to fix it.
• It is not good if we do all the testing manually, as manual testing will take
more time/effort and it is difficult to manage, and also it not consistent or
repeatable. So it is better to automate the test cases using test tools such
as QTP(Quick Test professional). Even we can use simple shell scripts
and vbscript to automate some part of the testing.
Read Software Testing News and Articles. Follow Software Testing News
• "To Error is Human" is the fact which drives the need for automation
testing. Because, manual testers may not execute the test cases correctly.
There will be lot of possibilities for making mistakes. They may give
wrong input data due to typo, or they may not notice the actual behavior
of the system correctly, or they may not report the test result correctly, or
they may miss to execute some test cases, or they may forget to run some
preconditions, or they may change the sequence of test case execution in
case sequence is important.
• Another important factor is, Automation test scripts will be used as a way
of storing domain/project/task Knowledge gained by the Test Engineers.
Say for example, if a Tester works in project for one year, he might have
spent more time for learning the domain, purpose of the project, modules
in the project, flow of all functionalities. He will be familiar with known
issues and challenges.
If this Tester leaves from the project, the knowledge gained by him also
will leave.
It is very difficult for the newly joining Tester to understand everything from
the Test Case document.
If automation test scripts are already available then the new Tester can
just start the testing by running the automation scripts, without gaining
much knowledge about the project.
• Automation tool such as QTP (Quick Test Professional) has feature for
storing screenshot of each and every page navigated during the
execution. So it can be used as a proof for completion of testing, and also
we can refer the screenshots of previous executions if there is any need to
refer them.
• The functional test automation scripts will be useful for doing performance
testing also. Because many performance test tools will support
reusing/calling of these test scripts.
• As the automation test tools support Data Driven Testing, Test execution
can be done repeatedly with many different data sets.
There are lot of automation test tools are available for doing Functional,
Regression and Performance Testing. Test complete, SilkTest,SilkPerformer,
QARun, QALoad, TestPartner, WinRunner, LoadRunner, QTP, Rational Robot
and openSTA are some of them. QTP is most widely used now as it supports
vbscript and it can be used for testing many different applications just by adding
required add-ins.