Sie sind auf Seite 1von 28

Software Testing Basics

Naveen Testing Learning

Q) What is software testing?


A- Software testing is a process used to identify the correctness,
completeness, and quality of developed computer software. In other words
software testing is an activity to check whether the actual results match the
expected results and to ensure that the software system is defect free.
Q) What is need software testing?
A- There are many reasons that we need software testingTo
check
the
reliability
of
the
software.
To be ensured that the software does not contain any bug which can become
a
reason
for
failure.
To check the software was made according to its specification.
To
check
that
the
software
meets
its
requirements.
To
check
that
users
are
capable
of
using
the
software.
To check software works with other software and hardware it needs to work
with
Q) What are the types of testing?
A1. Black Box Testing
2. White box Testing
3. Gray Box Testing
Q) What is White box testing?
A- White box testing is a process of testing in which we do code level testing.
White box testing is performed based on the knowledge of how the system is
implemented. White box testing includes analyzing data flow, control flow,
information flow, coding practices, and exception and error handling within
the system. White box testing requires access to the source code. Though
white box testing can be performed any time in the life cycle after the code is
developed, it is a good practice to perform white box testing during the unit
testing phase.
Q) What is Black Box testing?
A- Black-box testing is a method of testing that examines the functionality of
an application (e.g. what the software does) without knowing the internal
structure of the application.
The types of testing under this strategy are totally based/focused on
the testing for requirements and functionality of the work product/software
application.
Q) What is Gray Box testing?
A- Gray Box Testing is a software testing method which is a combination
of Black Box Testing method and White Box Testing method. In Black Box
Testing, the internal structure of the item being tested is unknown to the
tester and in White Box Testing the internal structure in known. In Gray Box
Testing, the internal structure is partially known. This involves having access
to internal data structures and algorithms for purposes of designing the test
cases, but testing at the user, or black-box level.
Gray Box Testing is named so because the software program, in the eyes of
the tester is like a gray/semi-transparent box; inside which one can partially
see.

EXAMPLE
An example of Gray Box Testing would be when the codes for two
units/modules are studied (White Box Testing method) for designing test
cases and actual tests are conducted using the exposed interfaces (Black Box
Testing method).
Q) What is Alpha testing?
A- Alpha testing is executed after completion of the formal test plan, but
before the software is deployed in the market, and this can encompass white
box as well as black box testing. The purpose of alpha testing is to measure
the real users abilities to use and navigate the software application, and this
is typically performed by internal employees and done in a lab environment
so that user actions can be measured and analyzed.
Q) What is Beta testing?
A- Beta testing comes after alpha testing and primarily utilizes black box
tactics. Beta testing is where real users outside the organization are solicited
to play around with the software. This is normally the final check and
balance system before the software is released en masse, although
sometimes the beta version of a software application is released to the
general public during this phase. This process helps identify and mitigate
defects that were missed during the formal test plan, and helps configure the
customer support resources and processes that will be needed post-launch.
Q) Who does white box testing?
A- White box testing is done by both Developer & tester. But tester should
have coding knowledge. White box testing helps testers to find the location of
bugs! When they look inside the code. Testers find the location of bugs,
where the bug is & Developer debugs & fixes the bug .Finds why the bug has
occurred. White box testing helps the tester to write test cases, remove
unnecessary test cases, and add more required test cases which can cause
the software to crash.
Q) What is unit testing?
A- The primary goal of unit testing is to take the smallest piece of testable
software in the application, isolate it from the remainder of the code, and
determine whether it behaves exactly as you expect. Each unit is tested
separately before integrating them into modules to test the interfaces
between modules. Unit testing has proven its value in that a large percentage
of defects are identified during its use.
Unit Testing is a level of the software testing process where individual
units/components of a software/system are tested. The purpose is to validate
that each unit of the software performs as designed.
Q) Who does unit testing?
A- Unit tests should ideally be the Developers responsibility, since the tests
are designed to validate methods/functionality as designed/desired by the
developer. They would be short tests to validate that what he/she meant to
do, is indeed what the code is doing.
In addition, changes to the code will be made by the developer in most cases,
so it would be his /her responsibility to ensure that the unit tests are updated
and reflect accurately the intended changes.
Q) Any unit testing tool?
A- Junit, Nunit, Aunit, TtestNG
Q) What is Agile testing?

A- Agile as the name refers implies something to do very quickly. Hence


Agile Testing refers to validate the client requirements as soon as possible
and make it customer friendly. As soon as the build is out, testing is expected
to get started and report the bugs quickly if any found. As a Tester, you need
to provide your thoughts on the client requirements rather than just being in
the audience at the other end. Emphasis has to be laid down on the quality of
the deliverable in spite of short time frame which will further help in reducing
the cost of development and your feed backs will be implemented in the code
which will avoid the defects coming from the end user.
Know more about Agile Click Here.
Q) What is Sanity testing?
A- When there are some minor issues with software and a new build is
obtained after fixing the issues then instead of doing complete regression
testing a sanity is performed on that build. You can say that sanity testing is a
subset of regression testing.
Sanity testing is done after thorough regression testing is over, it is done to
make sure that any defect fixes or changes after regression testing does not
break the core functionality of the product. It is done towards the end of the
product release phase.
Sanity testing follows a narrow and deep approach with detailed testing of
some limited features.
Sanity testing is like doing some specialized testing which is used to find
problems in particular functionality.
Sanity testing is done with an intent to verify that end user requirements are
met with not.
Sanity tests are mostly non scripted.
Q) What is Smoke testing?
A- In software testing, a smoke test is a collection of written tests that are
performed on a system prior to being accepted for further testing. This is also
known as a build verification test.
Smoke test refers to the first test made after repairs or first assembly to
provide some assurance that the system under test will not catastrophically
fail.
This is a shallow and wide approach to the application. The tester
touches all areas of the application without getting too deep, looking for
answers to basic questions like, Can I launch the test item at all?, Does it
open to a window?, Do the buttons on the window do things?. There is no
need to get down to field validation or business flows. If you get a No
answer to basic questions like these, then the application is so badly broken,
theres effectively nothing there to allow further testing.
Q) What is Integration testing?
A- 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 the interface of the two units. Integration testing is done after unit
testing.
There are mainly three approaches to do integration testing.
Top-down Approach
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.

