Software Testing and Quality Assurance
Software Testing and Quality Assurance
BCA SEMESTER-V
TITLE: SOFTWARE TESTING AND QUALITY ASSURANCE
Software Testing:
Software testing is an integral part of the software development life cycle which
identifies the defects, flaws or the errors in the application. It is incremental and
iterative in nature.
Objectives of software testing
It ensures if the solutions meet the business requirements, thereby enhancing customer
confidence.
It catches the bugs, errors and defects.
It ensures if the system is stable and ready for use.
It identifies the areas of weakness in an application or product.
It establishes the degree of quality. 6. It determines user acceptability
The scope of testing can be comprehensive and could examine components like
Business requirements
Design requirements
Programmer’s code
Hardware configuration and
Systems administration standards and constraints.
The ambit of testing could also involve testing with respect to industry standards and
professional best practices. Testing thus provides an opportunity to validate and verify all
aspects of software engineering.
Thus, software testing brings many benefits to an organization. It saves time and money,
since defects are identified early. Testing ensures that the product is stable with less
downtime, thereby gaining customer satisfaction.
Verification - typically involves reviews and meeting to evaluate documents, plans, code,
requirements, and specifications. This can be done with checklists, issues lists, walkthroughs,
and inspection meeting.
Validation - typically involves actual testing and takes place after verifications are
completed.
Validation and Verification process continue in a cycle till the software becomes defects free.
Verification Validation
Are you building it right? Are you building the right thing?
Ensure that the software system meets all Ensure that functionalities meet the
the functionality. intended behavior.
Verification takes place first and includes Validation occurs after verification and
the checking for documentation, code etc. mainly involves the checking of the overall
product.
Done by developers. Done by Testers
Have static activities as it includes the reviews, Have dynamic activities as it includes
walkthroughs, and inspections to verify that executing the software against the
software is correct or not. requirements.
It is an objective process and no subjective It is a subjective process and involves
decision should be needed to verify the subjective decisions on how well the
Software. Software works.
as testing is a never ending process and no one can say that any software is 100%
tested. Following are the aspects which should be considered to stop the testing:
Testing Deadlines.
Completion of test case execution.
Completion of Functional and code coverage to a certain point.
Bug rate falls below a certain level and no high priority bugs are identified.
Management decision.
The following figure tells us how Error made by human will result in failure of the software.
Software Bug:
A bug, also known as a software bug, is an error in a software program that may produce
incorrect, undesired result or prevent the program from working correctly.
In software testing, a bug not only means an error, but anything that affects the quality of the
software program.
Software bugs take different names such as – defect, fault, problem, error, incident, anomaly,
failure, variance and inconsistency and so on.
The following are certain conditions that result in a bug in a software:
If the software does not respond or act in the way as stipulated in the product
specification.
If the software behaves in a way that is stipulated in an opposite way in the product
specification.
If the software responds or reacts in a way that is not mentioned in the product
specification.
If the software does not behave in the mandatory way as expected --perhaps, this
might not be mentioned in the product specification.
3. Integration Stage:
It will require more time to be resolved. Since the problem occurs at a higher level, it
requires time to check the part of the code or configuration which is wrong and
additional time to fix the bug. The developer and other system engineers will be
involved in detecting and resolving the bug.
4. Testing Stage:
It will involve the developer, system engineer, and project manager for detecting and
resolving the bug. It is an iterative process, which takes a lot of time and effort with
respect to man hours and cost in order to detect and fix the bug. Since the bugs have
to be tracked and prioritized for debugging, it will increase the project cost in terms of
man power and tools required and causes delay in the delivery times as well.
5. Production Stage:
It will take huge time and investment for the organization, as it involves developers,
system engineers, project managers, and customers for detecting and resolving the
bug. It demands prioritizing and detailed planning when compared to a bug detected
in testing stage. Such bugs not only cause a huge loss, but also bring down the
reputation of the organization.
Why SDLC?
Here, are prime reasons why SDLC is important for developing a software system.
It offers a basis for project planning, scheduling, and estimating.
Provides a framework for a standard set of activities and deliverables.
It is a mechanism for project tracking and control.
Increases visibility of project planning to all involved stakeholders of the development
process.
Increased and enhance development speed.
Improved client relations.
Helps you to decrease project risk and project management plan overhead.
SDLC Phases
Requirements gathering and analysis
Planning
Design
Development & Coding
Testing
Deployment & Maintenance
Requirements gathering and analysis
During requirement gathering the specific requirements of the software to be built are
gathered and documented.
If the software is bespoke software, then there is a single customer who can give these
requirements.
If the product is general-purpose software, then a product marketing team within the software
product organisation specifies the requirements by aggregating the requirements of multiple
potential customers.
In either case, it is important to ensure that right requirements are captured at every stage.
The requirements get documented in the form of System Requirement Specification (SRS)
document. This document acts as a bridge between the customer and the designer chartered to
build the product.
Planning
The purpose of the Planning phase is to come up with a schedule, the scope and resource
requirements for a release. A plan explains how the requirements will be met and by which
team. It needs to take into account the requirements - what will be met and what will be not
met for the current release to decide on the scope of for the project, look at resource
availability, and to come out with set of milestones and release date for the project.
The planning phase is applicable for both development and testing activities. At the end of
this phase, both project plan and test plan documents are delivered.
Design
The purpose of the design phase is to figure out how to satisfy the requirements enumerated
in the System Requirement Specification documents.
The design phase product produces representation that will be used by the following phase,
the development phase. This representation should serve two purposes.
First, from this representation, it should be possible to verify that all the required
requirements are satisfied.
Second, this representation should give sufficient information for the development Phase to
proceed with the coding and implementation of the system.
Design is usually split into two levels - high level design and low level design or detailed
design. The design step produces the system design description (SDD) document that will be
used by development teams to produce the programs that realise the design.
Development or Coding
Design acts as a blueprint for the actual coding to proceed. This development are coding
phase comprises coding the programs in the chosen programming language. It produces the
software that meets the requirements the design was meant to satisfy. In addition to
programming, this phase also involves the creation of product documentation.
Testing
As the programs are coded (in the chosen programming language), they are also tested. In
addition, after the coding is (deemed) complete, the product is subjected to testing.
Testing is the process of exercising the software product in pre-defined ways to check if the
behaviour is the same as expected behaviour.
By testing the product, an organisation identifies and removes as many defects as possible
before shipping it out.
Deployment and maintenance
Once a product is tested, it is given to the customers who deploy it in their environments. As
the user start using the product in their environments, they may observed discrepancies
between the actual behaviour of the product and what they were given to expect (either by
marketing people or through the product documentation). Such discrepancies could end up as
product defects, which need to be corrected.
The product now enters the maintenance phase, wherein the product is maintained or changed
to satisfy the changes that arise from the customer expectations, environmental changes, etc.
Maintenance is made up of corrective maintenance (for example, fixing customer-reported
problems), adaptive maintenance (for example, making the software run on a new version of
an operating system or database), and preventive maintenance (for example, changing the
application program code to avoid the potential security hole in an Operating System code).
This model is ideal for small projects with one or two developers working together and is
also useful for academic or practice projects. It is an ideal model for the product where
requirements are not well understood and the final release date is not given.
Big Bang Model - Pros and Cons
The advantage of this Big Bang Model is that it is very simple and requires very little or no
planning. Easy to manage and no formal procedure are required.
However, the Big Bang Model is a very high risk model and changes in the requirements or
misunderstood requirements may even lead to complete reversal or scraping of the project. It
is ideal for repetitive or small projects with minimum risks.
Code-and-fix Model
The first model of software development is not really a model but, the model is used in small
projects. That model is the code and fix model.
It is a simple two phase mode, in first phase code is developed and in second phase fixes the
code until the client not satisfied then deliver the product to client.
In code and fix model there are no required documentation, no quality assurance, no formal
requirements or formal testing and delivery is haphazard at best.
Do not even think about schedules and effort estimates when this model used. It tells take a
minimal amount of time to understand the problem then start code. Run or compile your
code and try it out. If it is not working, fix that first problem and try it again.
Continue this process of type compile – run – fix until program work what you want with no
errors and then ship it.
Every programmer knows and understands this model. This model is work for quick,
disposable tasks. For example, this model works better for proof – of – concept programs.
No maintenance includes. The model works good for small and single – person programs.
Advantage
Requires less experience to execute or manage other than the ability to program.
Suitable for smaller software.
Requires less project planning.
Disadvantage
No real means is available of assessing the progress, quality, and risks.
It is difficult to accommodate changes.
Cost of using this process model is high as it requires rework until user's
requirements are accomplished.
Informal design of the software as it involves unplanned procedure.
Maintenance of these models is problematic.
WATERFALL MODEL
The Waterfall Model was the first Process Model to be introduced. It is also referred to as
a linear-sequential life cycle model.
In a waterfall model, each phase must be completed before the next phase can begin and
there is no overlapping in the phases.
In "The Waterfall" approach, the whole process of software development is divided into
separate phases. Typically, the outcome of one phase acts as the input for the next phase
sequentially.
The sequential phases in Waterfall model are:
Requirement Gathering and analysis − All possible requirements of the system to
be developed are captured in this phase and documented in a requirement
specification document.
System Design − the requirement specifications from first phase are studied in this
phase and the system design is prepared. This system design helps in specifying
hardware and system requirements and helps in defining the overall system
architecture.
Implementation − with inputs from the system design, the system is first developed
in small programs called units, which are integrated in the next phase. Each unit is
developed and tested for its functionality, which is referred to as Unit Testing.
Integration and Testing − All the units developed in the implementation phase are
integrated into a system after testing of each unit. Post integration the entire system is
tested for any faults and failures.
Deployment of system − Once the functional and non-functional testing is done; the
product is deployed in the customer environment or released into the market.
Maintenance − There are some issues which come up in the client environment. To
fix those issues, patches are released. Also to enhance the product some better
versions are released. Maintenance is done to deliver these changes in the customer
environment.
All these phases are cascaded to each other in which progress is seen as flowing steadily
downwards (like a waterfall) through the phases. The next phase is started only after the
defined set of goals are achieved for previous phase and it is signed off, so the name
"Waterfall Model".
Waterfall Model – Advantages
Simple and easy to understand and use.
For smaller projects, waterfall model works well and yield the appropriate results.
Since the phases are rigid and precise, one phase is done one at a time, it is easy to
maintain.
The entry and exit criteria are well defined, so it easy and systematic to proceed with
quality.
Results are well documented.
The advantages of waterfall development are that it allows for departmentalization and
control. A schedule can be set with deadlines for each stage of development and a product
can proceed through the development process model phases one by one. Development moves
from concept, through design, implementation, testing, installation, troubleshooting, and
ends up at operation and maintenance. Each phase of development proceeds in strict order.
SPIRAL MODEL
Spiral Model is a combination of a waterfall model and iterative model. The model consists
of four phases - planning, risk analysis, design engineering and customer evaluation. The
four phases are iteratively followed till the problems are rectified. Two to three prototypes
are developed before the final product is delivered. Each prototype follows the entire cycle to
solve problems. This method of software development enables to understand the problems
associated with a particular phase and deals with those problems when the same phase is
repeated again.
The various phases involved in each cycle are,
1. Plan:
In this phase, the specifications, objectives, constraints, and alternatives of the project are
listed in logical order as per the project requirements. The objectives and specifications are
defined in order to decide the strategies to be followed during the project life cycle.
2. Risk Analysis:
This is a very crucial phase of spiral model. During this phase, all the alternatives that are
helpful in developing a cost effective project are analyzed and all possible risks involved in
the project development are identified.
3. Design Engineering:
This is the phase where the actual development of the software takes place. The software
product is developed iteratively and passed on to the next phase.
4. Testing:
In this phase, the customer receives the product and gives comments and suggestions which
can help in identifying and resolving potential problems in the developed software. During
this cycle all the phases concentrate on the feedback received from the customer and the
testing team to resolve the drawbacks and bugs found in each prototype of the product.
The main drawback of the model is the amount of time taken to complete the iterations
which can increase costs. Testing at the customer’s end and fixing of bugs might require
higher cost and time.
The figure 1.2 is the pictorial representation of spiral model.
One of the oldest types of SDLC, where the development process is carried out,
incrementally and iteratively, in a systematic and speedy way.
It is a risk-driven approach, which focuses on continuous risk-evaluation and
improvement of the software product, through one or more than one iteration.
An effective approach to meet the constantly changing and continuous requirements.
Good methodology for the software that continuously requires risk evaluation.
Effective for the larger projects and is considered not suitable for the small projects.
However, it demands more cost and involves complex requirements.
It may undergo infinite iterations.
The main advantage offered by this method is that the programmer knows the code and the
programming language very well is well equipped to read and understand his or her own
code.
Some of the disadvantages of this method of testing are as follows
1. A developer is not the best person to detect problems in his or her own code. He or
She maybe tunnel visioned and have blind spots to certain types of problems
2. Developers generally preferred to write new code rather than do any forms of testing
3. This method is essentially person dependent and informal and does not work
consistently across all developers
Owing to this disadvantages the next to two types of proactive methods are introduced. The
basic principle of walkthroughs and formal inspections is to involve multiple people in the
review process.
Code walkthrough:
This method and formal inspection are group oriented methods. Walkthroughs are less
formal than inspections. The line drawn in Formalism between walkthroughs and inspections
is very thin and varies from organisation to organisation.
The advantage that Walkthrough has over desk checking is that it brings multiple
perspectives. In walkthroughs, a set of people look at the program code and raise questions
for the author. The author explains the logic of the code, and answers the questions. if the
author is unable to answer some questions, he or she then takes those questions and finds
their answers. Completeness is limited to the area where questions are raised by the team.
Formal inspection:
Code inspection also called Fagon inspection (named after the original formulator) is a
method, normally with the high degree of Formalism. The focus of this method is to detect all
faults, violations and other side effects.
This method increases the number of defects detected by
demanding through preparations before and inspection/review
enlisting multiple diverse views;
assigning specific roles to multiple participants; and
going sequentially through the code in the structured manner.
A formal inspection should take place only when the author has made sure the code is ready
for inspection by performing some basic desk checking and walkthroughs
When the code is in such a reasonable state of readiness, an inspection meeting is arranged.
There are four rules in inspection.
First is the author of the code.
Second is a moderator who is expected to formally run the inspection according to the
process.
Third are the inspectors.
These are the people who actually provide reviews comments for the code. There are
typically multiple inspectors. Finally there is a Scribe who takes detailed notes during the
inspection meeting and circulates them to the inspection team after the meeting.
The author or the moderator selects the review team. The chosen members have the skill sets
to cover as many defects as possible. In introductory meeting the Inspector get copies of the
court to be inspected along with the other supporting document such as design document,
requirements documents and any documentation of applicable standards. The author also
presents his or her perspective of what program is intended to do along with any specific
issues that that he or she may I want the inspection team to put extra focus on.
The moderator inform the team about the date time and venue of the inspection meeting the
inspectors get adequate time to go through the documents and programs and ascertain their
compliance to the requirements, design and Standards.
Structural testing:
Structural testing takes into account the code, code structure, internal design and how they are
coded. The fundamental difference between Structural testing and static testing is that in
Structural testing test are actually run by computer on the built product whereas in static
testing the product is tested by humans using just the source course and not the executable or
binaries.
Structural testing entails running the actual product against some pre-designed test cases to
exercise as much of the code as possible or necessary.
A given portion of the code is exercised if a test case causes the program to execute that
portion of the code when running the test.
Structural testing can be further classified into
1. Unit/Code functional testing
2. Code coverage
3. Code complexity testing
Unit/Code functional testing:
The initial part of Structural testing corresponds to some quick checks that a developer
performs before subjecting the code to more extensive code coverage testing for code
complexity testing.
This can happen by several methods
Initially the developers can perform certain obvious tests, knowing the input variables
and the corresponding expected output variables.
For models with Complex logic or conditions, the developer can build a “debug
version” of the product by putting intermediate print statement and make sure the
program is passing through the right loops and iterations the right number of times.
It is important to remove the intermediate print statements after the defects are fixed.
Another approach to do the initial tests to run the product under a debugger or an
integrated development environment (IDE) this tools Allows single stepping of
instructions (allowing the developer to stop at the end of each instruction, view or
modify the contents of a variables and so on), setting breakpoints at any function or
instructions and weaving the various system parameters are program variable values.
Code coverage testing
Since a product is released in terms of program code, if we can run test cases to exercise the
different parts of the code, then the part of the product released by the code gets tested.
Code coverage testing involves designing and executing test cases and finding out the
percentage of code that is covered by testing. The percentage of code covered by a test is
found by adopting a technique called instrumentation of code.
• A-B
• A-C-D
• A-C-E-F
• A-C-E-G
Regardless of number of statements in each of these paths we can execute these paths, then
we would have covered most of the typical scenarios.
Condition coverage:
It is necessary to have test cases that exercise each Boolean expression and have a test cases
test produces the true as well as false paths.
Obviously this will mean more test cases and number of test cases will rise exponentially
with number of conditions and Boolean expressions however in reality the situation may not
be very bad as these conditions usually have some dependencies on one another.
The condition coverage as defined by the formula alongside in the margin gives an indication
of the percentage of conditions covered by a set of test cases.
Condition coverage is stronger criteria then path coverage which in turn is a much stronger
than statement coverage.
Function coverage:
This is a new addition to Structural testing to identify how many program functions are
covered by test cases.
The requirements of the product are mapped into functions during the design phase and each
of the functions form a logical unit. For example in a database software, “inserting a row into
the database” could be a function or, in a payroll application, “calculate tax” could be a
function. Each function could in turn be implemented using the other functions. While
providing the function coverage, test cases can be written so as to exercise each of the
different functions in the code.
The “test conditions” column list the different ways of testing the requirement. Identification
of all the test conditions gives a comfort feeling that we have not miss any scenario that
would produce a defect in the end user environment. These conditions can be grouped
together to form a single test case. Alternatively, each test conditions can be mapped to one
test case.
The “test case IDs” column can be used to complete the mapping between the test cases and
the requirements. Test case ID should follow naming conventions so as to enhance their
usability. Test cases are serially numbered and prefixed with the name of the product. In a
more Complex product made up of multiple models, a test case Id may be identified by a
module code and serial number.
Once the test case creation is completed the RTM helps in identifying the relationship
between the requirements and test cases.
The following combinations are possible
One to one - for each requirements there is one test case
One to many - for each requirement there are many test cases
Many to one - a set of requirements can be tested by one test case
Many to many - mini requirements can be tested by many test cases
One to none - the set of requirements can have no test cases. The test team can take a
decision not to test the Requirements due to non implementation are the requirements
being low priority.
Requirement is subjected to multiple faces of testing - unit, component, integration and
system testing. This reference to the faces of testing can be provided in a column in the
requirement traceability matrix. This column indicates when a requirement will be tested and
at what phase of testing it needs to be considered for testing.
Requirement Traceability Matrix table format:
Req Description Priority Test Test Case Phase of
ID (H,M,L) Conditions Ids testing
From the sellers point of view also, so it is economical to sell in bulk because the seller incurs
less of storage and inventory costs and has a better cash flow.
Let us consider a hypothetical store that sells certain commodities and offer different pricing
for people buying in different quantities that is surprised in different slabs.
From the above table it is clear that if we buy 5 units we pay 5*5=25. If we buy 11 units we
pay 5*10=50 for the first 10 units and rupees 4.75 for the eleventh item. Similarly if we buy
15 units we will pay 10*5+5*4.75 = 73.75 rupees.
The question from a testing perspective for the above problem is what test data is likely to
reveal the most number of defects in the program? Generally it has been found that most
effects in the situation such as this happen around the boundaries for example when buying 9,
10, 11, 19, 20, 21, 29, 30, 31, and similar number of items.
While the reason for this phenomenon is not entirely clear, some possible reasons are as
follows.
Programmers tentativeness in using the right comparison operator for example weather to use
<= operator or < operator when trying to make comparisons.
Confusion caused by availability of multiple ways to implement loops and condition
checking. For example, in a programming language like C, we have for loop, while loop and
repeat loops. Each of these have different terminating conditions for the loop and this could
cause some confusion in deciding which operator to use, thus skewing the defects around the
boundary conditions.
The requirements themselves may not be clearly understood, especially around the
boundaries, thus causing even the correctly coded program to not perform the correct way.
In the above case, the tests that should be performed and expected values of the output
variable (the cost of the units ordered) are given in table below. This table only includes the
positive test cases. Negative test cases like a non-numeric are not included here. The circled
rows are boundary values which are more likely to uncover the defects then the rows that are
not circled.
Value expected
to be why this value should be tested value of the
tested output
1 the beginning of the first slab 5.00 rupees
5 a value in the first slab, removed from the boundaries 25.00 rupees
9 just below the second slab are just at the end of the first slab 45.00 rupees
10 the limit for the second slab 50.00 rupees
11 just above the first lab, just into the second slab 54.75 rupees
16 a value in the second slab, removed from the boundaries 28.50 rupees
19 just below the third slab are just at the end of second slab 92.75 rupees
20 the limit for the third slab 97.50 rupees
21 just above the third slab, just into the third slab 102.00 rupees
27 a value in the third slab, removed from the boundaries 129.00 rupees
29 just below the fourth slab or just at the end of third slab 138.00 rupees
30 the limit for the fourth slab 142.50 rupees
31 Just above the fourth slab 146.50 rupees
50 Well above the lower limit for the fourth slab 182.50 rupees
The representation is simple so that it can be easily interpreted and is used for
development and business as well.
This table will help to make effective combinations and can ensure a better coverage
for testing
Any complex business conditions can be easily turned into decision tables
In a case we are going for 100% coverage typically when the input combinations are
low, this technique can ensure the coverage.
Disadvantages of Decision Table Testing
The main disadvantage is that when the number of input increases the table will become more
complex.
A Decision Table is a tabular representation of inputs versus rules/cases/test conditions.
Let's learn with an example:
How to make Decision Base Table for Login Screen
Let's create a decision table for a login screen.
The condition is simple if the user provides correct username and password the user will be
redirected to the homepage. If any of the input is wrong, an error message will be displayed.
Interpretation:
Case 1 – Username and password both were wrong. The user is shown an error
message.
Case 2 – Username was correct, but the password was wrong. The user is shown an
error message.
Case 3 – Username was wrong, but the password was correct. The user is shown an
error message.
Case 4 – Username and password both were correct, and the user navigated to
homepage
While converting this to test case, we can create 2 scenarios,
Enter correct username and correct password and click on login, and the expected
result will be the user should be navigated to homepage
And one from the below scenario
Enter wrong username and wrong password and click on login, and the expected
result will be the user should get an error message
Enter correct username and wrong password and click on login, and the expected
result will be the user should get an error message
Enter wrong username and correct password and click on login, and the expected
result will be the user should get an error message
EQUIVALENCE PARTITIONING:
Equivalence Partitioning is also known as Equivalence Class Partitioning. In equivalence
partitioning, inputs to the software or system are divided into groups that are expected to
exhibit similar behavior, so they are likely to be proposed in the same way. Hence selecting
one input from each group to design the test cases.
Each and every condition of particular partition (group) works as same as other. If a condition
in a partition is valid, other conditions are valid too. If a condition in a partition is invalid,
other conditions are invalid too.
It helps to reduce the total number of test cases from infinite to finite. The selected test cases
from these groups ensure coverage of all possible scenarios.
Equivalence partitioning is applicable at all levels of testing.
Example on Equivalence Partitioning Test Case Design Technique:
Example 1:
Assume, we have to test a field which accepts Age 18 – 56
Valid Input: 18 – 56
Invalid Input: less than or equal to 17 (<=17), greater than or equal to 57 (>=57)
Valid Class: 18 – 56 = Pick any one input test data from 18 – 56
Invalid Class 1: <=17 = Pick any one input test data less than or equal to 17
Invalid Class 2: >=57 = Pick any one input test data greater than or equal to 57
We have one valid and two invalid conditions here.
Example 2:
Assume, we have to test a filed which accepts a Mobile Number of ten digits.
COMPATIBILITY TESTING
Compatibility Testing is a type of Software testing to check whether your software is capable
of running on different hardware, operating systems, applications, network environments
or Mobile devices. Compatibility Testing is a type of Non-functional testing.
Types of Compatibility Tests
Hardware
Operating systems
Software
Air network
Browser
Devices
Mobile
Versions
BrowserStack - Browser Compatibility Testing: This tool helps a Software engineer to check
application in different browsers.
Virtual Desktops - Operating System Compatibility: This is used to run the applications in
multiple operating systems as virtual machines. n Number of systems can be connected and
compare the results.
How to do Compatibility Testing
The initial phase of compatibility testing is to define the set of environments or
platforms the application is expected to work on.
The tester should have enough knowledge of the platforms/software/hardware to
understand the expected application behavior under different configurations.
The environment needs to be set-up for testing with different platforms, devices,
networks to check whether your application runs well under different configurations.
Report the bugs. Fix the defects. Re-test to confirm Defect fixing.
Conclusion:
The most important use of compatibility testing is to ensure whether developed software
works under different configurations (as stated in requirements documentation). This testing
is necessary to check whether the application is compatible with the client's environment.
DOMAIN TESTING
Domain testing is a software testing technique in which selecting a small number of test cases
from a nearly infinite group of test cases. For testing few applications, Domain specific
knowledge plays a very crucial role.
Domain testing is a type of functional testing and tests the application by feeding interesting
inputs and evaluating its outputs.
Is domain knowledge needed for domain testing?
Some may say this is not necessary. But it is quite difficult for anyone to perform effectively
or efficiently in a terrain he/she is not conversant with. If one is to do well, therefore, as a
domain tester, there is the need to have basic domain knowledge. Now, let’s look at a few
reasons why this is important.
Online banking: Some of the basic things that a tester needs to test as far as online banking
is concerned are login, bill payment, transfers, and lots more. A tester might require essential
testing knowledge in order to login. However, doing bill payments and transfers require that
the tester has to be an expert in the subject matter. He has to be conversant with the business
logic on money flow.
Retail: Examples of retail domains are Enterprise management, In-store solutions, and
Warehouse management. In order to successfully run a domain test, the tester has to have an
understanding of how things flow at each level. For instance, you need to know some things
regarding a POS before you can successfully run a test on it.
Healthcare system: how would someone who has no knowledge of the system handle it? He
will certainly be a big risk to someone’s life.
Where is domain knowledge needed?
Domain knowledge for effective domain testing is needed in the following key areas:
Mobile application testing
Protocol testing
Network testing
VoIP applications
Wireless application testing
Banking applications
Skills needed for domain testing
If your dream is to be a good domain tester, you need to acquire some important skills. These
skills include
Testing skill
Domain knowledge
Automation skill
Ability to work under pressure
Bug hunting skill
Programming skill
Communication skill
Technical skill
Quick grasping
Conclusion
Domain testing requires that testers should have basic knowledge in the domain they are to
test in order to be able to perform effectively.