Try QA Software Testing Notes1-2
Try QA Software Testing Notes1-2
Meets the business and technical requirements that guided it’s design
and development
Works as expected
Can be implemented with the same characteristic.
The process of designing tests early in the life cycle can help to prevent
defects from being introduced in the code. Sometimes it’s referred
as “verifying the test basis via the test design”.
The test basis includes documents such as the requirements and design
specifications.
3) Static Testing: It can test and find defects without executing code. Static
Testing is done during verification process. This testing includes reviewing of the
documents (including source code) and static analysis. This is useful and cost
effective way of testing. For example: reviewing, walkthrough, inspection, etc.
Since we assume that our work may have mistakes, hence we all need to check our
own work. However some mistakes come from bad assumptions and blind spots,
so we might make the same mistakes when we check our own work as we made
when we did it. So we may not notice the flaws in what we have done.
Ideally, we should get someone else to check our work because another person is
more likely to spot the flaws.
There are several reasons which clearly tells us as why Software Testing is
important and what are the major things that we should consider while testing of
any product or application.
While determining the test coverage the test cases should be designed well with
maximum possibilities of finding the errors or bugs. The test cases should be very
effective. This objective can be measured by the number of defects reported per
test cases. Higher the number of the defects reported the more effective are the test
cases.
Once the delivery is made to the end users or the customers they should be able to
operate it without any complaints. In order to make this happen the tester should
know as how the customers are going to use this product and accordingly they
should write down the test scenarios and design the test cases. This will help a lot
in fulfilling all the customer’s requirements.
Software testing makes sure that the testing is being done properly and hence the
system is ready for use. Good coverage means that the testing has been done to
cover the various areas like functionality of the application, compatibility of the
application with the OS, hardware and different types of browsers, performance
testing to test the performance of the application and load testing to make sure
that the system is reliable and should not crash or there should not be any blocking
issues. It also determines that the application can be deployed easily to the machine
and without any resistance. Hence the application is easy to install, learn and use.
When actual result deviates from the expected result while testing a software
application or product then it results into a defect. Hence, any deviation
from the specification mentioned in the product functional specification
document is a defect. In different organizations it’s called differently like
bug, issue, incidents or problem.
When the result of the software application or product does not meet with
the end user expectations or the software requirements then it results into a
Bug or Defect. These defects or bugs occur because of an error in logic or in
coding which results into the failure or unpredicted or unanticipated results.
When a tester finds a bug or defect it’s required to convey the same to the
developers. Thus they report bugs with the detail steps and are called as Bug
Reports, issue report, problem report, etc.
Defect ID – Every bug or defect has it’s unique identification number
Defect Description – This includes the abstract of the issue.
Product Version – This includes the product version of the application in
which the defect is found.
Detail Steps – This includes the detailed steps of the issue with the
screenshots attached so that developers can recreate it.
Date Raised – This includes the Date when the bug is reported
Reported By – This includes the details of the tester who reported the bug
like Name and ID
Status – This field includes the Status of the defect like New, Assigned,
Open, Retest, Verification, Closed, Failed, Deferred, etc.
Fixed by – This field includes the details of the developer who fixed it like
Name and ID
Date Closed – This includes the Date when the bug is closed
Severity – Based on the severity (Critical, Major or Minor) it tells us about
impact of the defect or bug in the software application
Priority – Based on the Priority set (High/Medium/Low) the order of fixing
the defect can be made. (Know more about Severity and Priority)
Not all defects result in failures, some may stay inactive in the code and we may
never notice them. Example: Defects in dead code will never result in failures.
It is not just defects that give rise to failure. Failures can also be caused because of
the other reasons also like:
Because of the environmental conditions as well like a radiation burst, a
strong magnetic field, electronic field or pollution could cause faults in
hardware or firmware. Those faults might prevent or change the execution
of software.
Failures may also arise because of human error in interacting with the
software, perhaps a wrong input value being entered or an output being
misinterpreted.
Finally failures may also be caused by someone deliberately trying to cause
a failure in the system.
Defect: The bugs introduced by programmer inside the code are known as a defect.
This can happen because of some programatical mistakes.
Failure: If under certain circumstances these defects get executed by the tester
during the testing then it results into the failure which is known as software failure.
When tester is executing a test he/she may observe some difference in the
behavior of the feature or functionality, but this not because of the failure.
This may happen because of the wrong test data entered, tester may not be
aware of the feature or functionality or because of the bad environment.
Because of these reasons incidents are reported. They are known as incident
report. The condition or situation which requires further analysis or
clarification is known as incident. To deal with the incidents the
programmer need to to the analysis that whether this incident has occurred
because of the failure or not.
It’s not necessary that defects or bugs introduced in the product are only by
the software. To understand it further let’s take an example. A bug or defect
can also be introduced by a business analyst. Defects present in the
specifications like requirements specification and design specifications can
be detected during the reviews. When the defect or bug is caught during the
review cannot result into failure because the software has not yet been
executed.
These defects or bugs are reported not to blame the developers or any people
but to judge the quality of the product. The quality of product is of utmost
importance. To gain the confidence of the customers it’s very important to
deliver the quality product on time.
Errors in use of the system or product or application may arise because of the
following reasons:
– Inadequate knowledge of the product or the software to the tester. The
tester may not be aware of the functionalities of the product and hence while
testing the product there might be some defects or failures.
Environmental conditions:
Because of the wrong setup of the testing environment testers may report the
defects or failures. As per the recent surveys it has been observed that about 40%
of the tester’s time is consumed because of the environment issues and this has a
great impact on quality and productivity. Hence proper test environments are
required for quality and on time delivery of the product to the customers.
Intentional damage:
The defects and failures reported by the testers while testing the product or the
application may arise because of the intentional damage.
Consider an example where an application is not secure and does not check for
SQL Injections. During security testing, testers can inject SQL commands that may
result in the application data or database being corrupted. In this case the
intentional damage would have been caused and reported by the testers.
If this issue is not caught, it could be exploited by hackers who could also inflict
intentional damage.
Errors found in the earlier stages of the development reduce our cost of production.
Hence it’s very important to find the error at the earlier stage. This could be done
by reviewing the specification documents or by walkthrough. The downward flow
of the defect will increase the cost of production.
– The person using the software application or product may not have enough
knowledge of the product.
– Maybe the software is used in the wrong way which leads to the defects
or failures.
– The developers may have coded incorrectly and there can be defects present in
the design.
To know when defects in software testing arise, let us take a small example with a
diagram as given below.
We can see that Requirement 1 is implemented correctly – we understood the
customer’s requirement, designed correctly to meet that requirement, built
correctly to meet the design, and so deliver that requirement with the right
attributes: functionally, it does what it is supposed to do and it also has the
right non-functional attributes, so it is fast enough, easy to understand and so on.
The defects introduced in Requirement 3 are harder to deal with; we built exactly
what we were told to but unfortunately the designer made some mistakes so there
are defects in the design. Unless we check against the requirements definition, we
will not spot those defects during testing. When we do notice them they will be
hard to fix because design changes will be required.
The bug has different states in the Life Cycle. The Life cycle of the bug can be
shown diagrammatically as follows:
1) Severity
2) Priority
1) Severity:
It is the extent to which the defect can affect the software. In other words it defines
the impact that a given defect has on the system. For example: If an application or
web page crashes when a remote link is clicked, in this case clicking the remote
link by an user is rare but the impact of application crashing is severe. So the
severity is high but priority is low.
2) Priority:
Priority defines the order in which we should resolve a defect. Should we fix it
now, or can it wait? This priority status is set by the tester to the developer
mentioning the time frame to fix the defect. If high priority is mentioned then the
developer has to fix it at the earliest. The priority status is set based on the
customer requirements. For example: If the company name is misspelled in the
home page of the website, then the priority is high and severity is low to fix it.
Few very important scenarios related to the severity and priority which are
asked during the interview:
High Priority & High Severity: An error which occurs on the basic functionality
of the application and will not allow the user to use the system. (Eg. A site
maintaining the student details, on saving record if it, doesn’t allow to save the
record then this is high priority and high severity bug.)
High Priority & Low Severity: The spelling mistakes that happens on the cover
page or heading or title of an application.
High Severity & Low Priority: An error which occurs on the functionality of the
application (for which there is no workaround) and will not allow the user to use
the system but on click of link which is rarely used by the end user.
Low Priority and Low Severity: Any cosmetic or spelling issues which is within
a paragraph or in the report (Not on cover page, heading, title).
5) Pesticide paradox: If the same kinds of tests are repeated again and again,
eventually the same set of test cases will no longer be able to find any new bugs.
To overcome this “Pesticide Paradox”, it is really very important to review the test
cases regularly and new and different tests need to be written to exercise different
parts of the software or system to potentially find more defects.
7) Absence – of – errors fallacy: If the system built is unusable and does not fulfil
the user’s needs and expectations then finding and fixing defects does not help.
ISO 8402-1986 standard defines quality as “the totality of features and
characteristics of a product or service that bears its ability to satisfy stated or
implied needs.”
It is very important to have a good design. The application or product should meet
all the requirement specifications and at the same time it should be user friendly.
The customers are basically attracted by the good looks and style of the
application. The right color combinations, font size and the styling of the texts and
buttons are very important.
After we have tested for all the features and their functionalities it also very
important that the application or product should be reliable. For example: There is
an application of saving the students records. This application should save all the
students records and should not fail after entering 100 records. This is called
reliability.
Consistency:
The software should have consistency across the application or product. Single
software can be multi dimensional. It is very important that all the different
dimensions should behave in a consistent manner.
The software should be durable. For example if software is being used for a year
and the number of data has exceed 5000 records then it should not fail if number of
records increases. The software product or application should continue to behave in
the same way without any functional breaks.
Once the product is shipped to the customers then maintenance comes into the
picture. It is very important to provide good sales services to keep the customers
happy and satisfied. For example if after using the product for six months the
customer realizes to make some changes to the application then those changes
should be done as fast as possible and should be delivered to the customers on time
with quality.
It’s always important to deliver the product to the customers which have value for
money. The product should meet the requirement specifications. It should work as
expected, should be user friendly. We should provide good services to the
customers. Other than the features mentioned in the requirement specifications
some additional functionality could be given to the customers which they might
not have thought of. These additional functionalities should make their product
more user friendly and easy to use. This also adds value for money.
Chapter 2. Testing throughout the testing lifecycle
Sof
tware verification and validation
It answers the questions like: Am I building the product right?
Am I accessing the data right (in the right place; in the right way).
It is a Low level activity
Performed during development on key artifacts, like walkthroughs, reviews
and inspections, mentor feedback, training, checklists and standards.
Demonstration of consistency, completeness, and correctness of the software
at each stage and between each stage of the development life cycle.
1. Verification helps in lowering down the count of the defect in the later
stages of development.
2. Verifying the product at the starting phase of the development will help in
understanding the product in a better way.
3. It reduces the chances of failures in the software application or product.
4. It helps in building the product as per the customer specifications and needs.
Validation is done at the end of the development process and takes place
after verifications are completed.
It answers the question like: Am I building the right product?
Am I accessing the right data (in terms of the data required to satisfy the
requirement).
It is a High level activity.
Performed after a work product is produced against established criteria
ensuring that the product integrates correctly into the environment.
Determination of correctness of the final software product by a development
project with respect to the user needs and requirements.
Softwar
e verification and validation
A product can pass while verification, as it is done on the paper and no running or
functional application is required. But, when same points which were verified on
the paper is actually developed then the running application or product can fail
while validation. This may happen because when a product or application is build
as per the specification but these specifications are not up to the mark hence they
fail to address the user requirements.
Advantages of Validation:
Validation is basically done by the testers during the testing. While validating the
product if some deviation is found in the actual result from the expected result then
a bug is reported or an incident is raised. Not all incidents are bugs. But all bugs
are incidents. Incidents can also be of type ‘Question’ where the functionality is
not clear to the tester.
Hence, validation helps in unfolding the exact functionality of the features and
helps the testers to understand the product in much better way. It helps in making
the product more user friendly.
A place to start
The benefit of a community’s prior experiences
A common language and a shared vision
A framework for prioritizing actions
A way to define what improvement means for your organization
In CMMI models with a staged representation, there are five maturity levels
designated by the numbers 1 through 5 as shown below:
1. Initial
2. Managed
3. Defined
4. Quantitatively Managed
5. Optimizing
Maturity levels
consist of a predefined set of process areas. The maturity levels are measured by
the achievement of the specific and generic goals that apply to each predefined set
of process areas. The following sections describe the characteristics of each
maturity level in detail.
Software life cycle models describe phases of the software cycle and the order in
which those phases are executed. Each phase produces deliverables required by the
next phase in the life cycle. Requirements are translated into design. Code is
produced according to the design which is called development phase. After coding
and development the testing verifies the deliverable of the implementation phase
against requirements. The testing team follows Software Testing Life Cycle
(STLC) which is similar to the development cycle followed by the development
team.
There are following six phases in every Software development life cycle model:
2) Design: In this phase the system and software design is prepared from the
requirement specifications which were studied in the first phase. System Design
helps in specifying hardware and system requirements and also helps in defining
overall system architecture. The system design specifications serve as input for the
next phase of the model.
In this phase the testers comes up with the Test strategy, where they mention what
to test, how to test.
3) Implementation / Coding: On receiving system design documents, the work
is divided in modules/units and actual coding is started. Since, in this phase the
code is produced so it is the main focus for the developer. This is the longest phase
of the software development life cycle.
As soon as the product is given to the customers they will first do the beta testing.
If any changes are required or if any bugs are caught, then they will report it to the
engineering team. Once those changes are made or the bugs are fixed then the final
deployment will happen.
6) Maintenance: Once when the customers starts using the developed system then
the actual problems comes up and needs to be solved from time to time. This
process where the care is taken for the developed product is known as
maintenance.
The selection of model has very high impact on the testing that is carried out. It
will define the what, where and when of our planned testing, influence regression
testing and largely determines which test techniques to use.
1. Waterfall model
2. V model
3. Incremental model
4. RAD model
5. Agile model
6. Iterative model
7. Spiral model
8. Prototype model
Choosing right model for developing of the software product or application is very
important. Based on the model the development and testing processes are carried
out.
Different companies based on the software application or product, they select the
type of development model whichever suits to their application. But these days in
market the ‘Agile Methodology‘ is the most used model. ‘Waterfall Model‘ is the
very old model. In ‘Waterfall Model’ testing starts only after the development is
completed. Because of which there are many defects and failures which are
reported at the end. So,the cost of fixing these issues are high. Hence, these days
people are preferring ‘Agile Model’. In ‘Agile Model’ after every sprint there is a
demo-able feature to the customer. Hence customer can see the features whether
they are satisfying their need or not.
Likewise ‘Incremental model’, ‘RAD model’, ‘Iterative model’ and ‘Spiral model’
are also used based on the requirement of the customer and need of the product.
Start learning about the models with Waterfall model and its advantages and
disadvantages.
The Waterfall Model was first Process Model to be introduced. It is also referred to
as a linear-sequential life cycle model. It is very simple to understand and use.
In a waterfall model, each phase must be completed fully before the next phase can
begin. This type of software development model is basically used for the for the
project which is small and there are no uncertain requirements. At the end of each
phase, a review takes place to determine if the project is on the right path and
whether or not to continue or discard the project. In this model software
testing starts only after the development is complete. In waterfall model
phases do not overlap.
Diagram of Waterfall-model:
Advantages of waterfall model:
This model is used only when the requirements are very well known, clear
and fixed.
Product definition is stable.
Technology is understood.
There are no ambiguous requirements
Ample resources with required expertise are available freely
The project is short.
Very less customer interaction is involved during the development of the product.
Once the product is ready then only it can be demoed to the end users. Once the
product is developed and if any failure occurs then the cost of fixing such issues
are very high, because we need to update everywhere from document till the logic.
Diagram of V-model:
The various phases of the V-model are as follows:
Requirements like BRS and SRS begin the life cycle model just like the waterfall
model. But, in this model before development is started, a system test plan is
created. The test plan focuses on meeting the functionality specified in the
requirements gathering.
The implementation phase is, again, where all coding takes place. Once coding is
complete, the path of execution continues up the right side of the V where the test
plans developed earlier are now put to use.
Advantages of V-model:
Disadvantages of V-model:
For example:
Generates working software quickly and early during the software life cycle.
This model is more flexible – less costly to change scope and requirements.
It is easier to test and debug during a smaller iteration.
In this model customer can respond to each built.
Lowers initial delivery cost.
Easier to manage risk because risky pieces are identified and handled during
it’d iteration.
This model can be used when the requirements of the complete system are
clearly defined and understood.
Major requirements must be defined; however, some details can evolve with
time.
There is a need to get a product to the market early.
A new technology is being used
Resources with needed skill set are not available
There are some high risk features and goals.
What is RAD model- advantages,
disadvantages and when to use it?
RAD model is Rapid Application Development model. It is a type of incremental
model. In RAD model the components or functions are developed in parallel as if
they were mini projects. The developments are time boxed, delivered and then
assembled into a working prototype. This can quickly give the customer
something to see and use and to provide feedback regarding the delivery and their
requirements.
Diagram of RAD-Model:
RAD should be used when there is a need to create a system that can be
modularized in 2-3 months of time.
It should be used if there’s high availability of designers for modeling and
the budget is high enough to afford their cost along with the cost of
automated code generating tools.
RAD SDLC model should be chosen only if resources with high business
knowledge are available and there is a need to produce the system in a short
span of time (2-3 months).
When new changes are needed to be implemented. The freedom agile gives
to change is very important. New changes can be implemented at very little
cost because of the frequency of new increments that are produced.
To implement a new feature the developers need to lose only the work of a
few days, or even only hours, to roll back and implement it.
Unlike the waterfall model in agile model very limited planning is required
to get started with the project. Agile assumes that the end users’ needs are
ever changing in a dynamic business and IT world. Changes can be
discussed and features can be newly effected or removed based on feedback.
This effectively gives the customer the finished system they want or need.
Both system developers and stakeholders alike, find they also get more
freedom of time and options than if the software was developed in a more
rigid sequential way. Having options gives them the ability to leave
important decisions until more or better data or even entire hosting programs
are available; meaning the project can continue to move forward without
fear of reaching a sudden standstill.
You can refer to our introduction to Agile Methodology if you would like to
understand Agile better however, the above information is sufficient for the ISTQB
Foundation Level exam.
For example:
Evaluation phase: This phase allows the customer to evaluate the output of the
project to date before the project continues to the next spiral.
The prototype are usually not complete systems and many of the details are not
built in the prototype. The goal is to provide a system with overall functionality.
Prototype model should be used when the desired system needs to have a lot
of interaction with the end users.
Typically, online systems, web interfaces have a very high amount of
interaction with end users, are best suited for Prototype model. It might take
a while for a system to be built that allows ease of use and needs minimal
training for the end user.
Prototyping ensures that the end users constantly work with the system and
provide a feedback which is incorporated in the prototype to result in a
useable system. They are excellent for designing good human computer
interface systems.
What are Software Testing Levels?
Testing levels are basically to identify missing areas and prevent overlap and
repetition between the development life cycle phases. In software development life
cycle models there are defined phases like requirement gathering and analysis,
design, coding or implementation, testing and deployment. Each phase goes
through the testing. Hence there are various levels of testing. The various levels of
testing are:
1. Unit testing: It is basically done by the developers to make sure that their
code is working fine and meet the user specifications. They test their piece
of code which they have written like classes, functions, interfaces and
procedures.
2. Component testing: It is also called as module testing. The basic difference
between the unit testing and component testing is in unit testing the
developers test their piece of code but in component testing the whole
component is tested. For example, in a student record application there are
two modules one which will save the records of the students and other
module is to upload the results of the students. Both the modules are
developed separately and when they are tested one by one then we call this
as a component or module testing.
3. Integration testing: Integration testing is done when two modules are
integrated, in order to test the behavior and functionality of both the
modules after integration. Below are few types of integration testing:
Method Used for unit testing: White Box Testing method is used for executing
the unit test.
When Unit testing should be done?
1. Issues are found at early stage. Since unit testing are carried out by developers
where they test their individual code before the integration. Hence the issues can be
found very early and can be resolved then and there without impacting the other
piece of codes.
2. Unit testing helps in maintaining and changing the code. This is possible by
making the codes less interdependent so that unit testing can be executed. Hence
chances of impact of changes to any other code gets reduced.
3. Since the bugs are found early in unit testing hence it also helps in reducing the
cost of bug fixes. Just imagine the cost of bug found during the later stages of
development like during system testing or during acceptance testing.
4. Unit testing helps in simplifying the debugging process. If suppose a test fails
then only latest changes made in code needs to be debugged.
Component testing is also known as module and program testing. It finds the
defects in the module and verifies the functioning of software.
Component testing is done by the tester.
Component testing may be done in isolation from rest of the system
depending on the development life cycle model chosen for that particular
application. In such case the missing software is replaced
by Stubs and Drivers and simulate the interface between the software
components in a simple manner.
Let’s take an example to understand it in a better way. Suppose there is an
application consisting of three modules say, module A, module B and
module C. The developer has developed the module B and now wanted to
test it. But in order to test the module B completely few of it’s
functionalities are dependent on module A and few on module C. But the
module A and module C has not been developed yet. In that case to test the
module B completely we can replace the module A and module C by stub
and drivers as required.
Stub: A stub is called from the software component to be tested. As shown
in the diagram below ‘Stub’ is called by ‘component A’.
Driver: A driver calls the component to be tested. As shown in the diagram
below ‘component B’ is called by the ‘Driver’.
Component testing plays a very important role in finding the bugs. Before we start
with the integration testing it’s always preferable to do the component testing in
order to ensure that each component of an application is working effectively.
In this approach development and testing can be done together so that the
product or application will be efficient and as per the customer
specifications.
Incremental testing:
Another extreme is that all programmers are integrated one by one, and a
test is carried out after each step.
The incremental approach has the advantage that the defects are found early
in a smaller assembly when it is relatively easy to detect the cause.
A disadvantage is that it can be time-consuming since stubs and drivers have
to be developed and used in the test.
Within incremental integration testing a range of possibilities exist, partly
depending on the system architecture.
In this approach individual modules are not integrated until and unless all
the modules are ready.
In Big Bang integration testing all the modules are integrated without
performing any integration testing and then it’s executed to know whether
all the integrated modules are working fine or not.
This approach is generally executed by those developers who follows the
‘Run it and see’ approach.
Because of integrating everything at one time if any failures occurs then it
become very difficult for the programmers to know the root cause of that
failure.
In case any bug arises then the developers has to detach the integrated
modules in order to find the actual cause of the bug.
Another advantage is that all programs are integrated one by one and a test
is carried out after each step.
A disadvantage is that it can be time-consuming since stubs and drivers have
to be developed and used in the test.
Within incremental integration testing a range of possibilities exist, partly
depending on the system architecture:
This test takes place at the developer’s site. Developers observe the users
and note problems.
Alpha testing is testing of an application when development is about to
complete. Minor design changes can still be made as a result of alpha
testing.
Alpha testing is typically performed by a group that is independent of the
design team, but still within the company, e.g. in-house software test
engineers, or software QA engineers.
Alpha testing is final testing before the software is released to the general
public. It has two phases:
The goal of beta testing is to place your application in the hands of real
users outside of your own engineering team to discover any flaws or issues
from the user’s perspective that you would not want to have in your final,
released version of the application. Example: Microsoft and many other
organizations release beta versions of their products to be tested by users.
Closed beta versions are released to a select group of individuals for a user
test and are invitation only, while
Open betas are from a larger group to the general public and anyone
interested. The testers report any bugs that they find, and sometimes
suggest additional features they think should be available in the final
version.
You have the opportunity to get your application into the hands of users
prior to releasing it to the general public.
Users can install, test your application, and send feedback to you during
this beta testing period.
Your beta testers can discover issues with your application that you may
have not noticed, such as confusing application flow, and even crashes.
Using the feedback you get from these users, you can fix problems before it
is released to the general public.
The more issues you fix that solve real user problems, the higher the
quality of your application when you release it to the general public.
Having a higher-quality application when you release to the general public
will increase customer satisfaction.
These users, who are early adopters of your application, will generate
excitement about your application.
Depending on its objectives, testing will be organized differently. Hence there are
four software test types:
1. Functional testing
2. Non-functional testing
3. Structural testing
4. Change related testing
The techniques used for functional testing are often specification-based. Testing
functionality can be done from two perspective:
Reliability testing
Usability testing
Efficiency testing
Maintainability testing
Portability testing
Baseline testing
Compliance testing
Documentation testing
Endurance testing
Load testing
Performance testing
Compatibility testing
Security testing
Scalability testing
Volume testing
Stress testing
Recovery testing
Internationalization testing and Localization testing
1.Modeling
2.Measurement
3. Improvement
In usability testing basically the testers tests the ease with which the user
interfaces can be used. It tests that whether the application or the product built is
user-friendly or not.
Usability test can be modified to cover many other types of testing such
as functional testing, system integration testing, unit testing, smoke
testing etc.
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 discovering 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 issues or
problems.
It is internal in the organization how much resources were consumed how much of
these resources were utilized.
It basically defines that how easy it is to maintain the system. This means that how
easy it is to analyze, change and test the application or product.
It refers to the process of testing the ease with which a computer software
component or application can be moved from one environment to another, e.g.
moving of any application from Windows 2000 to Windows 10. This is usually
measured in terms of the maximum amount of effort permitted. Results are
measured in terms of the time required to move the software and complete the and
documentation updates.
Being able to move software from one machine platform to another either initially
or from an existing environment. It refers to system software or application
software that can be recompiled for a different platform or to software that is
available for two or more different platforms.
The iterative and incremental development cycle implies that portability testing is
regularly performed in an iterative and incremental manner.
Example:
Let’s assume that there is an application which maintains the details of all the
students in school. This application has four buttons Add, Save, Delete and
Refresh. All the buttons functionalities are working as expected.
Recently a new button ‘Update’ is added in the application. This ‘Update’ button
functionality is tested and confirmed that it’s working as expected. But at the same
time it becomes very important to know that the introduction of this new button
should not impact the other existing buttons functionality.
Along with the ‘Update’ button all the other buttons functionality are tested in
order to find any new issues in the existing code. This process is known as
regression testing.
It helps us to make sure that any changes like bug fixes or any
enhancements to the module or application have not impacted the existing
tested code.
It ensures that the bugs found earlier are NOT creatable.
Regression testing can be done by using the automation tools
It helps in improving the quality of the product.
Disadvantages of Regression testing:
In structural testing the testers are required to have the knowledge of the
internal implementations of the code. Here the testers require knowledge
of how the software is implemented, how it works.
First one is, testing the changes that has been made because of the
correction in the system or if the system is extended or because of some
additional features added to it.
Second one is regression tests to prove that the rest of the system has not
been affected by the maintenance work.
It tells us about the parts of the system that may be unintentionally affected
because of the change in the application and therefore need careful regression
testing. This decision is taken together with the stakeholders.