Overcome Top Testing Challenges in Agile Environment
By Kavindra LunuwilageAgile Software Development introduces a very different way of working from Traditional Software Development. The main differences can be seen in the way IT Professionals collaborate with each other when developing and testing software by adopting to new and improved technologies and new technical practices to create smart solutions with the focus of delivering products and services related to software for a delightful customer experience.
Agile software development lies in delivering working software frequently with preference to shorter iterations. Unlike traditional ways, developers and testers work together continuously and in parallel. While this methodology works wonders for organizations as it benefits their customers, embracing Agile is not an easy task for most of the Agile teams and even more difficult for the testing community.
Working as a Quality Assurance Engineer in an Agile environment is challenging. The expectations from this role have changed and evolved over the last decade and still continuously changing. Quality Assurance Engineers in Agile teams have faced challenges such as frequently changing requirements, incomplete and unclear requirements, lack of focused testing, insufficient unit testing by developers, less examples and scenarios by Product Owner etc… Apart from these common challenges, below are other challenges that do not get highlighted but have larger impact on the overall software delivery.
The very essence of agile development is delivering working software frequently each time adding or enhancing a small feature which is of value to the customer that it poses a lot of challenge not only for testers but also developers and anyone else involved in the delivery of application.
In this article, I list some of the most common Agile Testing Challenges for Quality Assurance Engineers in Agile projects and how to overcome these challenges successfully.
1.Waterfall Type Sprints
In Agile development environment, software testing is not done in phases or after the entire development is done. Instead it is a continuous activity, right from the start of the project until the end of it and goes on in iterations. For teams that are new to Agile, often these iterations become mini-waterfalls, making the testers wait until the user stories are developed.
Testers are left with the last 2 to 3 days of the sprint to test the entire sprint backlog. This results in less time for testing, sometimes compromising on the scope and quality of testing. This happens because the team adopts the process but not the Agile mindset.
To overcome this challenge following steps can be followed
-
Teams and other functional groups should be encouraged to adopt Shift Left Mindset. With the focus on continuous testing, it is important to bring in Quality Assurance Engineers early in the project lifecycle and not after development is complete.
-
Throughout the project duration and during iterations Quality Assurance Engineers should work in collaboration with Developers and the Product Owner.
-
Testers should get involved during the inception phase and understand requirements, ask queries, start thinking about overall testing strategies (both manual and automated) think about acceptance test scenarios, integration scenarios and write test cases.
-
During the iterations start designing test cases early, prepare test data and review test environment. Get test scenarios reviewed from the Product Owner or Developers. This will ensure that everyone has the same understanding of the user requirements.
-
When user stories are ready start testing incrementally, communicate the results to Developers and the Product Owner and seek their feedback. Continue with this approach and testers won’t be left with a long backlog to finish in a hurry.
2.Upskilling to Automation in Testing
Agile without automation has limited success. Cost reduction and speed being high on the management executive’s agenda, there is no other alternative to automation. This leaves no room for having a mix of Manual and Automation Test Engineers. Keeping pace with fast changing technology is another challenge. Upskilling remains one of the hardest challenges for Test Engineers. Often it is observed that upskilling is more of a mental block than capability issue and it takes time and patience to bring in this change. These changes are real and Test Engineers have no choice but to learn new skills. They have to go through learning new languages, different automation tools, understand automation frameworks and technical practices such as Test Driven Development (TDD), Behavior Driven Development (BDD), and Acceptance Test Driven Development (ATDD).
To overcome this challenge, following steps can be followed
-
Quality Assurance Engineers should be put through a time bound and systematic training plan. Management support is most crucial during this transition. Leverage in-house competency centers and training academies to facilitate training.
-
Define skill-based maturity levels so that the transformation is smooth and practical and have mentors mentoring them during this transformation.
-
After the initial grooming and mentoring they may start to work on automation on their own while their work is being peer-reviewed with constant feedback. Working in pairs also works great initially.
-
Management may also consider making a repository of knowledge and FAQs or conducting knowledge sharing sessions periodically.
-
Make continuous learning a habit and with time they will be transformed into complete Test Engineers.
3.Poor Automation Strategies
Automation is not limited only to testing but extends all the way from continuous code integration to continuous deployment. Poor automation strategy can defeat the very purpose of going Agile. Automation can take months when envisioned poorly. Building, testing, deploying and monitoring are the important functions for automation. Often it is observed that each of these functions define their own automation strategy which could be completely disjointed from each other. Other issues include
-
Starting point of the Automation
-
Availability of Resources with Required Knowledge and Skill Sets
-
Having the Right Set of Automation Tools and the Availability of License
-
Availability of Infrastructure and Environment
-
An Alignment between Testing and Business Priorities
-
The Scope of Automation and the Approach
-
Training Requirements.
Automation is a big challenge that involves huge effort and the complexity is also very high. Organizations usually look for internal experts and start with trial and error knowing that some of the decisions can go wrong or they hire experts who have deep understanding and expertise in the area. Once the decision is taken easily can follow following steps to overcome this challenge
-
Create a Task Committee who will be authorized to drive the Change.
-
Select a Pilot Project
-
Train People
-
Appoint Champions and Monitor Results Constantly to Provide Periodic Updates.
-
Lessons from Pilots have always helped to Fine Tune the Strategy and Bring in More Areas under Automation.
4.Changing Requirements and Last Minute Changes in Requirements
Changing requirements or dropping stories mid-sprint is not uncommon in agile projects. This can be a nightmare for the whole team as it means that the work already carried out might be scrapped completely or changes should be made to what’s already half done.
These requirement changes and last minute requests can affect the scope of testing which can frustrate testers. This can be overcome with following ways.
-
Testers should be able to respond to change, knowing that in agile projects change is inevitable.
-
When requirements change especially towards the end of the sprint when there is not enough time to test adequately, testers should provide as much information as possible about what tests have been run and which part of the application hasn’t been tested well so that the team can make an informed decision (possibly based on risk) whether to release the feature or not.
-
Try getting the developers involved in testing as well, as testing and quality should be the whole team responsibility.
5.Not Enough Information on the Stories / PBIs
There will be times when a product owner who writes user stories, has some idea about a new feature but doesn’t have all the details to write a good set of acceptance criteria to fully define the behavior of the feature. They ask the development team to create a prototype so they can get more ideas about the functionality and behavior of the feature.
This creates a challenge for testers because there is a lack of understanding and requirements, so proper test cases can’t be constructed.
To overcome this challenge, following steps can be followed
-
You don’t need very detailed requirements to start testing, so start by thinking about high level scenarios that test the concept of the story, rather than waiting to get full clarification about the feature.
-
By drafting high level test scenarios, even when the details change, the context should still be the same.
6.Continuous Testing
Agile testing is not a phase it’s an activity. Testing starts from the very beginning even before the development starts. In order to have a smooth ride during the sprint, the stories in the backlog should have been elaborated during the story grooming sessions. This means the Quality Assurance Engineer should collaborate with the team to learn the details of the story and then help write good acceptance criteria.
Providing early feedback to developers is crucial and challenging for testers. As testers not only we have to make sure that the new feature works as specified according to its acceptance criteria, we have to also make sure that the new code hasn’t broken existing functionality.
To overcome this challenge, following steps can be followed
-
Ensure each story has adequate acceptance criteria and that the context of the story is well understood by everyone before starting work on development.
-
Start creating tests (automated or manual) as soon as possible so that when the feature is available for testing you can begin straight away.
-
Testers should encourage developers to give early visibility to the feature by deploying regularly to a test environment where testers or product owners can run their tests, rather than waiting for the feature to be complete before testing.
-
Automate regression tests to alleviate some of the testing effort and liberate your time for exploratory testing.
7.Multiple Browsers and Multiple Devices Compatibility
Nowadays the architecture of many websites consists of a Back End and a Front End. The Front End piece is largely based on JavaScript and CSS which could potentially behave differently when viewed from different browsers or devices.
Ensuring that a website functions as expected in all major browsers and popular mobile devices or tablets is indeed a top challenge for testers in Agile projects.
To overcome this challenge following steps can be followed
-
Automation is key here. Writing a test and running it on multiple browsers is what automation does best.
-
You can use Selenium Grid with Docker to manage and run your automated tests in parallel on multiple browsers. Other great tools out there for multi-browser testing are BrowserSync and Test Project
8.Lack of Communication
No matter how good the process is or how well the above items are carried out, if there is a lack of communication among the team members or with Product Owners or Developers, nothing will work.
To overcome communication issues, following steps can be followed.
-
Make sure there is effective communication among the team.
-
Engage with Developers and Product Owners on a continuous basis.
-
Ensure there is a process in place and that each team member adheres to that process.
Quality Assurance Engineers are now shouldering increased responsibilities and they are dealing with complex environments all the time, collaborating very frequently with different teams. This leaves them with stretched bandwidth to complete their tasks. Strong support and cooperation from others is what they need for them to be successful. Proper time management and effective communication are key factors for successful deliveries and overcoming these challenges. If above mentioned problems are managed properly there is no any reason why Quality Assurance Engineers won’t succeed in an Agile environment.
Happy Testing!
References
https://www.axelerant.com/resources/team-blog/agile-testing-challenges-and-how-to-overcome-them
https://softcrylic.com/blogs/agile-testing-challenges-ways-overcome/