December 22, 2020

Implementing Quality Assurance in the Software Development Lifecycle

Neha Dhanotiya |

Knowledge

Software testing is the wholesome process of evaluating a system/product or its component(s) with an intent to find whether it satisfies the specified requirements demanded from users or the client.

Quality Assurance (QA) focuses on improving the overall processes, carving the beauty of the UI/UX designs, in conjunction with sophisticated code development, to deliver quality products to the end-users. Strong QA practices are just as important as user research, interface design, or code development for any client engagement.

In other words, implementing quality assurance in the software development lifecycle is an integral part of any project. It helps to reduce costs by improving efficiency and reducing bugs while greatly enhancing the customer experience.

Quality is not an act, it is a habit.

Why is QA important?

QA helps project teams identify inconsistencies, system errors and feature redundancies in an ever evolving software product. Strong QA processes are essential for any successful software project, following are top reasons

  • Prevention of major failures in production applications.
  • Damage to brand value resulting from poor user experience.
  • Loss of potential revenue due to system defects.
  • Reduced engagement from users, developers and community.

The Role of QA in the Software Development Life Cycle

The Software Development Life Cycle mainly revolves around six phases, may it be the traditional lifecycle or Agile lifecycle of a project:

1. Planning
2. Design
3. Implementation
4. Testing
5. Deployment
6. Maintenance

Let’s evaluate how QA can be part of each of these different phases and makes an impact on overall product quality.

1 —  document icon in red Planning

This phase involves gathering requirements for upcoming features. In Agile, requirements are typically left loose, however the team always has an initial idea of the core feature(s) for upcoming version(s) of the application.

A good QA tester should be an advocate and expert on user experience. After all, user experience plays a vital role when planning out new features. QA can point out potential issues with user experience that may even affect the team’s decision to move forward, which in turn, can save thousands of dollars in design and development efforts. 

Lastly, even if QA’s input doesn’t result in any significant product changes, sneaking through the upcoming features can help QAs plan out test scenarios, edge cases and test cases.

2 —    Design

Similar to the planning process, QA involvement is critical in the design phase, as it can save companies significant resources in the long run. Potential gaps in designs or wireframes are magnified exponentially if QAs are exposed to designs directly in the testing phase or towards the end of development.

On the other hand, involving QA in the design phase would help in identifying aspects of the design that might cause future usability problems. Early intervention enables UI/UX designers to make changes on the fly, resulting in a better end product and happier customers.

3 —  web settings icon in red  Implementation

The project team focuses on writing source code during this phase of the application development lifecycle, and the concept of Continuous Testing continues to play an important role in modern best practices for the Implementation phase. We recommend following a component testing approach for Continuous Testing, as it helps the team check each component of the application (object, module, etc.) to validate if the system works properly.

Each small component is tested in isolation. QA creates a list of test cases describing the steps to be performed and expected results. In case an issue/defect is found, this approach helps in redesigning or re-coding only the tested module instead of working on the entire codebase.

A spreadsheet showing an example of a quality assurance component testing approach.

Another factor to consider in the mobile application development is cross-browser and cross-platform testing. This method is used to test the working capability of a product across different browsers and platforms, as certain features may behave differently depending on the platform you are using. Quality Assurance should always test websites and applications in different environments to ensure that the application delivers an optimal user experience independent of the browser you use to access it.

4 —  checklist icon in red Testing

As a tester, testing is the most important phase of the Software Development Lifecycle, and you need to be prepared to hit the ground running. At the same time, Quality Assurance does not only relate solely to the “testing” of software, but also includes activities like: 

  • Writing test cases
  • Filing bugs and testing Bug Fixes
  • Regression Testing
  • Preparing bug reports
  • Preparing testing status
  • Prioritizing client-supported browsers and devices.
A text box to record bug details in the testing phase of the software development lifecycle.

As a tester, you must go through all of the possible layers of the software, looking for the smallest to most critical bugs. It’s important to test even the simplest of applications, as there will always be features and scenarios where users could encounter problems — like issues across different devices, browsers and scenarios.

5 —   Deployment

Quality assurance in software development plays a less crucial role in the deployment phase, as this phase encompasses pushing the code to production. However, you still want to perform smoke testing in this phase to make sure the deployment didn’t cause any issues when it went into production.

6 —  Report Icon in Red  Maintenance

You sometimes miss bugs in the production phase due to stringent timelines, or due to a simple miss. As a tester, you’re counted on to fix these bugs in the maintenance phase, where you’ll be on-hand to test the bug fixes, or upgrades to features.