Bottom-up approach
In the bottom up approach testing takes place from the bottom of the control
flow, the higher level components are substituted with drivers
Big bang approach
With the big bang approach most or all of the developed modules are coupled
together to form a complete system and then used for integration testing.
Q) What is Regression testing?
A- Regression testing is the process of testing changes to computer
programs to make sure that the older programming still works with the new
changes. Regression testing is a normal part of the program development
process and, in larger companies, is done by code testing specialists. Test
department coders develop code test scenarios and exercises that will test
new units of code after they have been written. These test cases form what
becomes the test bucket. Before a new version of a software product is
released, the old test cases are run against the new version to make sure
that all the old capabilities still work. The reason they might not work is
because changing or adding new code to a program can easily introduce
errors into code that is not intended to be changed.
Q) What is the difference between regression and retesting?
ARe-Testing: Testing some functions, Feature or module again and again is
called re-testing. It is usually done using a different set of data each time.
Example: like if you are testing some login form with different combination of
data then it is Re-testing. This term is generally used when we perform the
test (re-test) after some changes (changes can be either in the form of Bug
fixing or enhancement).
Regression testing: It is same as re-testing but it is done to check if any
changes made to code (again it can be bug fixing, enhancement or some
code clean up) doesnt bring some abnormal changes to other un-changed
part.
See Re-testing is regression testing in itself but just differ in the intent it used
to perform.
Lets take an example:
There
is
project
P.
It
has
some
modules
say
M1,
M2,
M3.
And
so
on
Now you found some bug in M2 (or there are some changes in any form)
Now after bug fixing when you test M2 to verify that bug is called Re-testing
but when you test M1 & M3 (or other modules as well) then it is called
Regression testing because here you are testing for some IMPACT that M2 is
making on M1 & M3.
Q) What is a bug?
A- A software bug is an error in the program that prevents it from operating
properly. Some bugs may only affect a program under specific circumstances.
Others may be more serious and cause the program to be unstable or even
unusable. A simple mistake in the software code can cause major problems.
For example, if the programmer accidentally coded a program to multiply two
numbers together when it should only add them, the rest of the program will
give a faulty result.
Q) What is the difference between bug and defect?
A- A bug is getting a problem at the time of testing, whereas a defect is a
problem that got from the customer in production time. A bug is a fault in a
program which causes it to behave abruptly. Bugs are usually found either

during unit testing done by the developer of module testing by testers. A


defect is found when the application does not conform to the requirement
specification. A defect can also be found when the client or user is testing.
What is Defect or Bug Life Cycle:
Defect life cycle or Bug life cycle is the process the report and resolve the
bug and to track the status. The goal of defect life cycle or bug life cycle is to
resolve and test the bug or defect and follow the process till defect or bug
exists. Defect or bug can be raised at any point during testing and could be
reported to the relevant development team to fix it. The defect carries till its
lifetime until status becomes closed.
Steps of defect life cycle:
New
Assigned
Open
Resolved
Retest
Closed
Reopened
Duplicate
Rejected
Deferred

New When any defect or bug is found and validated, the status of but or
defect is logged in as New.
Assigned Once bug or defect is raised and considered as valid, the raised
defect or bug is assigned to the relevant team or developer to resolve and
the status marked as Assigned.
Open Once bug or defect is assigned to developers, they start analyzing
and the status of the bug or defect is marked as Open. Bug fixing gets started
in this phase.
Resolved After fixing the issue by developers, status of the bug or defect is
changed to Resolved and reassigned to testing for retest.

Retest Testing team again retest the fixed issue and status marked as
retest until testing completes.
Closed If testing team assures that reported issue is fixed and working as
expected then status is changed to closed.
Reopened If testing team finds that issue is still existing and the fixed bug
or defect still reproducible, then the task is again assigned to developers to
fix the bug by specifying the scenarios to reproduce the bug, this time status
marked as reopened.
Duplicate If any bug is already reported and again the same bug is
reported to fix it. During analyzing of the bug if found that the bug has
already been reported and in progress state, then status for the reported bug
or defect is marked as Duplicate.
Rejected After analyzing any reported bug or defect by developers, if they
find that bug is invalid, then developers can reject the bug or defect by
providing valid reason and status is marked as Rejected.
Deferred If any bug which is reported and cant be fixed in current release
and moved to the next release, in this case QA team change the status of the
bug or defect as Deferred. To differ a bug could have many reasons like lack
of time, dependencies on other features, low priority.

TEST CASE
Here I am going to explain how to write the effective test cases. But before
writing the test cases we should be able to answer following questionsWhat is the Test Case ?
What is importance of Test Case?
Does it really works in real time testing?
What content should be in Test Cases ?
What is difference in Test Case, Check List and Bug List ?
If you understand all these questions I bet you can write really effective Test Case. Dont
worry if you are new about to write the test case or you are not able to answer the
questions mentioned above I am here to help you and I will explain each question in
detail. So lets start one by oneWhat is the Test Case ?
Test case is the detail of a project or module or functionality of a project which contains
each step that you follow to execute the project. It contains positive scenarios only so
that any one can follow each step written in test case and understand the project or
module of the project.
For example- Suppose there is project assigned to you and the functionality of the
project is taking chat online like gtalk. But you are not aware how the project works. In
this situation you can open the test case written for that functionality and can follow step
by step process to understand the chat functionality. So here is the deal. If after following

