Back

Responsibility for Testing

The general principles of Agile, and especially Scrum, do not differentiate between team members’ abilities and skills. A team member may be called upon to code one user story and test code for another story. Another practice that is often used is “pairing”, where two team members work on a user story, sharing the coding and testing responsibilities, especially when applying TDD. This tends to increase velocity of a sprint, because of the collaboration between the two team members. Paired testing is generally more effective, because the one partner of a pair may pick up a potential point of failure which a developer working in isolation may miss, because he wrote the code in the first place, and may have a blind spot with regard to his own code defects. Bringing the customer in while performing testing will also help, as they will be able to pick up quickly if the code to be delivered is not matching expectations. They may also find that the original specification is not what they required and will request changes. Although users are exposed to the latest code during the Sprint Review, there is no harm in being proactive and getting them involved prior to the review.

While we have been focusing mainly on Acceptance Testing and functional testing here, we also want to look briefly at other testing disciplines that may be required to deliver the product as specified.

Additional Testing Disciplines that may be Required

Acceptance testing usually tests the functions of a user story from a customer perspective, but non-functional testing could also be part of the acceptance tests. Non-functional testing looks at issues such as security, response time and performance. With the ever-growing rise in cybercrime, security testing should form part of acceptance testing, to check whether vulnerabilities have crept in as new code is developed. Performance is also important, as the most perfectly specified and developed application will fail if it is too slow or cannot handle a large number of concurrent users. From a quality perspective, load and performance testing should be performed at least once per sprint, if response time or a large user base is part of the requirement. Security testing should be done more frequently – ideally security features must be embedded into the user story development and not tacked on later. If your company is considering moving to a DevOps culture this is especially important – security is fundamental to DevOps, and is sometimes expressed as DevSecOps.

Testing has always been the poor relative of development in traditional projects – if the project manager needed to find extra time, the first activities to get the chop would be testing. Using frameworks such as TDD ensures that this cannot happen in Agile, and that there is an agreed standard of how an application should work, as expressed via the acceptance criteria. The delivery of quality (i.e. defect-free software working according to specification) is what Agile promises, and this can only be achieved with extensive testing.

Recommended Further Reading

The following materials may assist you in order to get the most out of this course:

Section 2: Using the Agile Manifesto to Deliver Change

Section 3: The 12 Agile Principles

Section 4: The Agile Fundamentals

Section 5: The Declaration of Interdependence

Section 6: Agile Development Frameworks

Section 7: Introduction to Scrum

Section 8: Scrum Projects

Section 9: Scrum Project Roles

Section 10: Meet the Scrum Team

Section 11: Building the Scrum Team

Section 12: Scrum in Projects, Programs & Portfolios

Section 13: How to Manage an Agile Project

Section 14: Leadership Styles

Section 15: The Agile Project Life-cycle

Section 16: Business Justification with Agile

Section 17: Calculating the Benefits With Agile

Section 18: Quality in Agile

Section 19: Acceptance Criteria and the Prioritised Product Backlog

Section 20: Quality Management in Scrum

Section 21: Change in Scrum

Section 22: Integrating Change in Scrum

Section 23: Managing Change in Scrum

Section 24: Risk in Scrum

Section 25: Risk Assessment Techniques

Section 26: Initiating an Agile Project

Section 27: Forming the Scrum Team

Section 28: Epics and Personas

Section 29: Creating the Prioritised Product Backlog

Section 30: Conduct Release Planning

Section 31: The Project Business Case

Section 32: Planning in Scrum

Section 33: Scrum Boards

Section 34: Sprint Planning

Section 35: User Stories

Section 36: User Stories and Tasks

Section 37: The Sprint Backlog

Section 38: Implementation of Scrum

Section 39: The Daily Scrum

Section 40: The Product Backlog

Section 41: Scrum Charts

Section 42: Review and Retrospective

Section 43: Scrum of Scrums

Section 44: Validating a Sprint

Section 45: Retrospective Sprint

Section 46: Releasing the Product

Section 47: Project Retrospective

Section 48: The Communication Plan

Section 49: Formal Business Sign-off

Section 50: Scaling Scrum

Section 51: Stakeholders

Section 52: Programs and Portfolios

Translate »