Foundations in Agile Development, Project Management and Testing

Agile Development using Scrum

Scrum is an Agile practice that helps developers build faster by delivering useful software increments in time limited development cycles called ‘Sprints’.

Scrum features:

A Product Backlog, created and prioritized by the Product Owner, identifying items to be developed for future software releases by the Team.

A Sprint Backlog, created by the Team to select items from the Product Backlog to be worked on in the next Sprint.

The Sprint, a development cycle limited in duration from two to four weeks, during which the Team builds and tests Sprint Backlog items.

The Daily Scrum, a short, daily meeting where the Team works with stakeholders, the Product Owner and the Scrum Master to identify the work completed, the work remaining, and any obstacles preventing completion.

One or more Deliverables, representing shippable software to be included in a future release.

Project Management

The principles of Project Management apply to any development effort, whether Scrum or a traditional ‘Waterfall’ approach is used.

Scope, the amount of work to be accomplished, impacts the Time required to do the work and the Cost of the effort. Change to any part of this ‘Triple Constraint’ likely results in change to the other parts. For example, an increase in Scope yields increases in Time and Cost.

Scope, Time and Cost are further influenced by Risk. A Risk is an event that could negatively or positively impact the project. Risks and possible responses can be anticipated and managed throughout the project.

The project deliverables defined by Scope must be created within acceptable Time and Cost, balancing Risk. Deliverables must also be of acceptable Quality, satisfying requirements and being fit for use.  To be successful, a project’s Scope, Time and Cost must be balanced on Risk and circumscribed by Quality.

Software Testing

Testing determines whether a system’s functionality and performance meet customer requirements and business needs.

Testing is an integral part of software development, whether the development approach is Agile or traditional waterfall. Effective testing can lower development and maintenance costs.  The earlier an error is detected, the fewer resources it takes to correct it.

An effective testing methodology begins with Objectives.  Test Objectives describe what will be tested, including any constraints on business functions such as security and performance.

Once Objectives have been set, a Strategy can be defined to plan how testing will be conducted.  The Test Strategy can identify specific Test Phases to be employed and what will be tested during each phase.

Scenarios describe how specific tests will be conducted.  Each Scenario is comprised of a valid or invalid processing situation, the input data that triggers the situation, and the expected results.  Scenarios are designed to test the system’s response to both valid and invalid situations and provide the basis for Test Scripts.

Scripts are step-by-step instructions for executing tests and capturing Results.  Scripts make tests repeatable.  Results can be replicated.  Scripts can be input to testing tools that automate the testing process.