Fitting QA in the Agile Model

In contrast to the traditional waterfall model, agile teams are cross-functional and self-organized. This affects not only the development team but testing as well. To implement quality assurance in the software development lifecycle with Agile teams, testing must be an ongoing, iterative process. You’ll also have to strike a balance between testing new functionality and regression testing. Here are a few other things to keep in mind for achieving great QA standards with agile software development:

1. Test Early, Test Often

You should always strive to test in parallel with development. Stories can and should be tested as they are completed during the sprint, not at the end. This way QA and testing does not become a bottleneck for releasing working software to your users.

Agile is your friend here, and this practice follows agile principles. It prevents an overload of the QA team at the end of the sprint or project. This is typically what happens on waterfall or “traditional” projects that are not following agile methods.

Working in an agile manner also reduces the risk of surprises. If an issue with a particular feature or user story has cascading effects on the rest of the software, you want to catch it as early as possible.

A timeline emphasizing that Quality Assurance testing must be an ongoing, iterative process throughout the entire agile software development lifecycle.

2. Pick a Correct Requirement to Begin With

QA may not be completed by the end of a sprint – that’s okay if the requirement is of lower priority. Your objective should be to work collaboratively with the team in selecting which are the highest priority objectives and perform QA accordingly. 

What makes those requirements a high priority? That depends on each individual project and is ultimately up to the team to decide. Your goal should be to deliver as much value to users as quickly as possible, and not all requirements or features you are testing will deliver value equally.

3. Participate in Core Agile Meetings and Ceremonies

That includes the kick-off, sprint planning, daily stand-ups, demos, retrospectives and estimations. Don’t be shy to be vocal about your thought processes, and communicate it with confidence to the team. Each of these meetings is an opportunity to identify functionalities that the product manager/client and the rest of the development team may not have considered. 

A graphic showing Quality Assurance best practices in the agile software development lifecycle.

4. Help Identify Edge Cases Early

This can be done in backlog grooming. Raise concerns early and discuss how to handle edge cases so that less rework of the code is required. For example, if you identify the potential impact on other parts of the applications if integrating two or more systems the development team might take a different approach from the outset.

Engineers call them edge cases. I call them: what our users do.

5. Ensure the Acceptance Criteria are Clear

For good quality assurance in software development, everyone on the team should have a common understanding of what the acceptance criteria are for each user story. They should have enough detail to cover any functionality. If doing this creates overly complex acceptance criteria this might mean that the user story should be broken down into multiple tickets.

An illustrative checklist for agile testing that promotes clear user story acceptance criteria.

6. Verify Functionalities

Verify that the new functionalities you’ve introduced have not impacted existing functionality by doing regression testing. This approach will help ensure proper data integrity and prevent verification issues from arising.

7. Automation

Identify the potential for automated regression testing. Because automated testing takes longer to set up, you will likely need consent or approval from the product manager or client to do this. Depending on the timeline or the lifespan of the project, automated testing might not be feasible. However, test automation can provide a variety of benefits and empowers better solutions with minimum wasted effort.

How Can I Promote Quality Assurance in Software Development Practices Company-Wide?

QA is crucial and shouldn’t be dismissed during the development lifecycle of websites and web applications. It ensures that your product delivers excellent usability, functionality, and performance. It’s thus highly recommended that all software development agencies invest in a Quality Assurance team that will work hand-in-hand with developers, designers, and clients in delivering high-quality products and solutions.

  • Some common issues that you’ll likely face as a QA include: 
  • not having enough time to test
  • not having enough testing devices
  • limitations on creating test data
  • improper documentation
  • budget constraints or lack of test or production-like environments

These can be brought to higher management of the company and if worked on, would definitely help setting up good QA practices across all projects within a company.

Three roles you would fill as a QA specialist implementing quality assurance throughout the software development lifecycle.

Lastly, the most important thing one can do to build a good QA mindset in a project team is to raise the right questions, and facilitate the discussion around them, in an open, transparent, and empowering way. The testing phase is always the first thing that comes to mind while considering QA roles, however they can help out in all phases of the SDLC. 

An Ounce of Prevention is Worth a Pound of Cure

QA should be about more than just finding bugs, but should try to prevent them altogether. Hold retros regularly and document your learnings so as not to repeat past mistakes. As said by Steve Maguire:  “Never allow the same bug to bite you twice.” 

Ready to develop your project beyond expectations?

Want to Build a Great Digital Product?

Discover more from FreshWorks Studio

Subscribe now to keep reading and get access to the full archive.

Continue reading

Send this to a friend