For many software testing professionals experienced in traditional development processes, working in an Agile project can be a foreign concept. Testing in older development models often only takes place near the end of a major development phase by a team of dedicated testers. As a result, test phases can be seen as a bottleneck since a multitude of bugs can be (and most often, are) found when QA analysts start looking at previously untested software. In order to meet deadlines, testing phases may be shortened or eliminated altogether, resulting in increased numbers of potentially severe issues at worst, or increased customer support workload at best. Utilizing Agile development practices can alleviate these problems by integrating testing throughout the development process, allowing for a higher quality application.
Agile processes can seem chaotic or time-consuming at first, especially if the team is unfamiliar with or still adapting to the shift in thinking required. Whereas traditional development cycles will have a definite start and end, Agile projects are often treated as a continuous endeavor made up of iterations, or sprints, which often last around two weeks. Team members decide on what issues or functionality they will deal with in each iteration, and once that sprint is finished, the next one begins. Testing is not performed in only one phase of the process, but is integrated into each phase to varying degrees, starting as soon as code is created. Members of an Agile team are often expected to utilize different skills, so it is not unheard of for developers, stakeholders, and other roles to perform some types of testing duties along with the QA team.
Testers should be well-versed in a variety of testing tools and techniques. Commonly, testing will be exploratory in nature, but understanding how to perform acceptance, UX, load/performance, and even unit testing can be beneficial in an Agile project. Since regression tests can become burdensome over time, many teams implement some form of automated testing. In order to decide whether to add automated tests to a project, team members should weigh the time spent on regression testing against the time that will be spent maintaining the automated test scripts, which can become a problem if the system changes too much, too frequently.
Agile processes are not flawless. Acceptance criteria can change unexpectedly based on stakeholder feedback, and a lack of documentation can create knowledge gaps for the team. Luckily, these types of problems can be avoided if Agile methodologies are properly used. Continuous communication between team members, along with having everyone as involved as possible in each step of the process, can reduce communication issues and help the team to be more adaptable to any changes that can come up. Understanding the nuts and bolts of a system or application and how it should behave under certain conditions is essential to any testing efforts, and with the continuous testing integration that Agile methodologies provide, that type of understanding can be achieved with relative ease.