Professional Documents
Culture Documents
The following diagram depicts the primary test phases of a solution; each test phase may be broken in to multiple iterative test cycles.
Integrati on Testing
Defect Resolution
Regression Testing
Integration Testing
Integration testing is the next step on from Unit testing, it aims to establish tests that are integrated across multiple parts of the solution to ensure that the individual components of the solution work in an integrated way with each other. Integration testing is usually carried by the development team; either by the Developer(s), his/her peers or indeed a specific testing team or organisation. Depending on the size of the project, it also possible for the client or customer to be involved in the integration testing, this may be focused on integrated process testing, as opposed to functionality testing. During integration testing it is important to ensure that the solution works in a cross functional and integrated environment this will mean that separate work streams or areas of functionality will be tested together as according to the solution design requirements.
Regression Testing
Regression testing is the formal re-testing of a previously verified solution. Normally regression testing is instigated as the result of issue resolution, a subsequent change or an upgrade to the solution. Similar to integration testing, regression testing is usually carried out by the development team. It is also common when a solution that is live; Business representatives may be involved in the regression testing to ensure the risk of negatively impacting the live solution is mitigated. Regression testing is also a common target of Automated Testing, as it is more predictable based on scripting originating from verified test cases and test results of earlier testing cycles. Regression testing will often include test scenarios from the unit test, Integration test and acceptance test phases
Acceptance Testing
Acceptance Testing, sometimes known as Business Acceptance Testing or User Acceptance Testing is formal validation of the solution against the business requirements. Acceptance testing usually focuses around usability in the real world; in particular this may centre on look and feel, performance and ease of use. Unlike Integration testing, Acceptance testing is almost always exclusively carried out by the customer with key business users being involved in this phase. In the battle for hearts and minds, this can be a very important phase for influencing opinions to a new solution; this is particularly the case where business users may be seeing the solution for the first time.
The key features of agile software development are a focus on the people involved in the development, and that the focus is on building a solution in small discreet work packages quickly. Essentially merging the design, build and test phases into one joined up body of work. Working software is clearly the desired outcome, and to improve the work through put, the teams in agile development are self governing, and lot less emphasis is on creating detail documentation; be it for design or build documentation. It is important that the customer is actively engaged in the build phase, and as such collaboration between the development team and the customer is critical. Co-location of customer and developers is very important (not so good if you have an offshore model). Due to the high level of customer involvement during build (essential replacing the typically signed off designed detail), a degree of change can be expected as the solution starts to evolve. This makes traditional planning difficult as it is certainly an evolving and changing plan, much like the solution that is being built.
People
The fact that the biggest impact is on the people and working environment, result in a different team make up. Due to fluid nature of design, the development team needs to be of a more senior and knowledgably base, as the shorter duration of each designbuild-test phase is quite a lot quicker, less time is available for on boarding. As part of agile, there will normally be a number of these teams all working on different components or functions of the solution; as such, regular cross-team interaction is required to ensure that all teams are working to the same goal.
Assessment
Agile development whilst surly having its merits in being able to deliver a quick solution is not likely to be appropriate in our business environment. Through my investigation, I can clearly see that Agile would work well where a solution or technology is relatively mature and low risk. But in our business environment where we are seen as a key player delivering robust, well design and tested solutions it would not play to our strengths. Not to mention the fact we do offer a offshore model, attempting to run a agile development approach would certainly be hindered by our offshore contingent (relocation would simple ruin the cost benefit we try to establish). In summary, agile development is not suited for out business as the risks it would introduce would not provide a clear advantage.
References
1) Kent Beck, Mike Beedle, Arie van Bennekum, Alistair Cockburn, Ward Cunningham, Martin Fowler, James Grenning, Jim Highsmith, Andrew Hunt, Ron Jeffries, Jon Kern, Brian Marick, Robert C. Martin, Steve Mellor, Ken Schwaber, Jeff Sutherland, Dave Thomas. Manifesto of Agile Software Development [Online], 2001, http://www.agilemanifesto.org/, access on 22nd November 2009. 2) James Coplien, Kevlin-Henney. Agile Architecture is not Fragile Architecture, 10th June 2008 [Online Web cast Video] http://www.infoq.com/presentations/Agile-Architecture-Is-Not-FragileArchitecture-James-Coplien-Kevlin-Henney, accessed on 22nd November 2009. 3) Pekka Abrahamsson, Outi Salo, Jussi Ronkainen and Juhani Warsta. Agile software development methods, Review and Analysis, VTT Publications 478, http://www.vtt.fi/inf/pdf/publications/2002/P478.pdf, accessed on 22nd November 2009. 4) Agile Alliance: Agile Alliance Home [Homepage of the Agile Alliance][Online] http://agilealliance.org/home, accessed on 22nd November 2009
Additional Functionality
Base-line Architecture
Release 1
Release 2
Release 3
Release 4
Time
Specific external circumstance that would result in the use if the incremental model are: Big Bang risk mitigation When delivering large complicated solution, it can be often seen as risky to introduce large change into a business (i.e. Big Bang change). By taking an incremental release approach, change can be delivered in a more manageable multi-release and risk averse manner. When resource constraints may be apparent (Developer or otherwise), breaking the deliverables into separated releases removes possibly overburdening the project team. (Deliver one thing well, rather than many things badly) Business conditions may make it desirable to deliver benefits early into the project. Delivering phased releases allows quick wins to be realised earlier than waiting for the whole project to be complete. By delivering a solution in multiple releases, a degree of flexibility remains in controlling and locking down of the scope of the subsequent releases. What may have been important to the business in the early days, may not be as important later on this is always particular evident after the first release Go Live.
Resource availability
Benefits realisation
Scope flexibility
Release 1
Release 2
Release 3
Release 4
Time
Evaluation
Objectives