Quality Assurance for Software Development

Software Development Cycle

Agile is one of the most widely practiced software development methodology followed by organizations today. As a well-accepted methodology, self-organizing teams are encouraged to work in collaboration inside an efficient and effective management framework. However, the main attraction about Agile methodology is its commitment to on-time delivery of high quality and cost-effective software – factors that matter the most for stakeholders seeking the best solution in the market.

There is no doubt about the fact that development methodologies of software products have become progressive over the recent years. Along with this progress, the need for evolution in software testing has also become an object of equal concern.

That is because testing helps to optimize the entire software development work at every phase of the Rapid Software Development Cycle. It is therefore important that we understand the different techniques of test management and its application at every stage.

Understanding the Role of QA at Every Stage of a Basic Agile Lifecycle

Understanding the Role of QA at Every Stage of a Basic Agile Lifecycle

Software production begins with a series of tasks, each of which is categorized as a different phase. Let us look into some of the basic phases and the contribution of Quality Assurance in each of these phases –

  1. Inception

This is the very first phase of a software development lifecycle based on which the development process begins.

So as soon as the stakeholder makes a request for a software, the software development team comprising of developers, designers, managers, and testers gather to discuss and plan the basic architecture of the software that is to be developed. Both stakeholders and testers are considered part of this team.

Role of a Tester: The QA testers perform an Initial Requirement Envisioning, where they create a basic set of Requirements that will help them to identify the scope of the project. Testers also set up a System Test Environment based on the requirements.

  1. Construction

The ultimate aim is to create a shippable software that can be delivered faster. That is why, in this phase, the team sorts out the requirements of the stakeholder first. This is done based on the level of priority of each requirement management. Once the requirements are sorted, the team then proceeds to the development work, followed by documentation of software deployment and production.

Role of a Tester: In the construction phase, the role of the QA testers is to verify and validate whether the developed components meet the required expectations in each iteration.

  1. Transition

After the testing of the final system (including the final acceptance and pilot tests) is complete, the entire software system is then prepared for live production. Documentation work is done after which the new system is deployed for live production. Since the software system is operational at this stage, the systems procedures are taught to the end-users of the software.

Role of a Tester: In the Transition stage, the QA testers perform a final testing of the software lifecycle to ensure that the new system functions properly before being released for production.

As you can see, test management plays an important role in every phase of the production process. Does that mean testers have become more involved in software production today?

Yes, they have. Every developed software component is now checked and validated before being passed over to the next step in the process. This makes it easy to identify the loopholes at an early stage and ensures software production is cost effective. The agile methodology makes this possible.

A side-by-side comparison between Agile and traditional methods of software development can clearly identify the difference in the involvement of the testers and their contribution.

Difference between Agile and Traditional Methods of Testing

Sl No. Agile Method of Testing Traditional Method of Testing
 

1.

Active Collaboration and Involvement at Every Stage

Agile encourages active collaboration in between team members regardless of their individual roles. So that means, the tester remains involved right from the initial stage of use case planning up to the final testing of the developed component.

Confined Communication via Documentation

A traditional method of software development does not follow the concept of active collaboration and involvement between team members. All communication is done via documentation.

 

2.

Keeping Testers Informed about Every Stage of the Production Process

Every team member is involved in the system development process. That makes it easy for the testers to understand the requirement and follow the various phases that a software development must go through.

Lack of Transparency When it comes to Information Transfer

Every team member work in silos, specific to their roles. As a result, the issues of transparency and information flow between team members continue to remain.

 

3.

Effective Teamwork between Developers and Testers

Agile method of software development encourages developers and testers to work in constant collaboration with each other. This leads to effective teamwork since the architecture and design of the product have to undergo constant improvement through the various phases resulting in high-quality software production.

Inefficient Teamwork between Developers and Testers

Traditional methods of software development do not encourage teamwork between the developers and testers. As a result, the architecture and design of a software are delivered as mere parts that ultimately leads to low-quality software production.

 

4.

Cost Effective Production at Every Stage

The short feedback cycle of Agile enables the team to meet, discuss and agree on solutions that address the concerns, saving time and money

Question of Cost Effective Production Remains

In a traditional method of software production, the defects are addressed only during the second half of the production process. As a result the cost of production becomes higher.

