A Beginners Guide
A Beginners Guide
software testing
Automate. Accelerate. Deploy Quality.
Get everything you need to know to make educated
decisions around manual testing, automated testing and
software quality management.
1. Introduction to Software Quality
Management (SQM)
The main components of SQM are Quality planning, Quality Assurance (QA), Quality
Control (QC) and software testing.
Quality planning
Software quality management begins during the planning phase when testers
create goals and objectives for the software and create a strategic plan to help
achieve those goals. Quality planning is the backbone of SQM since it establishes
the parameters by which the whole process will be carried out.
The ISTQB® defines quality control as “activities designed to evaluate the quality of
a component or system.” While Quality Assurance is about creating and
maintaining the process that leads to the end-result, QC examines the final
outcome – it looks at the quality of the end-products.
The terms quality assurance and quality control (QC) are often used
interchangeably, albeit incorrectly — as QA is process-oriented and focused on
preventing defects, and QC is product-oriented and focused on identifying defects
– mainly by testing.
Software testing
Software testing is just one subset of Quality Control (QC) and is a process that
assures the quality of software products by testing and validating them before
being released to users. It helps ensure that the end product is of the best quality
based on design, functionality, and specifications and meets defined standards
(such as ISO 9000, CMMI, TMMI, etc.).
In this guide, we’ll focus predominantly on the final aspect of SQM, testing.
On the other hand, automated QA testing uses automation tools to execute test
cases. Therefore, it is more suitable for large-scale testing and helps to speed up
repetitive testing tasks.
There are several industry certifications that organizations can earn to prove that
they meet industry standards and maintain quality practices. Clients also use these
certifications as a way to evaluate software vendors.
In the next section, we'll discuss manual testing in detail — and exactly how you
can use it for specific use cases, including an introduction to using Test Center for
manual testing.
Companies carry out manual software testing to ensure their new applications or
products are free of bugs and defects before being released to the public. It
involves having a Quality Assurance (QA) team interacting with the program as a
user would, reviewing the behavior of software against predefined expected
behavior, and reporting any issues they may find.
If a company was launching an app, for example, then the QA team would have to:
Note: You might come across the term "Gray box testing" — this simply refers to a
combination of Black Box and White Box testing.
Unit testing
Also known as module testing or component testing, unit testing tests each unit or
component of an application's source code to ensure that each function works as
planned. Since it requires a comprehensive understanding of the program's
architecture and code, developers typically execute this type of test — rather than
test engineers. In addition to making error detection and prevention more
straightforward, it also reduces debugging.
System testing
Sometimes referred to as end-to-end testing, system testing is performed after
unit testing and integrating each component to test the system as a whole. It
validates the final application by contrasting it to the initial requirements.
Acceptance testing
Acceptance testing is where the actual end-user verifies that the application
satisfies their needs and meets the agreed-upon requirements — typically in the
last phases of the project.
The project requirements are examined to check for client expectations, what
needs to be done and to know what the expected behavior of the software
should be
A test plan is made
Test cases that meet the requirements and cover various scenarios are created
Test cases are executed to identify any issues
Any issues found are reported and repaired
Once repaired, the failed tests need to be rerun to validate the fixes
Test Center is a centralized, compact platform for managing test results and
integrating testing throughout the entire development cycle.
It comes with a results dashboard that serves as a consolidated hub for storing,
tracking and evaluating test results gathered at every stage in a project's
development. The built-in statistical reporting features also make it easy to assess
the overall health of development projects over time and as they progress.
The test management page has all the necessary information to generate manual
tests, making creating and maintaining tests a breeze.
The text editing feature comes with markdown support, saving time and
eliminating laborious text editing. In addition, attachments and in-line images can
be used, allowing testers easy access to all relevant data and documentation while
carrying out manual tests. Another helpful tool is shared steps, allowing you to
reuse existing stages. This is especially helpful for manual testing that needs
distinct setup procedures.
The execution overview page summarizes the status of all manual tests and how
far along in the cycle they are. Depending on the available testers, manual testing
can also be assigned or reassigned here.
Similarly, testers can utilize this view to see a run-down of all the assigned manual
tests and initiate the manual testing process. Execution overview also enables
completed test cycles to be reviewed and easily rescheduled if they need to be
rerun.
When testers find defects, they can quickly create issues on Jira while doing manual
tests within Test Center. Bugs created during manual testing will be accessible to all
system users. In particular, shared steps ensure that errors discovered in earlier
test runs will also be accessible to other testers.
Next, we'll dive into automated testing, four reasons to use automated testing,
and a run-down of how to use Squish for automated testing.
The script is employed to test for bugs, defects, and any other errors that could
occur during the development of a product. After completing the test, it produces a
report outlining its findings, which can then be compared to the results of previous
tests. The main benefit of automated testing is simplifying manual labor into a set
of scripts that can be executed repetitively at any time of day.
To maximize test automation ROI, you must choose the most suitable tests to be
automated.
Code analysis
Code analysis is the process of checking source code for errors and vulnerabilities.
This can be done with different tools, such as a dynamic or static analysis tool.
Dynamic analysis is performed while the program is running, while static analysis
happens before software testing begins without having to run the program.
Unit tests
Each program's function is tested in a unit test to ensure it functions properly.
This ensures that the software's components have been thoroughly tested before
the final release.
Integration tests
End-to-end tests, commonly referred to as integration tests, determine if the
individual components of your application are functioning correctly. The
application models are integrated and tested to assess how effectively they
perform, allowing communication between modules to be evaluated.
Smoke tests
The purpose of a smoke test is to provide a quick way to get a preliminary
assessment of the software's functionality. If it doesn't pass the assessment, it is
marked as an "unstable build" and returned to the developers. Then, they can
perform more tests to find the problem's source.
One solution for automated testing is (the aptly named) Squish, a tool that offers
functional and visual (GUI) testing capabilities with support for Qt, Java, Web,
Windows, iOs, Android and more.
Squish provides an IDE and a framework that allows you to implement and
automate acceptance testing for GUIs and verify in real-time whether or not an
application complies with its requirements.
It can record test scripts written in JavaScript and other languages and employs
property-based object identification. It has two parts: the runner, which reads and
runs scripts, and the server hooks, which control the application being tested.
Squish features:
Supports all major GUIs frameworks
Full support for PC, mobile, web, and embedded platforms
Test script recording
Strong object ID and verification
Well-integrated environment
Support for behavior-driven development
Full control with command line tools
Squish is easy to use and operate. Users can create test cases with standard
programming languages like Python, JavaScript, Ruby, Perl, and Tcl. They also can
use the Gherkin testing language to test using the Behavior-Driven Development
(BDD) approach.
Squish also supports Qt Widgets, QML, and QtQuick controls in addition to typical
and complicated buttons, menus, lists, tables, and so on. Qt WebKit and Qt Web
Engine-implemented embedded web content are also recognized.
Whether it's Qt and QML controls, models or other objects, Squish makes them all
accessible. Users can also link test-script functions to Qt signals and Qt events so
that a test script can respond to application signals and events.
Squish supports automated testing of basic gestures like touch, flick, swipe, and
more. Pinch and other complicated multi-touch movements are supported too.
The Squish development team has invested a lot of time and energy in testing In-
Vehicle Infotainment (IVI) apps using the Qt IVI module. Both C++ and QML allow
access to these vehicle features. In addition, a core API for adding new IVI
features and bindings to the Qt IVI module for testing vehicle interactions are also
available.
Because Squish can work with many kinds of software developed using advanced
technology, the tool is popular in software development. In addition, it can be used
for a variety of testing methodologies.
For example, Companies can use Squish for user interface testing, functional
testing, regression testing, and keyword-driven testing. Squish can also test
applications on various platforms like Android and Java.
Benefits of Squish
High consistency and minimal redundancy in testing
Excellent reusability and scalability capabilities
Modifiable according to the requirements of integration
High-performance and improved efficiency during the test execution phase
Using a test result management platform, such as Test Center, can enhance both
your test management and reporting capabilities. It helps serve as a centralized,
organized repository of tests and results from all tests.
In Qt Test Center, you can view your automated and manual test suite statistics,
visualize trends and analyze historical data of your test executions with built-in,
automatic statistical reporting of your imported data.
Automated testing methods can help companies overcome these obstacles and
deliver more opportunities for testing in less time.
Test coverage can be increased with automated testing, as unlike manual testing,
automated testing can perform several tests simultaneously, on different setups,
and with varying parameters.
Regression tests: These are extensive, recurring, and dependent on the same
input variables
Data-driven tests: Many functional tests require testing using multiple
divergent data sets to evaluate a range of positive and negative cases
Performance testing suites: Automated testing can be used to speed up the
testing of system performance under varying conditions
API tests: Automated tests find flaws faster since they trigger API regressions
whenever the API is modified
For reliable outcomes, choose frameworks that mesh well with the skillsets of
your team members. For example, JavaScript, Python, Ruby, Tcl and Perl are
often used for test automation frameworks. However, it's best to choose a
framework that your team is most comfortable with to lessen the learning curve.
Similar to frameworks, it's essential to consider your objectives not just for now,
but in the future. For example, will the tool still exist in five years? Are new
releases issued frequently? How about support?
Ultimately, the right tools should help you address your issues and accommodate
your evolving requirements.
You could automate the most-used regression test suite or the longest and most
tedious one. First, identify recurring bugs and eliminate them, then gradually
improve automation to cover more testing areas.
How fast the turnaround time for executing tests is now, compared to before
using the tool
The difference in time spent on creating and revising tests
If the time for developing test suites has been shortened
5. Conclusion
Software testing is not only a requirement, but a critical factor in the market
success of a product, and all future products a company might release.
Implementing a software quality management strategy with a strong focus on
testing ensures that your company will follow best practices and that your final
product will meet or exceed the expectations of your users.