Acceptance Testing
Testing the system with the intent of confirming readiness
of the product and customer acceptance. Acceptance testing, which is a black
box testing, will give the client the opportunity to verify the system
functionality and usability prior to the system being moved to production. The
acceptance test will be the responsibility of the client; however, it will be
conducted with full support from the project team. The Test Team will work with
the client to develop the acceptance criteria.
Ad Hoc Testing
Testing without a formal test plan or outside of a test
plan. With some projects this type of testing is carried out as an adjunct to
formal testing. If carried out by a skilled tester, it can often find problems
that are not caught in regular testing. Sometimes, if testing occurs very late
in the development cycle, this will be the only kind of testing that can be
performed. Sometimes ad hoc testing is referred to as exploratory testing.
Alpha Testing
Testing after code is mostly complete or contains most of
the functionality and prior to users being involved. Sometimes a select group
of users are involved. More often this testing will be performed in-house or by
an outside testing firm in close cooperation with the software engineering department.
Automated Testing
Software testing that utilizes a variety of tools to
automate the testing process and when the importance of having a person
manually testing is diminished. Automated testing still requires a skilled
quality assurance professional with knowledge of the automation tool and the
software being tested to set up the tests.
Beta Testing
Testing after the product is code complete. Betas are often
widely distributed or even distributed to the public at large in hopes that
they will buy the final product when it is released.
Black Box Testing
Testing software without any knowledge of the inner
workings, structure or language of the module being tested. Black box tests, as
most other kinds of tests, must be written from a definitive source document,
such as a specification or requirements document.
Compatibility Testing
Testing used to determine whether other system software
components such as browsers, utilities, and competing software will conflict
with the software being tested.
Configuration Testing
Testing to determine how well the product works with a
broad range of hardware/peripheral equipment configurations as well as on
different operating systems and software.
End-to-End Testing
Similar to system testing, the 'macro' end of the test
scale involves testing of a complete application environment in a situation
that mimics real-world use, such as interacting with a database, using network
communications, or interacting with other hardware, applications, or systems if
appropriate.
Functional Testing
Testing two or more modules together with the intent of
finding defects, demonstrating that defects are not present, verifying that the
module performs its intended functions as stated in the specification and
establishing confidence that a program does what it is supposed to do.
Independent Verification and Validation (IV&V)
The process of exercising software with the intent of
ensuring that the software system meets its requirements and user expectations
and doesn't fail in an unacceptable manner. The individual or group doing this
work is not part of the group or organization that developed the software. A
term often applied to government work or where the government regulates the
products, as in medical devices.
Installation Testing
Testing with the intent of determining if the product
will install on a variety of platforms and how easily it installs. Testing
full, partial, or upgrade install/uninstall processes. The installation test
for a release will be conducted with the objective of demonstrating production
readiness. This test is conducted after the application has been migrated to
the client's site. It will encompass the inventory of configuration items
(performed by the application's System Administration) and evaluation of data readiness,
as well as dynamic tests focused on basic system functionality. When necessary,
a sanity test will be performed following the installation testing.
Integration Testing
Testing two or more modules or functions together with
the intent of finding interface defects between the modules or functions.
Testing completed at as a part of unit or functional testing, and sometimes,
becomes its own standalone test phase. On a larger level, integration testing
can involve a putting together of groups of modules and functions with the goal
of completing and verifying that the system meets the system requirements. (see
system testing)
Load Testing
Testing with the intent of determining how well the
product handles competition for system resources. The competition may come in
the form of network traffic, CPU utilization or memory allocation.
Parallel/Audit Testing
Testing where the user reconciles the output of the new
system to the output of the current system to verify the new system performs
the operations correctly.
Performance Testing
Testing with the intent of determining how quickly a product
handles a variety of events. Automated test tools geared specifically to test
and fine-tune performance are used most often for this type of testing.
Pilot Testing
Testing that involves the users just before actual release
to ensure that users become familiar with the release contents and ultimately
accept it. Often is considered a Move-to-Production activity for ERP releases
or a beta test for commercial products. Typically involves many users, is
conducted over a short period of time and is tightly controlled. (see beta
testing)
Recovery/Error Testing
Testing how well a system recovers from crashes, hardware
failures, or other catastrophic problems.
Regression Testing
Testing with the intent of determining if bug fixes have
been successful and have not created any new problems. Also, this type of
testing is done to ensure that no degradation of baseline functionality has
occurred.
Sanity Testing
Sanity testing will be performed whenever cursory testing is
sufficient to prove the application is functioning according to specifications.
This level of testing is a subset of regression testing. It will normally
include a set of core tests of basic GUI functionality to demonstrate
connectivity to the database, application servers, printers, etc.
Security Testing
Testing of database and network software in order to keep
company data and resources secure from mistaken/accidental users, hackers, and
other malevolent attackers.
Software Testing
The process of exercising software with the intent of
ensuring that the software system meets its requirements and user expectations
and doesn't fail in an unacceptable manner. The organization and management of
individuals or groups doing this work is not relevant. This term is often
applied to commercial products such as internet applications. (contrast with
independent verification and validation)
Stress Testing
Testing with the intent of determining how well a product
performs when a load is placed on the system resources that nears and then
exceeds capacity.
System Integration Testing
Testing a specific hardware/software installation. This is
typically performed on a COTS (commercial off the shelf) system or any other
system comprised of disparent parts where custom configurations and/or unique
installations are the norm.
Unit Testing
Unit Testing is the first level of dynamic testing and is
first the responsibility of the developers and then of the testers. Unit
testing is performed after the expected test results are met or differences are
explainable / acceptable.
Usability Testing
Testing for 'user-friendliness'. Clearly this is subjective
and will depend on the targeted end-user or customer. User interviews, surveys,
video recording of user sessions, and other techniques can be used. Programmers
and testers are usually not appropriate as usability testers.
White Box Testing
Testing in which the software tester has knowledge of the
inner workings, structure and language of the software, or at least its
purpose.
What are the contents in an effective Bug report?
Project, Subject, Description, Summary, Detected By (Name of the
Tester), Assigned To (Name of the Developer who is supposed to the Bug), Test
Lead ( Name ), Detected in Version, Closed in Version, Date Detected, Expected
Date of Closure, Actual Date of Closure, Priority (Medium, Low, High, Urgent),
Severity (Ranges from 1 to 5), Status, Bug ID, Attachment, Test Case Failed
(Test case that is failed for the Bug)
What is Bug Life Cycle?
Bug Life Cycle is nothing but the various phases a Bug undergoes
after it is raised or reported.
- New or Opened
- Assigned
- Fixed
- Tested
- Closed
What is Error guessing and Error seeding ?
Error Guessing is a test case design technique where the tester
has to guess what faults might occur and to design the tests to represent them.
Error Seeding is the process of adding known faults intentionally
in a program for the reason of monitoring the rate of detection & removal
and also to estimate the number of faults remaining in the program.
What is the difference between Bug, Error and Defect?
Error: It is the Deviation from actual and the expected value.
Bug: It is found in the development environment before the product is
shipped to the respective customer.
Defect: It is found in the product itself after it is shipped to the
respective customer.
What is Test bed and Test data?
Test Bed is an execution environment configured for software
testing. It consists of specific hardware, network topology, Operating System,
configuration of the product to be under test, system software and other
applications. The Test Plan for a project should be developed from the test
beds to be used.
Test Data is that run through a computer program to test the
software. Test data can be used to test the compliance with effective controls
in the software.
What is Negative testing?
Negative testing - Testing
the system using negative data is called negative testing, e.g. testing the
password where it should be minimum of 8 characters so testing it using 6
characters is negative testing.
Explain Load, Performance and Stress Testing with an Example.
Load Testing and Performance Testing are commonly said as positive
testing where as Stress Testing is said to be as negative testing.
Say for example there is a application which can handle 25
simultaneous user logins at a time. In load testing we will test the
application for 25 users and check how application is working in this stage, in
performance testing we will concentrate on the time taken to perform the
operation. Where as in stress testing we will test with more users than 25 and
the test will continue to any number and we will check where the application is
cracking.
What are SDLC and STLC ? Explain its different phases.
SDLC
- Requirement phase
- Designing phase (HLD, DLD
(Program spec))
- Coding
- Testing
- Release
- Maintenance
STLC
- System Study
- Test planning
- Writing Test case or scripts
- Review the test case
- Executing test case
- Bug tracking
- Report the defect
What is Ad-hoc testing?
Ad hoc testing is concern with the Application Testing without
following any rules or test cases.
For Ad hoc testing one should have strong knowledge about the
Application.
Describe bottom-up and top-down approaches in Regression Testing.
Bottom-up approach: In this
approach testing is conducted from sub module to main module, if the main
module is not developed a temporary program called DRIVERS
is used to simulate the main module.
Top-down approach: In this
approach testing is conducted from main module to sub module. if the sub
module is not developed a temporary program called STUB
is used for simulate the submodule.
What is the difference between structural and functional testing?
Structural testing is a "white box" testing and it is based
on the algorithm or code.
Functional testing is a "black box" (behavioral) testing
where the tester verifies the functional specification.
What is Re- test? What is Regression Testing?
Re- test - Retesting means we
testing only the certain part of an application again and not considering how
it will effect in the other part or in the whole application.
Regression Testing - Testing
the application after a change in a module or part of the application for
testing that is the code change will affect rest of the application.
What is UAT testing? When it is to be done?
UAT testing - UAT stands for 'User
acceptance Testing. This testing is carried out with the user perspective and
it is usually done before the release.
What are the basic solutions for the software development
problems?
- Basic
requirements - clear, detailed, complete,
achievable, testable requirements has to be developed. Use some prototypes
to help pin down requirements. In nimble environments, continuous and
close coordination with customers/end-users is needed.
- Schedules
should be realistic - enough time to plan,
design, test, bug fix, re-test, change, and document in the given
schedule.
- Adequate
testing – testing should be started
early, it should be re-tested after the bug fixed or changed, enough time
should be spend for testing and bug-fixing.
- Proper
study on initial requirements – be ready to
look after more changes after the development has begun and be ready to
explain the changes done to others. Work closely with the customers and
end-users to manage expectations. This avoids excessive changes in the
later stages.
- Communication
– conduct frequent inspections and walkthroughs in appropriate time
period; ensure that the information and the documentation is available on
up-to-date if possible electronic. More emphasize on promoting teamwork
and cooperation inside the team; use prototypes and proper communication
with the end-users to clarify their doubts and expectations.
What are the common problems in the software development process?
- Inadequate
requirements from the Client - if the
requirements given by the client are not clear, unfinished and not
testable, then problems may come.
- Unrealistic
schedules – Sometimes too much of work is
being given to the developer and ask him to complete in a Short duration,
then the problems are unavoidable.
- Insufficient
testing – The problems can arise when
the developed software is not tested properly.
- Given
another work under the existing process – request
from the higher management to work on another project or task will bring
some problems when the project is being tested as a team.
- Miscommunication
– in some cases, the developer was not informed about the Clients
requirement and expectations, so there can be deviations.
Why does software have bugs?
- Miscommunication
or no communication – about the details of what
an application should or shouldn't do
- Programming
errors – in some cases the programmers
can make mistakes.
- Changing
requirements – there are chances of the
end-user not understanding the effects of changes, or may understand and
request them anyway to redesign, rescheduling of engineers, effects of
other projects, work already completed may have to be redone or thrown
out.
- Time
force - preparation of software
projects is difficult at best, often requiring a lot of guesswork. When
deadlines are given and the crisis comes, mistakes will be made.
What software testing types can be considered?
Black box testing – This
type of testing doesn’t require any knowledge of the internal design or coding.
These Tests are based on the requirements and functionality.
White box testing – This
kind of testing is based on the knowledge of internal logic of a particular
application code. The Testing is done based on the coverage of code statements,
paths, and conditions.
Unit testing – the 'micro' scale
of testing; this is mostly used to test the particular functions or code
modules. This is typically done by the programmer and not by testers; it
requires detailed knowledge of the internal program design and code. It cannot
be done easily unless the application has a well-designed architecture with
tight code; this type may require developing test driver modules or test
harnesses.
Sanity testing or Smoke testing –
This type of testing is done initially to determine if a new software version
is performing well enough to accept it for a major testing effort. For example,
if the new software is crashing the systems in every 5 minutes or corrupting
databases, the software may not be in a 'sound’ condition to proceed for
further testing in its current state.
Functional testing – This a
commonly used black-box testing geared to check the functional requirements of
an application; this type of testing should be done by testers.
Integration testing – This
testing is combining the ‘parts’ of an application to determine if they
function together correctly. The 'parts' can be code modules, individual
applications, client and server applications on a network, etc. This type of
testing is especially relevant to the client/server and distributed systems.
Incremental Integration testing –
This is continuous testing of an application when a new functionality is added
the existing ones; it checks the application functionality by verifying whether
it works separately before all parts of the program are completed, in this type
it will be checked whether to introduce test drivers or not; this is done by
programmers or by testers.
Regression testing – This
is testing the whole application again after the fixes or the modifications are
done on the software. This is mostly done at the end of the Software
development life cycle. Mostly Automated testing tools are used for these type
of testing.
System testing – This is a type of
black-box type testing that is based on overall requirements specifications;
covers all combined parts of a system.
End-to-end testing – This
is similar to system testing; this involves testing of a complete application
environment such as interacting with a database, using network communications,
or interacting with other hardware, applications and so on.
UAT (User Acceptance Testing ) –
This type of testing comes on the final stage and mostly done on the
specifications of the end-user or client.
Usability testing – This
testing is done to check the 'user-friendliness' of the application. This
depends on the targeted end-user or customer. User interviews, surveys, video
recording of user sessions, and other techniques can be used. Programmers and
testers are usually not appropriate as usability testers.
Compatibility testing –
Testing how well the software performs in a particular hardware, software,
operating system, network etc.
Comparison testing – This
is nothing comparing the software strengths and weakness with another competing
product.
Mutation testing – This
is another method for determining if a set of test data or test cases is
useful, by purposely introducing various code changes or bugs and retesting
with the original test data or cases to determine whether the 'bugs' are
detected.
How do you decide when you have 'tested enough’?
Common factors in deciding when to stop are:
- Deadlines (release deadlines,
testing deadlines, etc.)
- Test cases completed with certain
percentage passed
- Test budget depleted
- Coverage of
code/functionality/requirements reaches a specified point
- Bug rate falls below a certain
level
- Beta or alpha testing period ends
Describe the Software Development Life Cycle
It includes aspects such as initial concept, requirements
analysis, functional design, internal design, documentation planning, test
planning, coding, document preparation, integration, testing, maintenance,
updates, retesting, phase-out, and other aspects.
Describe the difference between validation and verification
Verification is done by frequent
evaluation and meetings to appraise the documents, policy, code, requirements,
and specifications. This is done with the checklists, walkthroughs, and
inspection meetings.
Validation is done during
actual testing and it takes place after all the verifications are being done.
What is the difference between QA and testing?
Testing involves operation of a system or application under
controlled conditions and evaluating the results. It is oriented to
'detection'.
Software QA involves the entire software development PROCESS -
monitoring and improving the process, making sure that any agreed-upon
standards and procedures are followed, and ensuring that problems are found and
dealt with. It is oriented to 'prevention'.
What is quality assurance?
Software QA involves the entire software development PROCESS -
monitoring and improving the process, making sure that any agreed-upon
standards and procedures are followed, and ensuring that problems are found and
dealt with. It is oriented to 'prevention'.
What is the purpose of the testing?
Software testing is the process used to help identify the
Correctness, Completeness, Security and
Quality of the developed Computer Software.
Software Testing is the process of executing a program or system
with the intent of finding errors.
0 comments:
Post a Comment