the test case if you will be able to understand the functionality of project that mean the
test case is really good.
What is importance of Test Case ?
As I explained Test Case is the documentation of each step of module or functionality or
a project. So the importance is no need to explain again and again about the project
functionality if someone is new to the project or got the project to test. As I follow, if any
fresher joins the company for testing I just ask them to follow the test cases and really it
makes me easy to explain the project or to make them understand thoroughly. As I am
testing 11 projects now so its easy for me also to recall the feature if I switch on any
project to test. I just open Test Case and immediately recall everything that what the
feature of the project is for.
Does it really works in real time testing?
Yes but not always!!! When developers develop any new functionality and gives for
testing it really works. But one thing I would like to point out the test cases are really
important if project is really big or vast. According to my experience where there are less
testers and small projects are given for testing in that case writing the test cases are
really waste of time however in those situation Check Lists are more effective than Test
Cases.
What content should be in Test Cases ?
This is important part to write the test cases. Here are few things that you should keep
in mind during writing the test case Test ID
Date
Module
Test Case ( Step of each
process)
Test Data
Scenario if any
Expected Result
Actual Result
Pass / Fail
Comment If Any.
I will explain each step in later part of this blog.
What is difference in Test Case, Check List and Bug List ?
I have asked this question many of them gave me the same definition for test case and
check list and according to them there is no any difference and both are same. Its funny.
So here you have to understand the main difference in test case and check list.
The test case contains only the positive scenario however check list can have both
positive and negative scenarios. Check List we execute for every regression testing not
the test case. Check list could be updated on every test request not the test case. In
check list we mention all possible scenario which could break the application not in test
case. For example suppose you have to test email validation in email field. So the test
case will contain only enter the valid email address, however the checklist will contain
many scenarios as enter valid and invalid emails. Here are the contents that we should
use during writing the check list-

Test ID
Date
Module
Test Case
Scenario to reproduce the
bug. (If any bug found )
Status of the bug (Blocker /
Critical )
Pass / Fail
Status of the build (Approved
/ Rejected )
Comment if any
I will explain how to write checklist during explaining all abut Check List.
Hope now you understand the basics of Test Case.
Here I am going to write one test case so that you can understand easilyYou can use any documentation tool or its simple to use Google Doc Spread Sheet or
Microsoft Office Excel.

Actu

Tes

Dat

Modul

t ID

Test

Test

Case

Dat

Scenari
os

Expect

al

Pas

ed

Resul

s/

Result

Fail

Test Case to for the validation of email field on Login page-

Commen
t

This is just a model how to write test case for a module. However you can follow and
write according to your requirement.
Q) Any tool to document bug life cycle?
A- Jira, Bugzila, qTest
Q) What is boundary value analysis?
A
In boundary value analysis we check the range of the values. We select the
set of data and check how the application behaves. For each range we set
upper and lower boundaries. If an application gives the expected result after
giving the upper and lower values than we make sure the application will
work for all the values given.
For exA user ID text box has to accept alphabet characters ( a-z ) with a length of 4
to 10 characters.
BVA is done like this, max value:10 pass; max-1: 9 pass;
max+1=11 fail ;min=4 pass;min+1=5 pass;min-1=3 fail;
Like wise we check the corner values and come out with a conclusion
whether the application is accepting correct range of values.
Equivalence testing is normally used to check the type of the object.
Ex. A user ID text box has to accept alphabet characters ( a z ) with length
of 4 to 10 characters.
In +ve condition we have test the object by giving alphabets. i.e a-z char
only, after that we need to check whether the object accepts the value, it will
pass.
In -ve condition we have to test by giving other than alphabets (a-z) i.e A-Z,09,blank etc, it will fail.
Q) What is equivalence partitioning?
A- Dividing the test input data into a range of values and selecting one input
value from each range is called Equivalence Partitioning. This is a black
box test design technique used to calculate the effectiveness of test cases
and which can be applied to all levels of testing from unit, integration, system
testing and so forth.
We cannot test all the possible input domain values, because if we attempted
this, the number of test cases would be too large. In this method, input data
is divided into different classes, each class representing the input criteria
from the equivalence class. We then select one input from each class.
This technique is used to reduce an infinite number of test cases to a finite
number, while ensuring that the selected test cases are still effective test
cases which will cover all possible scenarios.
Lets take a very basic and simple example to understand the Equivalence
partitioning concept:

If one application is accepting input range from 1 to 100, using equivalence


class we can divide inputs into the classes, for example, one for valid input
and another for invalid input and design one test case from each class.
In this example test cases are chosen as below:
One is for valid input class i.e. selects any value from input between ranges 1
to 100. So here we are not writing hundreds of test cases for each value. Any
one value from this equivalence class should give you the same result.
One is for invalid data below lower limit i.e. any one value below 1.
One is for invalid data above upper limit i.e. any value above 100.
Q) What is System testing?
A- System testing is performed after integration testing. Using system testing
we verify the functionality of the whole application. Also by performing
system testing as whole we confirm the system or software is fulfilling all the
functional and non-functional requirements.
Q) What is Performance testing?
A- Using performance testing we check the performance, behavior, stability
and scalability of the application.
Performance testing is very important and assure that the application is
ready to go to market. Without performance testing, software is likely to
suffer from issues such as: running slow while several users use it
simultaneously, inconsistencies across different operating systems and poor
usability. Performance testing will determine whether or not their software
meets speed, scalability and stability requirements under expected
workloads. Applications sent to market with poor performance metrics due to
nonexistent or poor performance testing are likely to gain a bad reputation
and fail to meet expected sales goals. Also, mission critical applications like
space launch programs or lifesaving medical equipment should be
performance tested to ensure that they run for a long period of time without
deviations.
Q) What is Load testing?
A Load testing is nothing but monitoring the behavior of the application by
different increasing or decreasing load on the application. Increasing or
decreasing number of loads mean increasing or decreasing number of users.
So using load test we confirm application is behaving as expected even after
increasing or decreasing loads on the server. Generally load testing is
performed by automation tools such as Jmeter or Neoload etc.
Q) What is Test metrics?
AThe objective of Test Metrics is to capture the planned and actual quantities
the effort, time and resources required to complete all the phases of Testing
of
the
Software
Project,
software Metric is a measure of some property of a piece of software or its
specification.
Metrics generally of 2 types: (1) Process Metric & (2) Product Metric
Process Metric: Measuring the characteristics of the method, tools and
techniques employed in developing, implementing and maintaining the
software system.
Product Metric: A metric used to measure the characteristics of the
documentation & code.
Q) What is Test plan?
A-

