What is working software?
In our times, in my humble opinion, a working software is a piece of software deliverable that brings your business competitive advantage to your client.
Agile software development focuses on creating the working product through early integrations. The documentation provided is ‘Just enough’ and we already know that the most important deliverable of any software project is the product itself.
Agile prides itself on regular delivery of the desired features to the customer. But what is the cause if the product is not tested enough and what's the issue: the 'just enough' documentation or a bad agile project management?
What is Agile testing - a whole team approach?
Agile software development is usually happening with cross-functional teams of people who possess a variety of skillsets. The teams typically have a range of expertise including programming, testing, analysis, database administration, user experience and other specific roles.
All of this expertise is needed to deliver the product and is executed in Agile projects by virtue of a whole-team approach.
So why a whole team approach is working in Agile environments (the top 3 advantages in my opinion)?
- Quality is becoming everyone's responsibility
- Creating a broad skillset inside the team
- Changing (in a great way) communication and collaboration inside the team
Which is the advantage of using an Agile mindset approach?
- Continual testing throughout an iteration
- The involvement of testers throughout the entire release - very important from the beginning
- Coaching, collaboration and pairing
- Welcoming changing at every step
How will QA assure that the product rejection rate is low?
By simple using this approach:
By using everything that suits great in the context of the product or project:
What about the testing strategy?
The test strategy should:
- Describe the approach to verification and validation activities
- Define quality success criteria in terms of measures and metrics for all test activities
- Provide stakeholders with an understanding of how and what the test approach will be for the whole team
Agile teams may use metrics of work process such as:
- requirements coverage
- test pass/fail rates
- defect discovery rates
- defect density
- defects found and fixed
- confirmation and regression test results
- risk coverage
- code coverage
- code churn
These metrics can be used by teams to enable them to assess the product’s quality and work progress throughout the iteration.
What exactly a tester is doing?
During the implementation' process, activities of a tester can include:
- Configuring the test environments and creating test data sets
- Designing tests depending on the criticality of the requirement
- Executing tests and helping other team members to create and execute tests, possibly also assisting developers with unit tests
- Performing static analysis
- Selecting tests for regression testing purposes
- Executing regression tests (both automated and manual) or ensuring they are performed.
- Automating test scripts
- Reporting defects and working with the team to resolve them
- Supporting the team in the use of testing tools
- Attending the daily meeting and reporting on progress and any impediments
- Moving the user story or requirement task on the board to ‘done’ once all tests have passed
- Measuring and reporting test coverage across all applicable coverage dimensions.
What other members of the team can do to help testers?
- Analysing, reviewing and assessing user requirements, specifications and models for testability
- Reviewing and contributing to test plans
- Creating or reviewing test specifications
- Setting up the test environment
- Preparing and acquiring test data
- Implementing tests on all test levels, executing and logging the tests, evaluating the results
- Using test administration or management tools and test monitoring tools as required
- Automating tests
- Measuring performance of components and systems
- Reviewing tests developed by others
Some (final) thoughts
The Agile mindset should be directed in helping all the team members to understands that a failure or a success is for the responsibility of the entire team and in this way developers, testers, designers, can work together to bring great products to the surface.
This article is part of a bigger topic called Agile Project Management.