Building an Effective Quality Assurance Process for Your Project

Maria Golubeva
JAGAAD Digital Solutions
12 min readOct 6, 2023

Hello to all aspiring and practicing professionals! After 6 years of working as a QA engineer on projects of various scales and complexities, I realized that I have something more valuable than just skills — it’s the accumulated experience and unique expertise.

My experience spans everything from working in small teams where I was the only QA engineer participating in large-scale projects with a dedicated testing team. I also have experience in establishing processes for newly emerging projects and projects that have existed for years without any testing.

My goal is to share this multifaceted experience and help other QA engineers, project managers, and anyone involved in creating quality products navigate the world of quality assurance in projects. I believe that even the smallest piece of advice can help someone make their project better.

Why Product Quality Assurance Matters

  • Ensuring high product quality is a key factor in customer satisfaction.
    Customers who get a product that exceeds their expectations build lasting relationships and positive referrals.
  • Quality assurance aids in risk mitigation by identifying and addressing issues and defects in early development phases.
  • QA helps save a company’s resources by preventing errors and defects, which would require significantly more time and resources to fix after project completion.
  • High-quality products enhance your company’s market competitiveness, as customers consistently seek products and services that deliver excellence.
  • Maintaining stakeholder trust and support necessitates managing your project with a quality-focused approach, meeting the expectations of investors and partners.
  • Effective QA prevents negative scenarios such as unhappy customers, product returns, and legal consequences, which can result from inadequate quality assurance.
  • Companies renowned for quality products or services often enjoy an improved industry reputation, drawing more customers and opportunities.

How to Initiate Your Workflow as a QA Engineer on Projects with Diverse Input Data

Jagaad team meeting

Where to Begin in a Newly Formed Team

When a QA engineer joins a team embarking on the development of a new product, they play a critical role in securing the future product’s quality. Here are the initial steps to kickstart the process:

  1. Understanding the product and goals
  • Start with a deep understanding of the planned product, its goals, and its purpose.
  • Participate in meetings with the team, stakeholders, and business analysts to gain a clear understanding of the project.

2. Study requirements

  • Actively study project requirements. This will allow you to understand what the product’s features should be and what the customer’s expectations are.
  • Ask questions and clarify requirements if something is unclear.

Where to Begin on a Project with an Existing QA Team

When you start working on a project where there is already a testing team, you should take certain steps to successfully integrate and start your activities. Here’s what you can do:

  1. Meet the team
  • Communication and building relationships will help you ease into the work process.
  • Find out how roles and responsibilities are distributed within the testing team.

2. Review documentation

  • Review available documentation, including test plans, test cases, product requirements, and any previous test reports.
  • Read previous defect reports and testing history if available.

3. Understand processes

  • Learn the testing processes that are used on the project. This includes methodology (e.g. Agile, Waterfall), testing tools, and techniques.
  • Get to know the bug management and testing tools used by the team.

4. Negotiate your role

  • Clarify your role in the testing team. Determine what tasks and responsibilities you will be assigned.
  • Discuss the expectations and goals of your testing contribution with project management.

5. Allocate time for education

  • If the project uses new tools or methodologies, take the time to train and learn about them.

6. Engage actively in testing

7. Ask questions and share feedback

  • Feel free to ask questions and discuss issues that may arise during testing.
  • Provide feedback on processes and product quality.

8. Ensure compliance with procedures

  • Ensure that you follow the established testing procedures and standards that are accepted on the project.

Where to Begin on a Project Where Product Quality Assurance Has Never Been Implemented

Starting work on a project with no previous product quality assurance can be challenging and require communication and collaboration skills, but it also provides you with the opportunity to create and implement effective testing processes. Here are the steps to help you get started:

  1. Understand the product
  • Start with a deep understanding of the product that is being developed. Review the product description, requirements, and project goals.
  • Immerse yourself in documentation and understanding the business context.
  • Participate in meetings with the development team, business analysts, and the customer to gain a complete understanding of the project.

2. Analyse existing information

  • Evaluate if there are any documents or data about previous work on the product. This may include bug reports, user feedback, and other artifacts.

3. Run exploratory testing

  • Conduct testing and research following developed scenarios. Pay attention to unusual situations, unexpected product reactions, and subtle defects.

4. Analyse existing processes

  • Analyze existing development and defect detection processes (if any) and identify their strengths and weaknesses.
  • Consider what processes and tools are used on the project.

5. Meet the development team

  • Book meetings with development team members including PM, Scrum master, developers, designers, architects, and product owner. Discuss their expectations and needs for quality assurance.

6. Establish connections

  • Establish positive working relationships with development team members. Strive for cooperation and mutual understanding.

7. Offer your expertise and train the team

  • Support the development team in understanding the importance of product quality assurance and collaboration with you.
  • Share your experience and knowledge in the field of quality assurance. Offer your help and support to the development team to improve processes.