Test plan: A document describing the scope, approach, resources and


schedule of intended test activities. It identifies amongst others test items,
the features to be tested, the testing tasks, who will do each task, degree of
tester independence, the test environment, the test design techniques and
entry and exit criteria to be used, and the rationale for their choice, and any
risks requiring contingency planning. It is a record of the test planning
process.
Master test plan: A test plan that typically addresses multiple test levels.
Phase test plan: A test plan that typically addresses one test phase.
Click Here To Know More
Q) What is release detail?
A- Whenever we do some changes in the application or software we send the
release details to the user of to our team members that describe what
additional feature are added or if any bug has been fixed. Also sometimes we
keep tracking information in release details so that if any changes have to be
done next time we can track a review that what changes were done on last
release.
Q) What is negative testing?
A- Ensures that your application can gracefully handle invalid input or
unexpected user behavior. For example, if a user tries to type a letter in a
numeric field, the correct behavior in this case would be to display the
Incorrect data type, please enter a number message. The purpose of
negative testing is to detect such situations and prevent applications from
crashing. Also, negative testing helps you improve the quality of your
application and find its weak points.
Q) What is usability testing?
A- Usability testing is a technique used in user-cantered interaction design to
evaluate a product by testing it on users. This can be seen as an
irreplaceable usability practice, since it gives direct input on how real users
use the system. This is in contrast with usability inspection methods where
experts use different methods to evaluate a user interface without involving
users.
Usability testing focuses on measuring a human-made products capacity to
meet its intended purpose. Examples of products that commonly benefit from
usability testing are foods, consumer products, web sites or web applications,
computer interfaces, documents, and devices. Usability testing measures the
usability, or ease of use, of a specific object or set of objects, whereas
general human-computer interaction studies attempt to formulate universal
principles.
Q) What is difference between bug defect and error?
A
Bug: Assume that the programmer has actually understood the intended
requirement correctly but has declared/stored the result as an integer to
show a result of 5 instead of 5.75 this is called a Bug. Here the programmer
has to declare the variable as double or float and not int.
Defect: A defect is any of the above but found/un-covered in the releasedapplication running in the Production Servers [gone Live] or may be in
Beta-Release.
Defect Trackers have been christened as such, because they are used to
report Defects in the software post-release; whereas the issues reported by
the Testing Team are predominantly called Incident Reports and not Defect
Reports!

However each organization follows its own terminologies for different


contexts and processes; many individuals, may want to contradict and
confront me with his/her opinion, on this. But that is a fact-of-life in Software
Industry and an Occupational Hazard at that!!!
Error: When the application runs without any issues in the intended
Production Environment under normal circumstances, but misbehaves after
continuously running for about a month or after performing about a million
transactions, then we call this condition as Error.
Let me explain this with an example Lets say an Order Entry cum
Processing application has been deployed in a server accessed by public to
place orders for movie tickets. Initially when the application starts running
that is when the Application Server is re-started with old log files
trashed/removed the application runs with a throughput of 100 transactions
per minute. But after about one million transactions, if the applications
throughput reduces to about 50 transactions per minute, then, we call this
condition as an Error.
Q) What is testing tool?
A- We use testing tool to automate software testing. It makes easy testing
and report could be generated automatically. There are several tools that
could be used to test unit testing, functional testing, load testing etc.
Q) What is End to End testing?
A- End-to-End Testing is when you take a process from the very beginning
all the way to the end like accepting an order from a customer and then
processing that order all the way through fulfilment, accounting and
shipping. This is basically exercising an entire workflow. Although System
Testing is similar, in System Testing you do not have to complete the entire
workflow but may exercise individual interfaces one at a time. However by
the end of System Testing most test environments will exercise (or should
exercise) an entire end-to-end test.
Q) What is V model?
A Click Here
Q) What is Spiral model?
A Click Here
Q) What is validation?
A In validation we confirm we are doing the right thing. In simple word we
can say Validation ensures that functionality, as defined in requirements, is
the intended behavior of the product; validation typically involves actual
testing and takes place after verifications are completed.
Q) What is verification?
A- In verification we confirm we are doing the thing right. In simple word we
can say Verification makes sure that the product is designed to deliver all
functionality to the customer; it includes reviews and meetings to evaluate
documents, plans, code, requirements and specifications; this can be done
with checklists, walkthroughs, inspection meetings, etc.
Q) Give the example of Verification and Validation?
A- Example: Lets say we are writing a program for addition. a+b = c
Verification: Are we getting some output for a+b?
1+1 = 6
Validation: Are we getting correct output for a+b? 1+1=2?
Verification basically asks if the program is correct. To use your simple
example, a=x + Y is correct if x=1 and y=2 yields a = 3.
Validation asks if the correct program was produced. For example, calculate
the area of a rectangle with length x and width y. If x=1 and y =2, the result

