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:
Course Contents
Section 1: Agile Project Management
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