There are certain expectations from a newly developed software no matter what type of methodology you choose. Agile Quality Assurance Testing tries to cope up with the expectation in the following ways –

  • Repetitive Agile Quality Assurance Tests: Since the Agile method of construction involves activities that are repeated several times, tests should be a continuous process that will go hand-in-hand with the development work until the final deliverable is released.
  • No Comprehensive List of Requirements: In an agile methodology, requirements are constantly developed, identified and evolved at every stage in the production process. Strategies for testing, therefore, need to be flexible in accordance with the nature of the requirements.
  • Demand for Flexible Testing: Agile Quality Assurance testers should be flexible enough to take up the challenge of testing a new system at any stage of the development process. They should be aware that any requirement is subject to change at any time during the project timeframe.

The best way to ensure the quality assurance of an Agile software development lifecycle is by understanding how the testing activities fit the Rapid Application Development methodology. Let us, therefore, try to understand the role of QA in optimizing the Agile Process of Software Development.

Best Quality Assurance Practices in an Agile Software Development Process

  1. Defining the Testing Techniques Right from the Start 

All information related to requirements and architectural envisioning serve as a guideline to give a clear picture of the scope of work.

Based on this, the QA testers begin defining and organizing the most effective techniques and methods that are then used for testing the requirements and the software architecture. In due course, they can raise questions and concerns to gain clarity of the acceptance criteria.

  1. Following the ‘Whole Team’ strategy:

An Agile ‘Whole Team’ strategy aims to bring the right people with the right skill and the right perspective together. The team will, therefore, comprise of people who are skilled in designing and programming of software systems, performing system analysis, and testing the viability of a new system.

This is considered as one of the best practices for QA testers, as testing techniques are agreed upon at every stage of the development process. In addition, it makes the development process time and cost-effective.

Whole Team’ strategy

  1. Introducing an Independent Test Team Approach

The concept of an ‘Independent Test Team Approach’ came into existence as an answer to the needs of complex development systems.

As an independent team, QA testers contribute to the development process by checking the integrity issues of newly built software systems.

  1. Setting up a Test Environment

When a project is identified, either QA testers are assigned to an existing test environment or they need to create a brand new test environment.

A test environment ensures good work. While setting up a test environment, testers use the best of the breed software that is easily available in the market. The software is then combined with other testing tools to conducts tests like security, usability, and integration testing.

A shared platform enables both the development team and the independent testing teams to share the necessary defects.

Apart from that, sometimes, Virtualization also allows Agile teams to create a test environment on to a hardware.

  1. Continuous Need for Regression testing

Once a system is built, the next step is to conduct tests. Regression test suites are run either manually or through automation. This is necessary in order to ensure that newly built systems work in accordance with the specification and the expectation.

QA testers ensure that the right test suites are utilized for regression testing. Choosing the right test suite is as important as conducting tests on a daily basis. It is also the responsibility of the QA testers to update them regularly and make sure all test suites are performing with 100% functionality.

Delete this section – it is a distraction and does not fit the points that have been made so fa

  1. Running Parallel Independent Tests

The development and the independent testing teams work in parallel to ensure stable delivery of a new software system.

The primary focus of an independent test team is to ensure the security of integrity issues that may have passed unnoticed during regular tests, conducted by the development team.

Investigative Testing ensures that the non-functional requirements in a new system (such as security, performance, usability) are checked properly.

A Production Readiness Testing is done on all the systems that are delivered to production and to the stakeholders. This is done to ensure that the systems work together properly.

Parallel Independent Tests

  1. Final Lifecycle Testing

The system has to go through a final quality check. It is often a part of the contract agreed upon by the stakeholders during the onset of a software development process. The final lifecycle testing gives clients the confidence in the development process as well as the final product.

Conclusion

Modern QA Engineers are expected to understand how to read and write code, run automated tests and if required, deploy builds and stand up environments rather than giving so much value on Requirement Management, specifications or documentation.

Being part of the ‘whole team’ and being constantly exposed to procedures at every stage of the production process, Agile testers develop the ability to understand the language of the system design and architecture.

They also engage in ‘value-added’ activities like conducting tests on a regular basis and providing the result immediately to the Agile development team. As a result, defects are addressed faster in a new system and development cycles become rapid.

Chitra Lakshmi is Sr. Software Engineer of the QA team here at Kovair. She takes care of the quality and stability of various Kovair products and Automation testing framework for clients.