should be 2. The first program is correct but not valid given the
requirement. It is not the right program.
Q) What is Ad-Hoc testing?
A- Ad-Hoc testing is the process of testing in which testing is performed
without any plan or test cases. In this testing process we dont follow any
rules. So this testing is generally followed by the tester who has good
knowledge about the product which tester is going to test.
Q) What is compatibility testing?
A
Using the compatibility test we test and confirm whether software is
compatible with other elements of a system with which it should operate, e.g.
browsers, Operating Systems, or hardware
Compatibility testing means the application is test with software and
hardware site. Software site than How can working for different browsers
and operating systems and Hardware based testing into Changed for
configuration for resource.
Test the application is worked in different environmental is called
compatibility. Ex: test app will work in diff browsers and different OS.
Q) Can you list few open source software testing tools?
A- Jmeter, Selenium, Autoit, Junit, Xenu.
Q) Any open source load testing tool?
A- Jmeter
Q) What is security testing?
A- Security testing is the testing the application for unauthorized access.
Means application should not be accessible without proper authentication and
authorization. And Smoke Testing is the testing an application for testability.
In Smoke testing we check whether the application is capable enough to test
further or not.
Security testing is perhaps the most conclusive determinant of whether a
system is configured and continues to be configured to the correct security
controls and policy. If the following testing activities are followed they can be
highly cost-effective in preventing incidents and uncovering unknown
vulnerabilities.
Q) What is top down approach?
A- Top down Testing is an approach to integrated testing where the top
integrated modules are tested and the branch of the module is tested step by
step until the end of the related module. This allows high-level logic and data
flow to be tested early in the process and it tends to minimize the need for
drivers. However, the need for stubs complicates test management and lowlevel utilities are tested relatively late in the development cycle.
Advantages
The advantages of top down testing can be
Does not require drivers to be written
Provides early working module of the program and so
design defects can be found and corrected early
Disadvantages
The disadvantages can be summarized as
It enables testing only for the limited functionality
Stubs are required in a way that it takes care of the
integrated functionality
Performed by Developers, which wastes time.

Q) What is bottom up approach?


A- Bottom Up testing is an approach to integrated testing where the lowest
level components are tested first, then used to facilitate the testing of higher
level components. The process is repeated until the component at the top of
the hierarchy is tested.
Advantages
The advantages of the Bottom-Up Testing are:
The objects to be tested are known to the developer. So, it
is easy to understand the scope of the test case creation
and test data.
Psychologically more satisfying because the tester can be
certain that the foundations for the test objects have been
tested in full detail.
Does not require stubs to be created
Disadvantages
The disadvantages are summarized below:
The quality of the software can be guaranteed only when
the testing is fully completed. Issue is, defects in the upper
levels are detected very late.
Drivers creates complication in the test management.
Testing individual levels also inflicts high costs for providing
a suitable test environment.
Q) What is acceptance testing?
A- Acceptance testing is a final stage of testing that is performed on a
system prior to the system being delivered to a live environment. Systems
subjected to acceptance testing might include such deliverables as a
software system or a mechanical hardware system. Acceptance tests are
generally performed as black box tests. Black box testing means that the
tester uses specified inputs into the system and verifies that the resulting
outputs are correct, without knowledge of the systems internal workings.
User acceptance testing (UAT), is the term used when the acceptance tests
are performed by the person or persons who will be using the live system
once it is delivered. If the system is being built or developed by an external
supplier, this is sometimes called customer acceptance testing (CAT). The
UAT or CAT acts as a final confirmation that the system is ready for go-live. A
successful acceptance test at this stage may be a contractual requirement
prior to the system being signed off by the client.
In some industries, such as manufacturing, factory acceptance testing (FAT),
is the term usually used for the formal acceptance test stage. A factory
acceptance test may be performed by the vendor or supplier of the system
and observed by the client. This is often done in a very formal manner, with
each factory or site acceptance test being documented in detail, and each
portion of the test signed off.
Q) What is test scenario?
A- Test scenario is the approach to created step by step process to reproduce
the issues so that anyone could easily understand and could reproduce the
bugs by following the steps.
Q) What is walkthrough?
A- Walkthrough is overall idea of an application. Before development or
testing we just walk through or discuss about possible errors, violation of
development standards, and other problems present the documents both

within and outside the software discipline in order to gather the information
regarding the topic under documentation. The goal of walk through is to
explain or do the knowledge transfer and evaluate the contents of the
document .To achieve a common understanding and to gather feedback. To
examine and discuss the validity of the proposed solutions.
Q) What is the purpose of the testing?
A- Software testing provide and assure the quality of the product whether it
is usable or not. Also it assures the software meets the requirements or not.
Analyzing and finding the bugs and reporting to the development can make
the software more usable, reliable and compatible.
Q) How do you scope, organize, and execute a test project?
ATo SCOPE the project1) Learn as much about the application as possible by studding the Business
Requirements Document (BRD), Technical Specifications, Work-Flow
Diagrams, Wireframes, System Architectural Diagrams, Marketing and Legal
documents, and any other relevant information that is available.
2) Request additional information from expert stakeholders internal and
external
to
the
company
if
necessary.
3) Estimate the amount of time it will take to create test cases and to execute
them.
4) Determine how the test environment should be configured.
5)
Determine
whether
any
test
tools
are
needed.
6) Create a Test Plan that covers test strategies, test scope, etc.
7) Request that expert stakeholders review my Test Plan and provide
feedback
to
improve
it.
8) Revise the Test Plan.
To ORGANIZE the project1)
Break
the
application
down
into
functional
areas.
2) Create a test suite that includes folders for each functional area to be
tested.
3) Create test cases corresponding to each functional area and place them
under
their
proper
folders.
4)
Map
the
requirements
to
test
cases.
5) Prioritize the test cases.
To EXECUTE the project
1)
Ensure
the
test
environment
is
ready
for
test.
2)
Ensure
the
test
tools
are
ready
for
test.
3) Ensure I have all supporting documentation required for testing.
4) Access my test suite and begin testing!
Q) How do you determine what to test?
A- It depends on the specification given for the application. Before
determining what to test we need to understand the project or module
thoroughly so that we could understand the dependencies of the module on
other modules or project. Also first we should try to determine the production
level impact of the module and then we could decide which part of the
module should be tested first.
Q) Describe the basic elements you put in defect report?
AGeneral defect report elements:
1.
Defect
ID
2.
Defect
title

