Professional Documents
Culture Documents
The plan identifies the SQA responsibilities of a team, lists the areas that need to be reviewed and
audited. It also identifies the SQA work products.
Page 1 of 22
SQA Activities
Given below is the list of SQA activities:
#1) Creating an SQA Management Plan:
The foremost activity includes laying down a proper plan regarding how the SQA will be carried out in
your project.
Along with what SQA approach you are going to follow, what engineering activities will be carried out,
and it also includes ensuring that you have a right talent mix in your team.
Later, based on the information gathered, the software designer can prepare the project estimation using
techniques like WBS (work breakdown structure), SLOC (source line of codes), and FP(functional point)
estimation.
In this process, a meeting is conducted with the technical staff to discuss regarding the actual quality
requirements of the software and the design quality of the prototype. This activity helps in detecting
errors in the early phase of SDLC and reduces rework effort in the later phases.
This activity is a blend of two sub-activities which are explained below in detail:
(i) Product Evaluation:
This activity confirms that the software product is meeting the requirements that were discovered in the
project management plan. It ensures that the set standards for the project are followed correctly.
Page 2 of 22
By validating the change requests, evaluating the nature of change and controlling the change effect, it is
ensured that the software quality is maintained during the development and maintenance phases.
After this, the QA team should determine the impact of the change which is brought by this defect fix.
They need to test not only if the change has fixed the defect, but also if the change is compatible with the
whole project.
For this purpose, we use software quality metrics which allows managers and developers to observe the
activities and proposed changes from the beginning till the end of SDLC and initiate corrective action
wherever required.
It also checks whatever reported by the team in the status reports were actually performed or not. This
activity also exposes any non-compliance issues.
We often hear that testers and developers often feel superior to each other. This should be avoided as it
can affect the overall project quality.
Page 3 of 22
CMMI level: CMMI stands for Capability maturity model Integration. This model was originated in
software engineering. It can be employed to direct process improvement throughout a project,
department, or an entire organization.
5 CMMI levels and their characteristics are described in the below image:
An organization is appraised and awarded a maturity level rating (1-5) based on the type of appraisal.
Test Maturity Model integration (TMMi): Based on CMMi, this model focuses on maturity levels in
software quality management and testing.
5 TMMi levels are depicted in the below image:
Page 4 of 22
As an organization moves on a higher maturity level, it achieves a higher capability for producing high-
quality products with fewer defects and closely meets the business requirements.
Page 5 of 22
General requirements and design
Functional and Interface specifications
Conventions
Requirement traceability
Structures and interfaces
Logic
Performance
Error handling and recovery
Testability, extensibility
Coupling and cohesion
Simulation: Simulation is a tool that models the real-life situation in order to virtually examine
the behavior of the system under study.
Functional Testing: It is a QA technique which verifies what the system does without
considering how it does. This type of black box testing mainly focuses on testing the system
specifications or features.
Standardization: Standardization plays a crucial role in quality assurance. It decreases the
ambiguity and guesswork, thus ensuring quality.
Static Analysis: It is a software analysis that is done by an automated tool without actually
executing the program. This technique is highly used for quality assurance in medical, nuclear
and aviation software. Software metrics and reverse engineering are some popular forms of static
analysis.
Walkthroughs: Software walkthrough or code walkthrough is a kind of peer review where the
developer guides the members of the development team to go through the product and raise
queries, suggest alternatives, make comments regarding possible errors, standard violations or any
other issues.
Path Testing: It is a white box testing technique where the complete branch coverage is ensured
by executing each independent path at least once.
Stress Testing: This type of testing is done to check how robust a system is by testing it under
heavy load i.e. beyond normal conditions.
Six Sigma: Six Sigma is a quality assurance approach that aims at nearly perfect products or
services. It is widely applied in many fields including software. The main objective of six sigma
is process improvement so that the produced software is 99.76 % defect free.
Conclusion
SQA is an umbrella activity which is employed throughout the software lifecycle.
Software quality assurance is very important for your software product or service to succeed in the
market and survive up to the customer’s expectations.
There are various activities, standards, and techniques that you need to follow to assure that the
deliverable software is of high quality and aligns closely with the business needs.
Page 6 of 22
Types Of Software Testing: Different Testing Types With Details
Last Updated:June 28, 2021
Each of us would have come across several types of testing in our testing journey. We might have heard
some and we might have worked on some, but not everyone has knowledge about all the testing types.
Each type of testing has its own features, advantages, and disadvantages as well. However, in this article,
I have covered mostly each and every type of software testing which we usually use in our day to day
testing life.
Page 7 of 22
o #35) Risk-Based Testing (RBT)
o #36) Sanity Testing
o #37) Security Testing
o #38) Smoke Testing
o #39) Static Testing
o #40) Stress Testing
o #41) System Testing
o #42) Unit Testing
o #43) Usability Testing
o #44) Vulnerability Testing
o #45) Volume Testing
o #46) White Box Testing
Conclusion
Recommended Reading
Different Types Of Software Testing
Given below is the list of some common types of Software Testing:
Functional Testing types include:
Unit Testing
Integration Testing
System Testing
Sanity Testing
Smoke Testing
Interface Testing
Regression Testing
Beta/Acceptance Testing
Non-functional Testing types include:
Performance Testing
Load Testing
Stress Testing
Volume Testing
Security Testing
Compatibility Testing
Install Testing
Recovery Testing
Reliability Testing
Usability Testing
Compliance Testing
Localization Testing
Let’s see more details about these Testing types.
Page 8 of 22
#1) Alpha Testing
It is the most common type of testing used in the Software industry. The objective of this testing is to
identify all possible issues or defects before releasing it into the market or to the user.
Alpha Testing is carried out at the end of the software development phase but before the Beta Testing.
Still, minor design changes may be made as a result of such testing.
Alpha Testing is conducted at the developer’s site. In-house virtual user environment can be created for
this type of testing.
#2) Acceptance Testing
An Acceptance Test is performed by the client and verifies whether the end to end the flow of the system
is as per the business requirements or not and if it is as per the needs of the end-user. Client accepts the
software only when all the features and functionalities work as expected.
It is the last phase of the testing, after which the software goes into production. This is also called User
Acceptance Testing (UAT).
Ad-hoc Testing is an informal way of finding defects and can be performed by anyone in the project. It is
difficult to identify defects without a test case but sometimes it is possible that defects found during ad-
hoc testing might not have been identified using existing test cases.
Page 9 of 22
Beta Testing is carried out to ensure that there are no major failures in the software or product and it
satisfies the business requirements from an end-user perspective. Beta Testing is successful when the
customer accepts the software.
Usually, this testing is typically done by end-users or others. It is the final testing done before releasing
an application for commercial purpose. Usually, the Beta version of the software or product released is
limited to a certain number of users in a specific area.
So end-user actually uses the software and shares the feedback to the company. Company then takes
necessary action before releasing the software to the worldwide.
There are different databases like SQL Server, MySQL, and Oracle, etc. Database Testing involves
testing of table structure, schema, stored procedure, data structure and so on.
In Back-end Testing GUI is not involved, testers are directly connected to the database with proper
access and testers can easily verify data by running a few queries on the database.
There can be issues identified like data loss, deadlock, data corruption etc during this back-end testing
and these issues are critical to fixing before the system goes live into the production environment
Browser Compatibility Testing is performed for web applications and it ensures that the software can run
with the combination of different browser and operating system. This type of testing also validates
whether web application runs on all versions of all browsers or not.
#8) Backward Compatibility Testing
It is a type of testing which validates whether the newly developed software or updated software works
well with the older version of the environment or not.
Backward Compatibility Testing checks whether the new version of the software works properly with file
format created by an older version of the software; it also works well with data tables, data files, data
structure created by the older version of that software.
If any of the software is updated then it should work well on top of the previous version of that software.
Detailed information about the advantages, disadvantages, and types of Black box Testing can be
seen here.
#10) Boundary Value Testing
This type of testing checks the behavior of the application at the boundary level.
Page 10 of 22
Boundary Value Testing is performed for checking if defects exist at boundary values. Boundary Value
Testing is used for testing a different range of numbers. There is an upper and lower boundary for each
range and testing is performed on these boundary values.
If testing requires a test range of numbers from 1 to 500 then Boundary Value Testing is performed on
values at 0, 1, 2, 499, 500 and 501.
Compatibility testing ensures that software can run on a different configuration, different database,
different browsers, and their versions. Compatibility testing is performed by the testing team.
#14) Component Testing
It is mostly performed by developers after the completion of unit testing. Component Testing involves
testing of multiple functionalities as a single code and its objective is to identify if any defect exists after
connecting those multiple functionalities with each other.
#15) End-to-End Testing
Similar to system testing, End-to-End Testing 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.
#16) Equivalence Partitioning
It is a testing technique and a type of Black Box Testing. During this Equivalence Partitioning, a set of
the group is selected and a few values or numbers are picked up for testing. It is understood that all
values from that group generate the same output.
The aim of this testing is to remove redundant test cases within a specific group which generates the
same output but not any defect.
Suppose, the application accepts values between -10 to +10 so using equivalence partitioning the values
picked up for testing are zero, one positive value, one negative value. So the Equivalence Partitioning for
this testing is -10 to -1, 0, and 1 to 10.
Sometimes it may happen that during this testing major defect discovered can even cause a system
failure.
During Exploratory Testing, it is advisable to keep a track of what flow you have tested and what activity
you did before the start of the specific flow.
Page 11 of 22
An Exploratory Testing technique is performed without documentation and test cases.
#20) Functional Testing
This type of testing ignores the internal parts and focuses only on the output to check if it is as per the
requirement or not. It is a Black-box type testing geared to the functional requirements of an application.
For detailed information about Functional Testing click here.
#21) Graphical User Interface (GUI) Testing
The objective of this GUI Testing is to validate the GUI as per the business requirement. The expected
GUI of the application is mentioned in the Detailed Design Document and GUI mockup screens.
The GUI Testing includes the size of the buttons and input field present on the screen, alignment of all
text, tables, and content in the tables.
It also validates the menu of the application, after selecting different menu and menu items, it validates
that the page does not fluctuate and the alignment remains same after hovering the mouse on the menu or
sub-menu.
Load Testing helps to find the maximum capacity of the system under specific load and any issues that
cause software performance degradation. Load testing is performed using tools like JMeter, LoadRunner,
WebLoad, Silk performer, etc.
#28) Monkey Testing
Monkey Testing is carried out by a tester assuming that if the monkey uses the application then how
random input, values will be entered by the Monkey without any knowledge or understanding of the
application.
Page 12 of 22
The objective of Monkey Testing is to check if an application or system gets crashed by providing
random input values/data. Monkey Testing is performed randomly and no test cases are scripted and it is
not necessary to
Monkey Testing is performed randomly and no test cases are scripted and it is not necessary to be aware
of the full functionality of the system.
Recovery Testing determines if the system is able to continue the operation after a disaster. Assume that
application is receiving data through the network cable and suddenly that network cable has been
unplugged.
Sometime later, plug the network cable; then the system should start receiving data from where it lost the
connection due to network cable unplugged.
Page 13 of 22
The priority decision is based on the business need, so once priority is set for all functionalities then high
priority functionality or test cases are executed first followed by medium and then low priority
functionalities.
The low priority functionality may be tested or not tested based on the available time.
The Risk-Based Testing is carried out if there is insufficient time available to test entire software and
software needs to be implemented on time without any delay. This approach is followed only by the
discussion and approval of the client and senior management of the organization.
Security Testing is done to check how the software or application or website is secure from internal and
external threats. This testing includes how much software is secure from the malicious program, viruses
and how secure and strong the authorization and authentication processes are.
It also checks how software behaves for any hackers attack and malicious programs and how software is
maintained for data security after such a hacker attack.
The testing team ensures that the build is stable and a detailed level of testing is carried out
further. Smoke Testing checks that no show stopper defect exists in the build which will prevent the
testing team to test the application in detail.
If testers find that the major critical functionality is broken down at the initial stage itself then testing
team can reject the build and inform accordingly to the development team. Smoke Testing is carried out
to a detailed level of any Functional or Regression Testing.
It involves reviews, walkthrough, and inspection of the deliverables of the project. Static Testing does not
execute the code instead of the code syntax, naming conventions are checked.
Static Testing is also applicable for test cases, test plan, design document. It is necessary to perform static
testing by the testing team as the defects identified during this type of testing are cost-effective from the
project perspective.
#40) Stress Testing
This testing is done when a system is stressed beyond its specifications in order to check how and when it
fails. This is performed under heavy load like putting large number beyond storage capacity, complex
database queries, continuous input to the system or database load.
Page 14 of 22
#41) System Testing
Under System Testing technique, the entire system is tested as per the requirements. It is a Black-box
type Testing that is based on overall requirement specifications and covers all the combined parts of a
system.
#42) Unit Testing
Testing of an individual software component or module is termed as Unit Testing. It is typically done by
the programmer and not by testers, as it requires detailed knowledge of the internal program design and
code. It may also require developing test driver modules or test harnesses.
#43) Usability Testing
Under Usability Testing, User-friendliness check is done. The application flow is tested to know if a new
user can understand the application easily or not, Proper help documented if a user gets stuck at any
point. Basically, system navigation is checked in this testing.
#44) Vulnerability Testing
The testing which involves identifying weakness in the software, hardware and the network is known as
Vulnerability Testing. Malicious programs, the hacker can take control of the system, if it is vulnerable to
such kind of attacks, viruses, and worms.
So it is necessary to check if those systems undergo Vulnerability Testing before production. It may
identify critical defects, flaws in the security.
Page 15 of 22
Prototype Testing: Will It Make Software Testing Easier
Last Updated:June 28, 2021
Understand what is Prototype testing and how to perform it. Review Wondershare Mockitt
Prototyping Tool and see how it helps with Prototype Testing:
Will Prototype Testing make Software Testing easier? To address this question, we must first
understand the concept of a prototype in the context of software development.
A prototype refers to a wireframe or mockup that replicates the functionality of the product under
development. It is not the product and may not resemble the end product at all. However, the functions it
performs will mimic the features of the actual product before it goes into the development stage.
What You Will Learn: [hide]
What Is Prototype Testing
o Prototype Testing: Before And After development
o Process Of Prototype Testing
o How To Test A Prototype
o What To Do With The Output Of Test
o Actions To Perform After Testing
Wondershare Mockitt Prototyping Tool
o Mockitt: Key Feature Highlights
o How To Use Mockitt
o How Can Wondershare Mockitt Help With Prototype Testing
Conclusion
o Recommended Reading
What Is Prototype Testing
Prototype testing is a way to evaluate the viability of a design in terms of how it can achieve the desired
functionalities. It typically involves sharing a clickable prototype with multiple stakeholders so various
functions can be tested comprehensively.
So, how does this tie into software testing as a broader topic?
Software testing is a more detailed and comprehensive testing phase where all aspects of an application
are thoroughly tested against all specifications, not just basic functions. As such, the initial prototype
testing will reveal major flaws before those flaws can be built into the application. It helps avoid
expensive code changes even before the product development cycle begins.
Prototype testing is a valuable component in the overall SDLC because it pre-empts errors from being
translated into code that may have to be rewritten at a later time, which is a waste of resources. Instead,
with this testing, these errors are revealed early on so they can be corrected at the design stage.
Here are some examples of how it can prove useful before and after development:
Pre-Development benefits of Prototype Testing
It helps evaluate the ‘first impression’ about the software.
It allows designers to correct processes and other flaws early on.
It validates the design process behind the functionality.
It reduces the overall cost by capturing errors at an early stage.
Post-Development benefits of Prototype Testing
Major errors in the final software application will have been eliminated or minimized due to this
testing.
Any missing features or functions can be spotted and integrated into the design.
Page 16 of 22
It can help enhance the user experience by allowing the designers to perfect the flow before the
product goes into development.
It’s clear that a design prototype test can provide valuable information to the design team once other
users have tested the design.
But what is the process involved in prototype testing? Let’s take a detailed look at how this type of
testing is actually executed as a process, important factors to keep in mind while testing prototypes, and
the best-case scenario for the output of a design prototype test.
[image source]
How To Test A Prototype
There is a fixed framework for how a prototype should be tested, so it checks all the required boxes. In
fact, the boxes themselves are the first step in preparing an app design for the prototype test.
You can break this down into functional and experiential goals, each of which is tested by the targeted
user. This will give you valuable information about what to change and how to change it when the results
of the test come out.
For example, what age-group will be using the app, what is the ideal monthly income profile or
educational profile of the end-user, and so on. You’ll need to ask questions like ‘how familiar are they
Page 17 of 22
with this general category of product?’, ‘Are my testers already familiar with the OS platform we’re
targeting?’, etc. Once you have defined the user demographic, you can move to the next stage.
#3) Break your testing into specific stages
Also known as staging the prototype, this is a critical component of the testing phase because it gives
users a specific set of functions to test out.
For instance, you may want to test a paper prototype by using information architects to validate the flow
of some features. Alternatively, you may want to test a hi-fi prototype to see what type of user experience
it leads to. This also allows you to be more thorough in your testing because you’re approaching it from a
dual ‘feeling and function’ point of view.
#4) Define the tasks for the testers
Testers often need very specific instructions in terms of what goals they need to accomplish on the
prototype. The ‘just check it out and tell me what you think’ approach does not work here. They need to
know what features to test and what actions to execute within the scope of that feature.
On the UX side, you can ask them to fill out a questionnaire about how they ‘felt’ while using the app.
Doing both these things will give you more comprehensive results that are actually useful. These results
should be able to guide your next steps to improve the experience or refine a particular feature.
In a formal app prototype test, a special space is usually created for users so they can test the app without
any distractions. However, that’s not how the app will be used in real life. Doing A/B testing in this
manner will give you tremendous insights into how an app behaves under different conditions.
For instance, how does an interruption in the mobile network affect a particular feature of the app? Are
the error messages appropriate? Does the app hang and force the user to quit it? These are critical pieces
of information that you normally wouldn’t get under “ideal” test conditions.
#6) Data Gathering and Analysis
How are you collecting data regarding the usability of the prototype? Are you using screen capture
software to track finger contact and other gestures? Are you simply making a recording of the user
testing the app?
These questions will help you outline your data capture mechanisms, how you organize that data, and
how you analyze it so it yields actionable information to improve the user experience and correct flaws in
the app before it goes into development.
As mentioned, the analytics part is very important. Knowing how to interpret the data into action items
will give you a clear picture of what needs to be fixed and what needs improvement. This ‘design
thinking prototype’ approach to testing also gives you insights into how the original design can be
validated through functionality.
In other words, what design improvements can be made to enhance user experience once the problems
have all been fixed? How can the app’s features be more frictionless and easier to use?
Page 18 of 22
Actions To Perform After Testing
After the test results are out and you have analyzed them to arrive at a list of action items, implement
them immediately. If something conflicts with your design thinking, such as a particular function that
doesn’t work the way it should, then go back to the design stage to see where the issue might be in the
process flow.
Doing this in a timely manner is critical because it allows the testing team to coordinate with the design
team in a real-time environment rather than through back-and-forth documentation.
Online design and prototyping platforms such as Wondershare Mockitt and Figma allow you to provide
near-instant feedback and comments on tests so designers can see it as soon as it is available, which
brings us to the choice of platform.
Mockitt is a professional-grade UI design and prototyping platform that runs on the cloud. It is ideally
suited to large projects involving hundreds of screens, and much smaller app prototypes and web design
prototypes.
This flexibility makes it ideal for both small and large design teams as well as in-house designers who
work closely with the development team to test, modify, and finalize the prototype that finally goes into
production mode.
The fast prototyping feature is of particular interest because it makes the design process very responsive
to the output of your prototype testing. Feedback loops are immediate, and testers can add comments for
specific issues they face when testing the prototype. This allows the designer to act quickly to rectify
issues and make improvements to the app design and functionality.
Page 19 of 22
Mockitt is designed with rapid prototyping in mind. You can create complex and interactive clickable
prototypes in much less time than it would take you on most other UI design platforms. It also helps with
prototype testing because of the way the system is built around a collaborative environment.
Here’s an outline of how you can expect to benefit by using Wondershare Mockitt for your UI/UX
design and prototyping needs:
#1) Superior Design Interface with Rich Asset Libraries
The user-friendly browser-based interface gives you what you need within reach at all times. The
generous main canvas area is complemented by a number of useful tools for quick access. Customized
libraries can be created and shared with other team members to ensure consistency across your app
designs.
Prototyping is usually a laborious and painstaking process, but it doesn’t have to be that way. With
Mockitt, prototyping a high-fidelity model is as simple as dragging a link from a widget and dropping it
on the target page or screen state. The link can then be edited to add a gesture and transitions, effects, and
animations, all of which are readily available at your fingertips.
Page 20 of 22
The real-time collaborative environment is perfect for agile teams that constantly face tough deadlines.
Communicate seamlessly within the team as well as with external stakeholders for a robust prototype
testing experience. Flexible access to projects from any connected device and a modern browser. See
everything happen in real-time and provide the vital feedback necessary to move from the initial
prototype to the approved design in the shortest possible time.
Page 21 of 22
Automatic code generation of HTML and style code allows testers to not only view and test the prototype
but also inspect the underlying code. The designer’s time is freed up to focus on the design and
prototyping phases. This clear segregation of roles is essential to the smooth functioning of any design
team, and Mockitt makes it happen.
With Mockitt, all that friction is removed because the developer can log in to their own Mockitt account,
access the shared project, review the code, provide feedback, and download all asset information without
interacting with the designer. In short, the process is smoother and faster.
Conclusion
The design thinking prototype approach helps resolve a lot of issues early on because it focuses not just
on the functionality of the prototype in question but the underlying design philosophy of the brand for
which the asset is being developed.
This makes it easier to align design and functionality to deliver a seamless and superior user experience.
It also allows the prototype testing phase to provide insights into possible new features for the product,
further enhancing user experience.
Page 22 of 22