Beruflich Dokumente
Kultur Dokumente
A test case is a set of conditions or variables and inputs that are developed for a particular
goal or objective to be achieved on a certain application to judge its capabilities or
features.
It might take more than one test case to determine the true functionality of the application
being tested. Every requirement or objective to be achieved needs at least one test case.
Some software development methodologies like Rational Unified Process (RUP)
recommend creating at least two test cases for each requirement or objective; one for
performing testing through positive perspective and the other through negative
perspective.
1. Information
Information consists of general information about the test case. Information
incorporates Identifier, test case creator, test case version, name of the test case,
purpose or brief description and test case dependencies.
2. Activity
Activity consists of the actual test case activities. Activity contains information
about the test case environment, activities to be done at test case initialization,
activities to be done after test case is performed, step by step actions to be done
while testing and the input data that is to be supplied for testing.
3. Results
Results are outcomes of a performed test case. Results data consist of information
about expected results and the actual results.
Test cases should be designed and written by someone who understands the function or
technology being tested. A test case should include the following information -
Designing test cases can be time consuming in a testing schedule, but they are worth
giving time because they can really avoid unnecessary retesting or debugging or at least
lower it. Organizations can take the test cases approach in their own context and
according to their own perspectives. Some follow a general step way approach while
others may opt for a more detailed and complex approach. It is very important for you to
decide between the two extremes and judge on what would work the best for you.
Designing proper test cases is very vital for your software testing plans as a lot of bugs,
ambiguities, inconsistencies and slip ups can be recovered in time as also it helps in
saving your time on continuous debugging and re-testing test cases.
Given below are the stages of a bug life span. Test reports describe in detail the behavior
of bug at each stage.
New
This is the first stage of bug life cycle in which the tester reports a bug. The presence of
the bug becomes evident when the tester tries to run the newly developed application and
it does not respond in an expected manner. This bug is then send to the testing lead for
approval.
Open
When the bug is reported to the testing lead, he examines the bug by retesting the
product. If he finds that the bug is genuine, he approves it and changes its status to 'open'.
Assign
Once the bug has been approved and found genuine by the testing lead, it is then send to
the concerned software development team for its resolution. It can be assigned to the
team who created the software or it may be assigned to some specialized team. After
assigning the bug to the software team, the status of the bug is changed to 'assign'.
Test
The team to which the bug has been assigned works on the removal of bug. Once, they
are finished with fixing the bug, it is sent back to the testing team for a retest. However,
before sending the bug back to the testing team, its status is changed to 'test' in the report.
Deferred
If the development team changes the status of the bug to 'deferred', it means that the bug
will be fixed in the next releases of the software. There can be myriad reason why the
software team may not consider fixing the bug urgently. This includes lack of time, low
impact of the bug or negligible potential of the bug to induce major changes in the normal
functioning of the software.
Rejected
Although, the testing lead might have approved the bug stating it as a genuine one, the
software development team may not always agree. Ultimately, it is the prerogative of the
development team to decide if the bug is really genuine or not. If they doubt the presence
or impact of the bug, then they may change its status to 'rejected'.
Duplicate
If the development team finds that the same bug has been repeated twice or there are two
bugs which point to the same concept, then the status of one bug is changed to 'duplicate'.
In this case, fixing one bug automatically takes care of the other bug.
Verified
If the software development team sends the fixed bug back for retesting, then the bug
undergoes rigorous testing procedure again. If at the end of the test, it is not found then
its status is changed to 'verified.'
Reopened
If the bug still exists, then its status is changed to 'reopened'. The bug then traverses the
entire of its life cycle once again.
Closed
If no occurrence of bug is reported and if the software functions normally, then the bug is
'closed.' This is the final stage in which the bug has been fixed, tested and approved.
Software testing life cycle consists of the various stages of testing through which a
software product goes and describes the various activities pertaining to testing that are
carried out on the product. Here's an explanation of the STLC along with a software
testing life cycle flow chart. It won't be wrong to call this article, a software testing life
cycle tutorial.
Every organization has to undertakes testing of each of its products. However, the way it
is conducted differs from one organization to another. This refers to the life cycle of the
testing process. It is advisable to carry out the testing process from the initial phases, with
regard to the Software Development Life Cycle or SDLC to avoid any complications.
Software testing has its own life cycle that meets every stage of the SDLC. The software
testing life cycle diagram can help one visualize the various software testing life cycle
phases. They are
1. Requirement Stage
2. Test Planning
3. Test Analysis
4. Test Design
5. Test Verification and Construction
6. Test Execution
7. Result Analysis
8. Bug Tracking
9. Reporting and Rework
10. Final Testing and Implementation
11. Post Implementation
Requirement Stage
This is the initial stage of the life cycle process in which the developers take part in
analyzing the requirements for designing a product. Testers can also involve themselves
as they can think from the users' point of view which the developers may not. Thus a
panel of developers, testers and users can be formed. Formal meetings of the panel can be
held in order to document the requirements discussed which can be further used as
software requirements specifications or SRS.
Test Planning
Test planning is predetermining a plan well in advance to reduce further risks. Without a
good plan, no work can lead to success be it software-related or routine work. A test plan
document plays an important role in achieving a process-oriented approach. Once the
requirements of the project are confirmed, a test plan is documented. The test plan
structure is as follows:
Test Analysis
Once the test plan documentation is done, the next stage is to analyze what types of
software testing should be carried out at the various stages of SDLC.
Test Design
Test design is done based on the requirements of the project documented in the SRS. This
phase decides whether manual or automated testing is to be done. In automation testing,
different paths for testing are to be identified first and writing of scripts has to be done if
required. There originates a need for an end to end checklist that covers all the features of
the project.
Test Execution
Planning and execution of various test cases is done in this phase. Once the unit testing is
completed, the functionality of the tests is done in this phase. At first, top level testing is
done to find out top level failures and bugs are reported immediately to the development
team to get the required workaround. Test reports have to be documented properly and
the bugs have to be reported to the development team.
Result Analysis
Once the bug is fixed by the development team, i.e after the successful execution of the
test case, the testing team has to retest it to compare the expected values with the actual
values, and declare the result as pass/fail.
Bug Tracking
This is one of the important stages as the Defect Profile Document (DPD) has to be
updated for letting the developers know about the defect. Defect Profile Document
contains the following
Post Implementation
Once the tests are evaluated, the recording of errors that occurred during various levels of
the software testing life cycle, is done. Creating plans for improvement and enhancement
is an ongoing process. This helps to prevent similar problems from occuring in the future
projects. In short, planning for improvement of the testing process for future applications
is done in this phase.
• What is a Review?
A review is an evaluation of a said product or project status to ascertain any discrepancies
from the actual planned results and to recommend improvements to the said product. The
common examples of reviews are informal review or peer review, technical review,
inspection, walkthrough, management review.
Manual testing is one of the oldest and most effective ways in which one can carry out
software testing. Whenever a new software is invented, software testing needs to be done
to test for its effectiveness and it is for this purpose that manual testing is required.
Manual testing is one of the types of software testing which is an important component of
the IT job sector and does not use any automation methods and is therefore tedious and
laborious.
Manual testing requires a tester who needs to have certain qualities because the job
demands it - he needs to be observant, creative, innovative, speculative, open-minded,
resourceful, patient, skillful and possess certain other qualities that will help him with his
job. In the following article we shall not be concentrating on what a tester is like, but
what some of the manual testing interview questions are. So if you have a doubt in this
regard, read the following article to know what some interview questions on manual
testing are.
The following are some of the interview questions for manual testing. This will give you
a fair idea of what these questions are like.
These were some of the manual testing interview questions for freshers, let us now move
on to other forms of manual testing questions.
Here are some software testing interview questions that will help you get into the more
intricate and complex formats of this form of manual testing.
In our day-to-day life, when we go out, shopping any product such as vegetable, clothes,
pens, etc. we do check it before purchasing them for our satisfaction and to get maximum
benefits. For example, when we intend to buy a pen, we test the pen before actually
purchasing it i.e. if its writing, does it break if it falls, does it work in extreme climatic
conditions, etc. So, though its the software, hardware or any product, testing turns to be
mandatory.
Functional Testing: In this type of testing, the software is tested for the functional
requirements. This checks whether the application is behaving according to the
specification.
Performance Testing: This type of testing checks whether the system is performing
properly, according to the user's requirements. Performance testing depends upon the
Load and Stress Testing, that is internally or externally applied to the system.
1. Load Testing : In this type of performance testing, the system is raised beyond the
limits in order to check the performance of the system when higher loads are
applied.
2. Stress Testing : In this type of performance testing, the system is tested beyond
the normal expectations or operational capacity
Usability Testing: This type of testing is also called as 'Testing for User Friendliness'.
This testing checks the ease of use of an application. Read more on introduction to
usability testing.
Regression Testing: Regression testing is one of the most important types of testing, in
which it checks whether a small change in any component of the application does not
affect the unchanged components. Testing is done by re-executing the previous versions
of the application.
Smoke Testing: Smoke testing is used to check the testability of the application. It is also
called 'Build Verification Testing or Link Testing'. That means, it checks whether the
application is ready for further major testing and working, without dealing with the finer
details.
Sanity Testing: Sanity testing checks for the behavior of the system. This type of
software testing is also called as Narrow Regression Testing.
Parallel Testing: Parallel testing is done by comparing results from two different
systems like old vs new or manual vs automated.
Recovery Testing: Recovery testing is very necessary to check how fast the system is
able to recover against any hardware failure, catastrophic problems or any type of system
crash.
Installation Testing: This type of software testing identifies the ways in which
installation procedure leads to incorrect results.
Configuration Testing: This testing is done to test for compatibility issues. It determines
minimal and optimal configuration of hardware and software, and determines the effect
of adding or modifying resources such as memory, disk drives and CPU.
Compliance Testing: This type of testing checks whether the system was developed in
accordance with standards, procedures and guidelines.
Error-Handling Testing: This software testing type determines the ability of the system
to properly process erroneous transactions.
Inter-Systems Testing: This type of software testing method is an interface between two
or more application systems.
Volume Testing: This testing is done, when huge amount of data is processed through
the application.
Scenario Testing: This type of software testing provides a more realistic and meaningful
combination of functions, rather than artificial combinations that are obtained through
domain or combinatorial test design.
User Interface Testing: This type of testing is performed to check, how user-friendly the
application is. The user should be able to use the application, without any assistance by
the system personnel.
User Acceptance Testing: Acceptence Testing is performed to verify that the product is
acceptable to the customer and it's fulfilling the specified requirements of that customer.
This testing includes Alpha and Beta testing.
1. Alpha Testing: Alpha testing is performed at the developer's site by the customer
in a closed environment. This testing is done after system testing.
2. Beta Testing: This type of software testing is done at the customer's site by the
customer in the open environment. The presence of the developer, while
performing these tests, is not mandatory. This is considered to be the last step in
the software development life cycle as the product is almost ready.
Unit Testing: This type of testing is done at the developer's site to check whether a
particular piece/unit of code is working fine. Unit testing deals with testing the unit as a
whole.
Static and Dynamic Analysis: In static analysis, it is required to go through the code in
order to find out any possible defect in the code. Whereas, in dynamic analysis the code
is executed and analyzed for the output.
Statement Coverage: This type of testing assures that the code is executed in such a way
that every statement of the application is executed at least once.
Decision Coverage: This type of testing helps in making decision by executing the
application, at least once to judge whether it results in true or false.
Condition Coverage: In this type of software testing, each and every condition is
executed by making it true and false, in each of the ways at least once.
Path Coverage: Each and every path within the code is executed at least once to get a
full path coverage, which is one of the important parts of the white box testing.
1. Bottom-Up Integration Testing: In this type of integration testing, the lowest level
components are tested first and then alleviate the testing of higher level
components using 'Drivers'.
2. Top-Down Integration Testing: This is totally opposite to bottom-up approach, as
it tests the top level modules are tested and the branch of the module are tested
step by step using 'Stubs' until the related module comes to an end.
Security Testing: Testing that confirms, how well a system protects itself against
unauthorized internal or external, or willful damage of code, means security testing of the
system. Security testing assures that the program is accessed by the authorized personnel
only. Read more on brief introduction to security testing.
Mutation Testing: In this type of software testing, the application is tested for the code
that was modified after fixing a particular bug/defect.
• Explain in short, sanity testing, adhoc testing and smoke testing.
Sanity testing is a basic test, which is conducted if all the components of the software can
be compiled with each other without any problem. It is to make sure that there are no
conflicting or multiple functions or global variable definitions have been made by
different developers. It can also be carried out by the developers themselves.
Smoke testing on the other hand is a testing methodology used to cover all the major
functionality of the application without getting into the finer nuances of the application. It
is said to be the main functionality oriented test.
Ad hoc testing is different than smoke and sanity testing. This term is used for software
testing, which is performed without any sort of planning and/or documentation. These
tests are intended to run only once. However in case of a defect found it can be carried
out again. It is also said to be a part of exploratory testing.
• What are stubs and drivers in manual testing?
Both stubs and drivers are a part of incremental testing. There are two approaches, which
are used in incremental testing, namely bottom up and top down approach. Drivers are
used in bottom up testing. They are modules, which test the components to be tested. The
look of the drivers is similar to the future real modules.
Number of statements
Statement Coverage = exercised
* 100%
Total number of statements
• What are the check lists, which a software tester should follow?
Read the link on check lists for software tester to find the answer to the question.
• What is usability testing?
Refer to the article titled usability testing for an answer to this question.
Web Browsers
Web browser is a software which simplifies the data for a layman on the Internet. Mozilla
Firefox, Internet Explorer, Google Chrome and Apple Safari are the popular web
browsers.
While verification is a quality control process, quality assurance process carried out
before the software is ready for release is known as validation testing. The validation
testing goals is to validate and be confident about the software product or system, that it
fulfills the requirements given by the customer. The acceptance of the software from the
end customer is also a part of validation testing.
Validation testing answers the question, "Are you building the right software system".
Another question, which the entire process of validation testing in software engineering
answers is, "Is the deliverable fit for purpose". In other words, does the software system
provide the right solution to the problem. Therefore, often the testing activities are
introduced early in the software development life cycle. The two major areas, when
validation testing should take place are in the early stages of software development and
towards the end, when the product is ready for release. In other words, it is acceptance
testing which is a part of validation testing.
If the testers are involved in the software product right from the very beginning, then
validation testing in software testing starts right after a component of the system has been
developed. The different types of software validation testing are:
Component Testing
Component testing is also known as unit testing. The aim of the tests carried out in this
testing type is to search for defects in the software component. At the same time, it also
verifies the functioning of the different software components, like modules, objects,
classes, etc., which can be tested separately.
Integration Testing
This is an important part of the software validation model, where the interaction between
the different interfaces of the components is tested. Along with the interaction between
the different parts of the system, the interaction of the system with the computer
operating system, file system, hardware and any other software system it might interact
with is also tested.
System Testing
System testing, also known as functional and system testing is carried out when the entire
software system is ready. The concern of this testing is to check the behavior of the
whole system as defined by the scope of the project. The main concern of system testing
is to verify the system against the specified requirements. While carrying out the tester is
not concerned with the internals of the system, but checks if the system behaves as per
expectations.
Acceptance Testing
Here the tester especially has to literally think like the client and test the software with
respect to user needs, requirements and business processes and determine, whether the
software can be handed over to the client. At this stage, often a client representative is
also a part of the testing team, so that the client has confidence in the system. There are
different types of acceptance testing:
Often when validation testing interview questions are asked, they revolve around the
different types of validation testing. The difference between verification and validation is
also a common software validation testing question. Some organizations may use
different terms for some of the terms given in the article above. As far as possible, I have
tried to accept the alternate names as well.
A perfect software product is built when every step is taken with full consideration that
‘A right product is developed in a right manner’. ‘Software Verification & Validation’ is
one such model, which helps the system designers and test engineers to confirm that a
right product is build right way throughout the development process and improve the
quality of the software product.
‘Verification & Validation Model’ makes it sure that, certain rules are followed at the
time of development of a software product and also makes it sure that the product that is
developed fulfills the required specifications. This reduces the risk associated with any
software project up to certain level by helping in detection and correction of errors and
mistakes, which are unknowingly done during the development process.
What is Verification?
The standard definition of Verification goes like this: "Are we building the product
RIGHT?" i.e. Verification is a process that makes it sure that the software product is
developed the right way. The software should confirm to its predefined specifications, as
the product development goes through different stages, an analysis is done to ensure that
all required specifications are met.
Methods and techniques used in the Verification and Validation shall be designed
carefully, the planning of which starts right from the beginning of the development
process. The Verification part of ‘Verification and Validation Model’ comes before
Validation, which incorporates Software inspections, reviews, audits, walkthroughs,
buddy checks etc. in each phase of verification (every phase of Verification is a phase of
the Testing Life Cycle)
During the Verification, the work product (the ready part of the Software being
developed and various documentations) is reviewed/examined personally by one ore
more persons in order to find and point out the defects in it. This process helps in
prevention of potential bugs, which may cause in failure of the project.
Walkthroughs:
Walkthrough can be considered same as inspection without formal preparation (of any
presentation or documentations). During the walkthrough meeting, the presenter/author
introduces the material to all the participants in order to make them familiar with it. Even
when the walkthroughs can help in finding potential bugs, they are used for knowledge
sharing or communication purpose.
Buddy Checks:
This is the simplest type of review activity used to find out bugs in a work product during
the verification. In buddy check, one person goes through the documents prepared by
another person in order to find out if that person has made mistake(s) i.e. to find out bugs
which the author couldn’t find previously.
Usability Testing:
As the term suggest, usability means how better something can be used over the purpose
it has been created for. Usability testing means a way to measure how people
(intended/end user) find it (easy, moderate or hard) to interact with and use the system
keeping its purpose in mind. It is a standard statement that "Usability testing measures the
usability of the system".
Any changes suggested by the tester at the time of usability testing, are the most crucial
points that can change the stand of the system in intended/end user’s view.
Developer/designer of the system need to incorporate the feedbacks (here feedback can
be a very simple change in look and feel or any complex change in the logic and
functionality of the system) of usability testing into the design and developed code of the
system (the word system may be a single object or an entire package consisting more
than one objects) in order to make system more and more presentable to the intended/end
user.
Developer often try to make the system as good looking as possible and also tries to fit
the required functionality, in this endeavor he may have forgotten some error prone
conditions which are uncovered only when the end user is using the system in real time.
Usability testing helps developer in studying the practical situations where the system
will be used in real time. Developer also gets to know the areas that are error prone and
the area of improvement.
In simple words, usability testing is an in-house dummy-release of the system before the
actual release to the end users, where developer can find and fix all possible loop holes.
The outcome/feedback is noted down based on observations of how the user is using the
system and what are all the possible ways that also may come into picture, and also based
on the behavior of the system and how easy/hard it is for the user to operate/use the
system. User is also asked for his/her feedback based on what he/she thinks should be
changed to improve the user interaction between the system and the end user.
Over the time period, many people have formulated various measures and models for
performing usability testing. Any of the models can be used to perform the test.
• Usability test can be modified to cover many other types of testing such as
functional testing, system integration testing, unit testing, smoke testing etc. (with
keeping the main objective of usability testing in mind) in order to make it sure
that testing is done in all the possible directions.
• Usability testing can be very economical if planned properly, yet highly effective
and beneficial.
• If proper resources (experienced and creative testers) are used, usability test can
help in fixing all the problems that user may face even before the system is finally
released to the user. This may result in better performance and a standard system.
• Usability testing can help in uncovering potential bugs and potholes in the system
which generally are not visible to developers and even escape the other type of
testing.
Usability testing is a very wide area of testing and it needs fairly high level of
understanding of this field along with creative mind. People involved in the usability
testing are required to possess skills like patience, ability to listen to the suggestions,
openness to welcome any idea, and the most important of them all is that they should
have good observation skills to spot and fix the problems on fly.