3.
Defect
Description
4.
Build
Version
ID
5.
Reproducible
6.
Status
7.
Severity
8.
Priority
9.
Reported
by
10. Assigned to
Q) When should testing start in a project?
A- QA is involved in the project from the beginning. This helps the teams
communicate and understand the problems and concerns, also gives time to
set up the testing environment and configuration. On the other hand, actual
testing starts after the test plans are written, reviewed and approved based
on the design documentation.
Q) What is the difference between a test strategy and test planning?
AA Test Strategy is a higher-level document, it defines the overall scope of a
test project, the overall approach, the levels of testing to be performed, the
procedures to be followed, the tools to be used, the reporting structure, and
the key stakeholders. It sets the scene and defines all the material that
would otherwise need to be repeated across each individual Test Plan. The
real aim of the Test Strategy though is to get buy-in from all the
stakeholders. You can have a test strategy across the whole project that
defines the levels of testing, e.g., unit, integration, systems defining what is
to occur at each level. This is often an enterprise wide standard in large
organizations. You can also have a level specific test strategy, e.g., a test
strategy just for systems testing, this would happen when you have a large
project and the particular testing level may require multiple test plans.
A Test Plan provides more detail about the particular items and their
features to be tested. It describes the approach to be taken to testing those
features, the schedule, the resources, the pass/fail criteria for those features.
In cases where you do not need to prepare a separate Test Strategy
document the information is instead incorporated into the Test Plan. Every
project must have a strategy.
Q) How do you decide when you have tested enough?
A- Testing is a never ending process. Testing can be stopped when maximum
number of test cases are executed and have been passed, when deadlines
are reached, when testing budget depletes, when basic functionalities are
working.
This is usually not a difficult decision. When all critical, serious and blocking
issues have been fixed we have to test until the product is shipped and even
after. The testing cycle is an endless process. Only the type of testing might
vary from one stage to another in the development cycle of the product.
Q) What is test log?
A- A test log is nothing but, what are the test cases we have been executed,
in what order we executed, who executed that test cases and what is the
status of the test case(pass/fail).
Q) What are the types of Black box testing?
A Equivalence portioning
Boundary Value Analysis

Error Guessing
Q) What is boundary Value Analysis?
A- Boundary Value Analysis (BVA) is a test Functional Testing technique where
the extreme boundary values are chosen. Boundary values include
maximum, minimum, just inside/outside boundaries, typical values, and error
values.
Test both sides of each boundary
Look at output boundaries for test cases too.
Test min, min-1, max, max+1, typical values.
Q) What does URL stand for?
A- URL stands for Uniform Resource Locator or Universal Resource Locator is
a specific character string that constitutes a reference to an Internet
resource.
Q) What is SDLC?
A Click Here
Q) What is Stress Testing?
A- Stress testing is a form of testing that is used to determine the stability of
a given system or entity. It involves testing beyond normal operational
capacity, often to a breaking point, in order to observe the results.
Q) What is a Software bug?
AA software bug is the common term used to describe an error, flaw, mistake,
failure, or fault in a computer program or system that produces an incorrect
or unexpected result, or causes it to behave in unintended ways.
Q) What is unit testing?
AUnit testing is a method by which individual units of source code are tested to
determine if they are fit for use. A unit is the smallest testable part of an
application.
Q) What are the Unit Testing Techniques?
A Loop Coverage
Path Coverage
Conditional Coverage
Function Coverage
Top 5 Software Testing Differences Asked in Software Testing Interview
Naveen Testing Learning, Testing Tricks

While attending many Software Testing Interview I collected some important


differences which asked by interviewer to explain the differences between
many testing terminologies. No matters you are experienced or fresher, these
differences could be asked from anyone as these are common questions. So if
you are planning for any software testing interview, please at least once go
through the following differences specified below for software testing
terminologies.
Differences between:

Verification and Validation


Verification checks for are we building the product right where Validation
checks for are we building the right product. Verification is the static method
where validation is dynamic method. Verification ensure that your
requirement meets completely as expected from the product or software
build, however validation ensure that product or software meets the end
users criteria and expectation. Verification is performed by Quality Assurance
team and team assures that software is built as per specified in the
specification documents where verification is performed by testing team by
providing the multiple inputs or test data. In verification phase we perform
walk -through, inspection and review where in validation we perform testing
activities.

Priority and Severity


We define severity based on the operation performed by the user. If a user
not able to perform any activity due to some reason or bug, then severity is
high. Priority depends on features added in the product or software. For
example, consider Google page. If you enter any word to search and Google
landing to the error page then severity is very high as well as priority is also
very high. But if Google is providing the correct result but design is not very
user friendly, then priority is low as well as severity is also low. Severity could
be critical, major or minor. Priority could be low, medium or high.
Based on priority and severity there could be 4 scenarios:

High Priority and High Severity


High Priority and Low Severity
Low Priority and High Severity
Low Priority and Low Severity

Example:
Suppose a product is launched with brand name TESTING which perform
the operation to login on home page.
If brand name TESTING is correct but product does not allows to login, then
priority is high as well as severity is also high. As brand name is TESTING and
it is misspelt from TESTING to TESING then it has high priority but low
severity. If you forgot your password and click on the link forgot password
to recover your password, but clicking on the link does not response then
severity is high but priority is low. Priority is low because user not going to
reset password always. If any design issue is there but user is able to perform

all the operations without any error, then priority is low as well as severity is
also low.
Severity always related to the functionality where priority is based on the
seriousness of the bug.

Re-Testing and Regression Testing


Retesting is performed to ensure that the reported bug or defect is fixed and
the same bug or defect is not occurring again. So retesting is only for testing
the fixed bugs or defects. In Regression testing we test the application as
whole to confirm that bug fix or defect fix should not have effect on existing
functionality or features. Regression testing ensure that the existing feature is
working as it was working before and there is no bad impact on existing
feature after bug or defect fix.
Retesting is performed only for the reported bug fix and not for all the
existing test cases. Regression testing is performed for all the existing test
cases.
Example:
Suppose there is an application that allows user to sign up with name, email
and phone number. There is one issue reported as phone number field should
not accept alphabet characters. The fix was given by developers after bug
reported. Now as a retesting we confirm that issue is fixed (Phone number
field is now not accepting alphabet) and as regression testing we confirm that
name and email fields are working as it was working before and signup is
happening successfully.