Jagaad team living and working together from Tenerife

Quality Assurance Activities

QA Engineer Activities encompass a wide range of tasks and responsibilities aimed at ensuring the quality and reliability of software and applications.

Recommendations may vary depending on the methodology and specifics of the project, but in general terms, I want to share with you the following activities:

  1. Study requirements.
  2. Test planning.
  3. Creation of test scenarios.
  4. Test data management.
  5. Test environment setup.
  6. Testing and defect detection, retesting.
  7. Results reporting.
  8. Feedback.
  9. Testing automation (if possible and necessary).
  10. Collaboration with stakeholders.
  11. Monitoring and improvements.
  12. Participation in risk management.
  13. Release and deployment support.
  14. Quality Assurance metrics.
  15. Test process improvement.

Testing Phases

The phases of testing a software product include the following steps:

  1. Requirements analysis.
  2. Test planning.
  3. Test design.
  4. Test data preparation.
  5. Test execution.
  6. Defect management.
  7. Test closure and reporting.
Testing Phases

Next, I will go into each stage in more detail.

Requirements Analysis

Absolutely, comprehending the project requirements is a fundamental step in ensuring quality for a project.

Briefly why this is important:

  • Basis for planning.
  • Setting expectations.
  • Development of testing criteria.
  • Risk identification.
  • Reducing errors.
  • Improved communication.

I covered this topic in greater detail in my previous article, which you can read by following the link — Key Concepts of Requirements Testing.

Test Planning

I will share with you general guidelines and principles that can be applied when planning testing:

  1. Define testing goals
  • Clear definition of the goals that must be achieved through testing.

2. Identify test objects

  • They are determining which parts of the product will be tested, including functionality, interfaces, integrations, performance, and other aspects.

3. Select testing methodology

  • Deciding which testing methodologies will be used, such as Waterfall, Agile, or others.

4. Determine testing levels and types

  • Define different levels of testing such as unit, integration, and system, and select test types such as functional, non-functional, performance, etc.

5. Establish completion criteria

  • Defining the criteria that will determine when testing is complete. This could be, for example, the percentage of code coverage by tests, the number of defects detected and corrected, or the execution of certain scenarios.

6. Determine resources and schedule

  • Personnel, equipment, tools, and schedule.

7. Plan test environments and data

8. Test automation (if necessary)

  • Determine which tests will be automated and develop an automation plan.

9. Organize defect management process

  • Defining procedures for recording, tracking, and managing defects found during testing.

10. Communicate and document

  • Define procedures for communicating with stakeholders, making changes to the test plan, and documenting all aspects of planning.

11. Submit the test plan for approval

  • Coordination and approval of the test plan with stakeholders, including project management and the customer.

These steps may vary depending on the specific requirements and project methodology, but they represent a general standard.

Test Design

Test case design is crucial, in determining how to test specific functionality in an application, utilizing various techniques for comprehensive coverage. Here are the steps and guidelines:

  1. Identify test cases
  • Identify the different situations and conditions under which the feature must be tested. These may be different input options, different execution paths, and different combinations of parameters.

2. Use test design techniques

Numerous test design techniques aid in creating effective test cases and ensuring comprehensive test coverage. Here are some common ones:

  • Equivalence partitioning: this technique categorizes inputs into equivalence classes based on expected program behavior and generates test cases for each class.
  • Boundary value analysis: boundary values are data values at input boundaries. This technique tests values near boundaries to uncover associated errors.
  • Decision tree testing: this technique uses decision trees to design test cases, covering various system execution paths.
  • Combinatorial testing: this technique generates test cases for all input parameter combinations, ideal for complex functionality testing.
  • Decision table testing: this technique models input combinations and their impact on function outcomes using a matrix.
  • State transition testing: used to test applications with states and transitions, testers simulate these to create tests covering various state change scenarios.
  • Risk-based testing: this technique prioritizes test cases based on risk, focusing on critical aspects of the application.
  • Pairwise testing: this technique generates test cases covering all pairs of parameters without testing each combination individually.

3. Describe test scenarios

Each test case consists of base elements:

  • Scenario summary: a brief description of the functionality being tested.
  • Execution steps: the sequence of actions that the tester must perform.
  • Expected result/results: what is expected to be seen after completing the steps/each step.
Test Case example using Testiny

A test case can also include priority, type, pre-conditions, test data, and post-condition information.

5. Evaluate test coverage

Make sure your test cases cover all important aspects of the function, including normal and abnormal behavior.

6. Document and update tests regularly

Document your test cases so that they are available to all members of the testing and development team. Test cases should be updated regularly to reflect changes in requirements and functionality during product development.

Here are some of the most popular tools for storing test scripts:

Test Data Preparation

