Professional Documents
Culture Documents
QA process
1. Review of requirements.
2. Test planning / writing test cases.
3. Unit testing.
4. Integration testing.
5. System testing.
6. Performance testing.
7. Security testing.
8. Cross-browser testing / cross-platform testing.
_____________________
Therefore, Quality Assurance and software testing are more than finding bugs in a “the-more-
the-better” mode. The QA team’s mission is to help web developers deliver the product of their
work within the estimated timeline, detecting any issues that might block the successful
operation of the software or even affect the user experience.
Initially, QA helps design and control the development process in a way that prevents serious
issues during the project. To make this happen, QA engineers work on the project together with
other team members (product owner, project manager, business analyst, and dev lead)
throughout the complete software development cycle. The number and the order of QA activities
may vary from project to project, depending heavily on the scope of the work and the project
aims.
Development process
Analysis of requirements
Design
Implementation
Verification or testing
Maintenance
Sensitivity: Internal
QA process
Review of requirements
Test planning / writing test cases
Unit testing
Integration testing
System testing
Performance testing
Security testing
Cross-browser testing / cross-platform testing
Updating test cases
Regression testing
Let’s have a deeper look at QA processes and how they are connected with the development
steps.
QA engineers start their work on the project in parallel with documentation generation. They
review the requirements and documentation for:
completeness
redundancies
clarity
consistency
executability
verifiability
Sensitivity: Internal
The aim is to analyze system architecture and technologies for discrepancies.
For this step, think about using specialized software for documentation review, like Confluence.
You can gather all related documentation which is used throughout the whole project, and
maintain an internal knowledge base. Every team member can see any changes as soon as any
requirements or documents are changed, added, updated, or deleted.
When the requirements have been established, it is time to start planning test cases, i.e. –
describe the actions QA engineers perform to make sure the piece of software functions as
planned. In case the volume of such cases turns to be really significant, you can also use special
tools like TestRail or Zephyr for writing test cases. Both pieces of software allow creation and
modification of tests, and track results using metrics.
When the development stage is finished, the QA team starts running the test cases. The main
goal of this stage is to check whether the solution is developed properly from the technical
perspective and meets the initial product owner’s requirements.
Smoke testing comes first. QA engineers lightly check that the software, or its module,
functions as planned. When passed, the further investigation begins.
Integration testing – verify that different components work as a single system.
Performance testing that includes:
Load testing – check system behavior for normal and expected peak load
Stress testing – determine critical load after which the system breaks down
Sensitivity: Internal
Again, you can choose to automate the testing (e.g., unit testing, regression testing). The general
rule: the longer a project lasts, the more it needs automated tests.
When a QA engineer discovers a bug, he/she records it in a bug tracking system which is also a
project management system. For this purpose, you may use Jira or Redmine, both being highly
configurable software. They enable easy tracking of issues of any level, from a broken login
form to security problems, and all team members can see real-time task updates. This simplifies
communication inside the team and helps keep a clear overview of the improvement process.
Each issue gets a priority level from urgent to low, which the development team then resolves
based on time and people available.
When a developer fixes an issue he/she informs the responsible QA engineers, who verify it. The
ticket in the bug tracking system is closed when no issue is detected. This rule applies: no bug
can be marked as fixed until it is verified.
When using an Agile approach (like in most of our cases), for the short-term web development
projects you can skip steps Review of requirements and Test planning; as on-time delivery of
valuable solutions is more important than perfect documentation. Consequently, QA engineers
can start testing immediately from step three using very simple tools like Google spreadsheet.
Also, some stages of the Development and QA processes can be performed simultaneously to
save time, for example: Analysis and Review of requirements, Implementation & Test planning,
or even Running different types of tests during development. In these parallel stages the testing
activities help measure the success of the corresponding development tasks.
https://kruschecompany.com/quality-assurance-in-projects/
Sensitivity: Internal
QA best practices
Below, we list the most efficient software QA practices you should follow to facilitate your
product quality assurance check.
Let’s find out what software QA best practices mean and what benefits you and your QA team
can get by following them.
Being aware of issues clients want to solve through testing and the criteria they use to assess the
success of testing allows QA engineers to arrange the testing process in accordance with clients’
needs. Moreover, clarifying requirements helps testing specialists estimate the resources required
for testing.
Sensitivity: Internal
Testing priorities
At this point, QA engineers need to get a specification for product functionality and a feature list
with prioritized features to be tested first. Also, QA engineers need to know who the primary
users of the product are and how they’ll use it.
When investigating testing priorities, QA engineers inform clients of the types of testing that are
usually applied to a particular type of product and why so clients can decide on the types of
testing they want to apply to their own software project.
Reporting on results
The QA team needs to know what bugs to report, what information to include in reports, and
what format to use for reports. Also, the client and QA team need to discuss the conditions and
frequency of regression testing and retesting.
Communication
A client and a QA team need to establish a meeting schedule and communication channels. The
client needs to specify who the QA team should contact in case they need to clarify something or
ask for more information regarding the project. Also, the QA team needs to know if the client
requires any non-standard reports such as test descriptions, test reports, or time reports.
One of the biggest advantages of setting testing goals and requirements is that the team can
assess the scope of tasks to perform and plan the testing process accordingly.
Above all, eliciting testing expectations helps both the client and the QA team assess the ability
to attain the client’s goals with the help of testing. Thus, the client shouldn’t have false
expectations and is more likely to be pleased with the results at the end of the testing process.
Understanding a client’s goals and requirements allows QA engineers to deliver results the client
expects and will be satisfied with. This also helps the QA team build a good reputation.
A clear workflow for the QA team is beneficial for the client, as it helps them to be aware of the
full scope of testing tasks, the estimated cost of services, and the timeline for all QA activities.
When the due date for the testing process is clear, the client can plan the release date and build a
marketing campaign.
When testing requirements are clarified, clients can have realistic expectations regarding the
testing process. Thus, testing results are more likely to meet the client’s goals.
Sensitivity: Internal
A well-designed workflow is vital for a successful quality assurance check. Experienced teams
carry out testing in several stages.
First of all, they create a test plan. A quality assurance team needs to create a plan that will guide
the testing process throughout development. In this plan, the team should specify the scope of
tasks for the project, the deadline for completing the testing process, and the price of services.
The next step is to investigate all project requirements to check if they meet quality criteria and
correspond to the product’s business needs. To do this, testing engineers gather information on
the domain of the tested software. This allows them to understand specific requirements the
software product needs to meet.
After that, the QA team moves to functional testing. During this stage, quality assurance
engineers test your product feature by feature to ensure that all functionality works as it’s
supposed to and according to specifications.
To ensure product stability, testing engineers run automated test cases after product updates or
new features are implemented. This process is called regression testing. QA specialists use
regression testing to evaluate the impact of updates on existing functionality and make sure that
new builds don’t cause new bugs or system crashes.
Another vital aspect of an efficient workflow is test reporting. A QA team should provide test
reports that include a summary of testing activities and final testing results after each testing
iteration. Regular test reporting aims to inform stakeholders of the current product quality, make
them aware of testing progress, and provide them with greater control over the quality assurance
process.
Apart from having an established flow of tasks, a QA team needs to set a precise distribution of
roles and responsibilities. One of the most useful tools to distribute tasks efficiently between
team members is a RACI matrix. A RACI matrix assigns responsibilities for completing tasks
and checking others’ deliverables. It also indicates who needs to be consulted or informed about
project-related matters.
A well-developed workflow helps QA engineers know their responsibilities and boosts the
efficiency of the testing process.
By setting a specific workflow with an established scope for all testing tasks, QA teams can
reduce rework and delays that are common issues in both testing and development.
A clear workflow for the QA team is beneficial for the client, as it helps them to be aware of the
full scope of testing tasks, the estimated cost of services, and the timeline for all QA activities. A
Sensitivity: Internal
clear workflow and regular reporting allows clients to establish transparent cooperation with a
QA team and makes the testing process even more productive.
Moreover, a streamlined workflow helps testing engineers cut down on the time required for
testing which, in turn, reduces the time to market and saves money.
Want to outsource software testing tasks? Check out our guide on how to efficiently manage an
offshore QA team.
Performing compliance testing makes a QA team in-demand. Compliance testing requires skills
and knowledge that not every QA specialist has. Thus, if a QA team has the skills to perform
compliance testing, they’ll be attractive to clients.
Laws and regulations are too expensive to neglect. In the first quarter of 2020, European
supervisory authorities issued over 68 administrative fines for neglecting GDPR totaling
approximately €50 million. Compliance testing helps business owners make sure their software
products comply with the requirements of particular domains and avoid enormous fines.
A compliance check helps to ensure that end users’ personal information is safe and sound and
that a security breach is unlikely.
In 2018, companies that violated HIPAA paid $28,683,400 in total penalties. Get a full HIPAA
compliance checklist for your software product and learn how to avoid tremendous fines.
Sensitivity: Internal
Each manual and automated testing approach has its own benefits and nuances. Manual testing
requires test engineers to run test cases manually to identify deviations from the expected
behavior of the tested software and report them to developers.
When using the automated testing approach, tests are performed automatically with the help of
scripts and automation testing tools.
The key to efficient software testing is combining manual and automated approaches rather than
choosing one or the other.
Using both automated and manual testing speeds up the testing process and improves product
quality.
Another advantage is that combining these approaches creates a team with a wide range of skills
and competencies.
Manual and automated testing allow for checking different areas and functionalities of a software
product. Applying both of these approaches increases test coverage, which is one of the metrics
used to evaluate the success of the testing process. A successful quality assurance check should
have between 80% and 100% test coverage.
Automated testing involves creating autotests that can be reused in the future. This facilitates
code modification and support.
RubyGarage uses a combination of manual and automated testing along with other QA best
practices to provide exceptional quality assurance services. Learn more about the types of testing
we use.
Implementing a risk-based testing approach at the early stages of software development helps to
simplify the code architecture and, therefore, makes the product easier to test.
Sensitivity: Internal
When applying a risk-based approach, testing engineers concentrate on the issues most likely to
appear during product use. Thus, it helps to reduce the range of testing activities.
When following a risk-based testing approach, a QA team tests those pieces of functionality that
are more prone to bugs. Thus, you can get a high-quality product even if you don’t have the
resources to check all product functionality.
Regression testing entails creating detailed documentation for running autotests. This
documentation includes system specifications, test designs, bug reports, operator results, and
other software-related information. This information can be used not only by testing engineers
but also by developers and stakeholders.
Another key benefit of frequent regression testing is that it allows testing engineers to make sure
new product features don’t affect the stability of the core software in order to maintain product
quality at a high level.
Updates may bring bugs to a software product. Regression testing helps QA engineers minimize
the number of bugs in a product.
QA engineers use automated tests to speed up quality assurance checks and simplify the software
update process.
Sensitivity: Internal
Identifying and eliminating bugs at the early stages of the SDLC is cheaper than at the final
stages, when product development is almost complete. According to IBM, discovering bugs after
release may be up to 30 times more expensive than discovering them in the design phase.
This approach relies on closer cooperation between the QA team and the team of developers,
giving QA engineers the possibility to influence product development from the very start.
Moreover, this approach facilitates covering a product with tests at the initial stages of the
development process, allowing testing engineers to identify bugs much earlier and improve the
quality of the software.
When starting test activities as early as possible, you need to ensure close cooperation between
your QA and development teams. Close and effective cooperation accelerates the development
process, reduces time to market, and lowers development costs.
https://rubygarage.org/blog/qa-best-practices
Sensitivity: Internal