Bug and Defect


Sometimes its really confusing and difficult to differentiate between bug and
defect as both the terminologies are alike. But still there are some slight
difference in bug and defect. Defect is deviation between the expected result
and actual result where bug arises due to error in the code or logic. There is
not necessary that a defect in the software is a bug. Defect could be
functionality level or logical level that did not meet the expected result. Bug
generally found before the product deployed to production where defect
could be found after the deployment of the product in production. Any
mistake done in the code we can say as bug however any defect in the
functionality we can say as defect. Defect could be happen because of
misunderstanding of requirement.
Example:

Suppose there is one online application which allows to sign up. There are
three fields Name, Email and Phone number and Submit button. But client
wanted to have only Name and Email field and submit button. Client did not
want to have Phone number field. So there is defect in the application that
developer did not completely understood the requirement and added phone
number field. Suppose phone number field was removed and defect is fixed
but Submit button is not working then there is a bug in the software.

Stress Testing and Load Testing


Load testing is performed to test the server behavior when more than one
users or some specified number of users uses the server at a time, however
stress testing is performed by giving maximum load to the server till server
stops performing and we check the maximum stress or break point that
server can exists. In another way we can say performing test with more than
one users is defined as load testing where performing test beyond the limit of
the server capacity is defined as stress testing. In load testing we check the
server behavior where in stress testing we check the breakpoint of the server.
During load test we can define total number or users, time duration for load,
ramp up period etc. During stress testing we can define the maximum
number of users, continuous load time etc.
Example:
Suppose there is one server which capacity is to handle maximum 100 users
at a time. While performing load test we give load for 100 users and check
the server performance where performing stress test we give load for more
than 100 users and we keep on increasing load until server starts
misbehaving or breaks or go down.

What is Waterfall Model in software testing


and what are advantages and disadvantages of
Waterfall Model
Naveen Testing Learning, Testing Tricks

What is Waterfall Model?


Waterfall Model is also known as Liner Sequential Life Cycle Model. Waterfall
Model followed in the sequential order and so we move to next step of
development or testing if the previous step completed successfully. Waterfall
Model is very successful approach for the small projects and if the
requirements are very clear. In Waterfall Model, testing starts at the end
when development work is completed. The name Waterfall describes that
testing or development is carried out in downward mechanism like water falls
towards down. Waterfall Model is very popular strategy for SDLC. Once
Waterfall Model is followed and if any step completed and next step has been

started in development process, we cant revert back to the previous step to


redevelop or perform any change. Waterfall Model concept first introduced in
1970 by Winston W. Royce.
Phases in Waterfall Model Requirements
Analysis
Design
Implementation
Testing
Deployment
Maintenance

Requirements: This is the first phase of development where all the


requirements gathered and documented.
Analysis: In this phase we analyze all the gathered requirements whether
the requirements are valid or invalid.
Design: In this phase all the system design is analyzed and specified like
hardware, system configuration and architecture or the system.
Implementation: In this phase all the development works are performed
and development components or units handed over to testing team.
Testing: Once the development completed, testing phase starts and in this
phase we test the each unit or component and make sure the developed
components are working as expected. All the testing activities are performed
in this phase.
Deployment: Once testing is completed and make sure there is no bug or
defect or any kind of issue, then project is deployed to production. Once
product is deployed to production the end users start using the product.

Maintenance: We always keep eye on the product and provide all the
necessary bug or issue fixes if occurs in production or reported by end users.
Also time to time we keep updated the product with new updates or patches
if developed or available.
Advantages of Waterfall Model:
Very good approach for small projects.
Easy to use and follow.
Cost effective.
Each phase completely developed.
Development processed in sequential manner so very less chance to
rework.
Easy to manage the project.
Easy documentation.
Disadvantages of Waterfall Model:
Not very useful for the large project.
Less effective if requirements are not very clear at the beginning.
Very difficult to move back to change on the previous phase.
Testing starts once development completes, so more and more
chances of bugs to be found.
High risk.
Less flexible.
When Waterfall Model should be followed:
If project is small and requirements are very clear.
For low budget projects.
When changes in the project are stable.
What is SDLC?
SDLC stands for Software Development Life Cycle or System Development
Life Cycle. SDLC helps to develop the application in a planned and systematic
fashion. There are many models available like Waterfall Model, V
Model, Spiral Model etc. are used to develop the application. SDLC is also
similar kind of technique to develop the application in systematic way by
following few steps. In SDLC, software development followed by completing
each phase and move to the next phase. There are two types of SDLC
approach One is Waterfall and another is Agile. Agile SDLC is quite new and
more popular now a days, however Waterfall SDLC is traditional method of
software development strategy.
Phases in SDLC model:
Requirements
Analysis
Design
Implementation
Testing
Deployment
Maintenance

Requirements: This is the first phase of development where all the


requirements gathered and documented.
Analysis: In this phase we analyze all the gathered requirements whether
the requirements are valid or invalid.
Design: In this phase all the system design is analyzed and specified like
hardware, system configuration and architecture or the system.
Implementation: In this phase all the development works are performed
and development components or units handed over to testing team.
Testing: Once the development completed, testing phase starts and in this
phase we test the each unit or component and make sure the developed
components are working as expected. All the testing activities are performed
in this phase.
Deployment: Once testing is completed and make sure there is no bug or
defect or any kind of issue, then project is deployed to production. Once
product is deployed to production the end users start using the product.
Maintenance: We always keep eye on the product and provide all the
necessary bug or issue fixes if occurs in production or reported by end users.
Also time to time we keep updated the product with new updates or patches
if developed or available.
Why to use SDLC methodology?
Cost effective.
Better management of the project.
Delivery of high quality product.
Time and resource management.
What is Incremental Model?
Incremental Model is combination of one or more Waterfall Models. In
Incremental Model, Project requirements are divided into multiple

modules and each module is developed separately. Finally developed


