Continuous
integration and testing are key success factors in agile development
projects. Teams using agile methods such as Extreme Programming (XP),
Scrum and others work in short iterations to “grow” a system. The “one
and done” approach to software development often leads to project
failures. Agile methods require the whole team to focus on quality
throughout each of these iterations, ensuring that the system is built
on a sound foundation.
QA is no longer a phase in the
development cycle that begins when development is “frozen.” Quality
thinking is woven into the daily routine and is part of the team’s
responsibility. The system must be kept in a high-quality, working
condition at all times. With software builds and integration taking
place on an hourly basis in some cases, there simply is no time to
perform extensive manual tests. To accomplish this, the team must
commit to automating as much of the testing process as possible.
Testing must also be done at various levels of the system under
development. Relying solely on testing the GUI level, can give the team
a false sense of security. Effective iterative testing needs to provide
coverage at multiple points to increase the probability of detecting
and correcting errors as early as possible.
Coincidentally, many of the projects using agile methods today are SOA projects.
The component-orientation of these projects calls for testing at the
integration level. Solstice provides multi-protocol, message-level
support required to test most of these architectures. Agile teams
combine their talents to focus on producing a high-value solution in
each iteration of the project. Developers, QA, business analysts, and
users can collaborate and take advantage of the Solstice solution. By
providing command-line controls, JUnit integration and an intuitive
user interface, Solstice simplifies continuous integration and testing
for all members of the team. Having automated and repeatable tests
ensures that new members of the project team can join and ramp-up
quickly, thus strengthening the team flexibility and reducing
single-threaded points of failure.