Test data preparation is crucial, covering various aspects of application functionality. Examples of test data types include:

  1. User data
  • Valid registration and login information (username, password, email address).
  • Invalid data to check error handling when entering incorrect credentials (for example, incorrect password or incorrect email address).

2. Data for functional tests

  • Data necessary to check the functionality of the application (for example, for an online store, this could be products, categories, prices).
  • Data for testing business processes (for example, orders, payments, delivery).

3. Security testing data

  • Data specifically created to test the security of the application (for example, SQL injections, scripts, and unauthorized access attempts).

4. Data for checking boundaries and restrictions

  • Data that is on the limits of acceptable values (for example, for fields with length restrictions).
  • Data that exceeds limits (for example, strings that are too long or values that exceed the maximum allowed).

5. Compatibility testing data

  • Various browsers, devices, and operating systems.
  • Various screen resolutions to test responsive design.

6. Performance testing data

  • Test data that stresses the application to test its scalability.

7. Data for testing localization and internationalization

  • Different languages, regions, and cultural settings to check the localization and internationalization of the application.

The tester must also ensure that the data is stored in a secure and confidential manner, especially if it contains confidential information or personal data of users.

Test Execution

This stage is one of the key phases where the test cases are actually executed and the results are recorded. Here are the steps:

  1. Prepare environment
  • Ensure the test environment is configured and ready, including servers, databases, and required resources.

2. Run test scripts

  • Execute test cases according to the initial test plan. This includes executing test script steps, entering test data, and interacting with the application.
Test Execution example in Testiny

3. Monitor and record results

  • While executing test scripts, carefully record the results.
  • This example of a bug report includes reproduction steps, expected behavior, and actual behavior to aid developers in diagnosing and fixing the issue.

An example description of a bug related to the registration process on a website:

Defect report example in Jira

Defect Management

  1. Set priority
  • Prioritize the defect based on its severity and impact on users and the development process.

2. Analyze and distribute defects

  • Regularly analyze defects to determine their importance and urgency of correction.
  • Assign responsible developers or teams to resolve each defect.

3. Track and update status

  • Regularly update the status of defects (open, in progress, resolved, closed, etc.) to reflect the current status and progress in resolving them.
  • Monitor remediation deadlines and reorganize tasks if necessary.

4. Communicate and report

  • Involve the development and management team in the process of tracking and managing defects.
  • Provide regular reports on the current status of defects and their resolution process.

5. Train the team

  • Share the defect management policies and processes with team members.
  • Exchange experiences and best practices.

Test Closure and Reporting

At this stage, share essential product status information with customers and management for informed decision-making and quality assurance. Here are the steps and actions:

  1. Collect test results
  • Collect defect reports, screenshots, logs, and other materials.
  • Make sure that all defects identified during testing are registered in the defect management system and have current statuses.

2. Generate reports

  • Reports may include information about tests performed, the number and priority of defects, test coverage, and other key metrics.
Visualization of test results example in Testiny

3. Make the data analysis

  • Highlight key trends, issues, and risks.

4. Discuss the results

  • Conduct a meeting to discuss test results with the stakeholders involved.
  • Discuss the degree of acceptability of the product and the need to correct any defects found.

5. Request feedback

  • Request feedback from stakeholders about product quality and testing process. So next time you can improve and fit their expectations better.

Concluding the testing phase and reporting are vital for product quality and project success. Effective communication and timely information aid informed decisions and adaptation during development.

Additional Beneficial Steps

Implement Test Automation

Test automation is important because it improves efficiency, identifies defects faster and more accurately, reduces risks, and saves resources compared to manual testing.

In my articles, I will help you:

Use a Production Monitoring System

I shared one of the possible detection activities on a project using the Datadog tool in the Browser Synthetic Test with Datadog article. Following all the steps, you can create a synthetic test that will control your essential E2E scenario in production 24/7 and notify you in case of failure.

Never Stop Educating and Developing Your Skills

Continuous learning is important for QA engineers, as technologies and development methodologies are constantly improving, and in order to remain in demand, specialists need to stay up to date with the latest trends and innovations. In addition, training helps develop professional skills, improve the quality of work, and increase career opportunities.

There are many platforms you can use to improve your skills, like:

Testing Communities to join:

Perform at work, unwind at leisure

Building the right quality processes is an integral part of software development. But it is important to remember that static and unchanging processes cannot last long in a rapidly changing industry. Therefore, continuous improvement, experimentation with new tools and practices, as well as a commitment to learning and development should become an important part of company culture. Only in this way will we be able to provide high quality products that meet modern standards and user expectations, and remain successful in an ever-changing market.

--

--

Maria Golubeva
JAGAAD Digital Solutions

Belarusian | QA Engineer in Italian company | Mentor in Tech | Web Automation | Travel lover