modules are integrated with other modules. During development of
each module, waterfall model is followed for each module development
separately. Each developed module in Incremental Model is standalone
feature and could be delivered to the end users to use it. On
incremental basis other modules are integrated as additional features
one after another and finally delivered to the client. In Incremental
Model no need to wait for all the modules to be developed and
integrated. As each module is standalone application and there is no
dependencies on other modules so we can deliver the project with
initial developed feature and other features could be added on
incremental basis with new releases. Incremental process goes until all
the requirements fulfilled and whole system gets developed.
Example-1:

Consider in the above picture, there is one square that has to develop
with features F1, F2, F3 and F4. In the Incremental Model all the four
features will be divided into four different small squares called modules
(M1, M2, M3 and M4).Once the first module (M1) is developed, it gets
delivered to the client and later on after development of second
module M2 integrated with module M1. Gradually we develop other
modules M3 and M4 and keep on integrating until complete square
gets ready or developed.

Incremental Model helps to deliver the sequence of releases in


incremental basis which speeds up the progress of development of
each functionality. Each developed functionality gets delivered to the
end users one after another. First increment is always a base feature
and other features added in next increments with new releases in case
client requests to add the any new feature after review of first release.
This process is carried out till the complete product developed.
What is RAD Model?
RAD Model or Rapid Application Development Model is similar to incremental
model andwaterfall model. In RAD Model, development should be done in
specified time frame. RAD Model is suitable for the small project where all the
requirements are gathered before starting development of the project and no
any concrete plan required Development starts as soon as requirement
gathered and delivered initial working prototype to the client to get the
feedback. Once client gives the feedback, based on the clients feedback
other changes are done. This process goes parallel with co-operation with
client and developers. Each prototype is delivered to the client with working
functionality and changes made based on the clients feedback. Development
moves faster in RAD Model with minimum errors. RAD Model follows the
incremental delivery of the modules. The main goal or RAD Model is to make
the reusability of the developed components.
Phases in RAD Model:
Business Modeling
Data Modeling

Process Modeling
Application Modeling
Testing and Turnover

Business Modeling: In this phase of development business model should be


designed based on the information available from different business
activities. Before start the development there should be a complete picture of
business process functionality.
Data Modeling: Once the business modeling phase over and all the
business analysis completed, all the required and necessary data based on
business analysis are identified in data modeling phase.
Process Modeling: All the data identified in data modeling phase are
planned to process or implement the identified data to achieve the business
functionality flow. In this phase all the data modification process is defined.
Application Modeling: In this phase application id developed and coding
completed. With help of automation tools all data implemented and
processed to work as real time.
Testing and turnover: All the testing activates are performed to test the
developed application.
Advantages of RAD Model:
Fast application development and delivery.
Lest testing activity required.
Visualization of progress.
Less resources required.
Review by the client from the very beginning of development so very
less chance to miss the requirements.
Very flexible if any changes required.
Cost effective.
Good for small projects.
Disadvantages of RAD Model:

High skilled resources required.


On each development phase clients feedback required.
Automated code generation is very costly.
Difficult to manage.
Not a good process for long term and big projects.
Proper modularization of project required.
When RAD Model should be followed:
For low budges projects for which automated code generation cost is
low.
When high skilled resources are available.
When its easy to modularize the project.
If technical risks are low.
If development needed to complete in specified time.
RAD Model is suitable if the functionality have less dependencies on
other functionality.
Top 5 Free Open Source Performance and Load Testing Tools
Naveen Testing Learning, Testing Tools, Testing Tricks

Jmeter
Apache Jmeter is open source performance and functionality testing tool
designed to test Java applications. Best testing tool to test performance and
functionality of web applications with complete detailed report
generating. Jmeter provides
feature
to
perform
distributed
load
test,parameterization of application for multiple users, continuous load etc.
With help of Jmeter you can record and run script using browser by changing
the proxy settings. No coding required at all. Best tool ever I have used for
load test.
OpenWebLoad
OpenWebLoad allows you to perform load test for web application.
OpenWebLoad is Easy to use and provides real time performance result for
the application. This is particularly useful when you are doing optimization as
you can see the impact of your changes almost immediately. Test can be
configured and executed by command line.
LoadUI
LoadUI allows you to perform load testing for web application.
Comprehensive reporting feature lets you to focus on the most problematic
areas in real-time. There is no coding required and you can drag and drop the
visual elements as per your requirement to make the test and scripting
simple and easy. LoadUI provides the additional feature like Distributed API
Load Testing, Comprehensive Load Test Reports, SoapUI NG Pro Integration

etc. With Distributed load feature you can perform distributed load across
different systems, both locally and remotely. LoadUI generates
comprehensive report automatically with real time data.
JCrawler
JCrawler is platform independent free open source load and stress testing tool
for web applications which have crawling or exploratory feature. To generate
the load you need to just provide the set or URLs that you want to test.
JCrawler works on hits/sec mechanism. There are some additional feature
that might not available in other load testing tools. For example- Http
Redirects and Cookies. JCrawler has ability to fix, customize, or enhance unit
test. Console mode in JCrawler allows to run test remotely and monitor, using
little bandwidth. Configuration in JCrawler is very easy that you can do
configuration in a central XML file which helps you to stop jumping from one
tab to another of an overloaded GUI configuration.
Grinder
Grinder lets you to perform load testing, capacity testing, functional testing,
stress testing and reliability testing. Grinder is open source free testing tool
with many features. Grinder supports Jython, HTTPClient, JEdit Syntax,
Apache XMLBeans, PicoContainer, Clojure, Standards etc. Grinder is based on
100% pure java which can work on any platform and in any operating system.
Web application can be testing with help of browser by recording the script
using proxy. Grinder is Multi-threaded, multi-process each test context runs in
its own thread. You can view current work processes dynamically. Easy to
manage and edit test scripts. You can import test data in spreadsheet or any
other analysis tool. Grinder also allows to handle cookie and connection
management for test contexts.

Das könnte Ihnen auch gefallen