As England battled to victory against the Tunisian rugby team in their first fixture of the 2018 World Cup, many are praising the way in which the England manager Gareth Southgate has prepared his team. Team morale is at an all-time high, a team has been picked based on ability and potential and finally a formation/system that fits the players. Of course, this plan will need to change throughout the tournament – it will need to be Agile and adaptable to change. We can draw many parallels to the software development world and this article focuses on how an Agile Test Plan fits within the life-cycle of a project.
If the Pentagon and the Whitehouse can both be hacked, then so can you. Now, please don’t think for a second that I think the members of the Pentagon and Whitehouse are in any way more intelligent or better than you (I’m convinced of quite the opposite – without even meeting you), but I am assuming they have pretty good cyber security.
To be very clear, business assurance is about providing companies with increased confidence in their business environment; meaning that they maintain improved quality and efficiency of their business processes and ensuring a high calibre of assurance that they’re in control of their business at all times.
A test plan is used in the software testing process and sets out intentions regarding software testing activity targeting a software release implementation. Releases typically provide system changes and fixes to be implemented to enhance the business operations experience. We use test plans to help demonstrate that a system or product is developed as per the requirements and specifications.
High user expectations and the risk of putting poorly performing code live makes performance engineering more important than it has even been. Fortunately, incremental change makes it easier to engineer system performance and build a workable process. For those doing DevOps, having administrators and technical subject matter experts as part of the delivery team have a much better ecosystem within which to deliver effective performance engineering.
What is the Internet of Things (IoT)? Well to simplify, it’s anything that can be connected remotely without wires; like the connection of your Amazon Echo, printers, heating systems, some vehicles and other home devices, along with medical/office equipment and of course your dog cams! Basically, anything that can collect and exchange data and information between the device and user. This technology allows the user to control devices remotely over a network – simple.
Within any software development team, testing involves investigation and analysis to identify product risks. Testers also provide information to stakeholders about the quality and complexity of testing so confidence levels are well understood. Depending on the methodology used, the success of a release may be largely based on the effectiveness of the test role.
In traditional methodologies, testers mainly contribute to delivery at the end of the process. If the testing phase only begins after analysis, design and implementation phases have been carried out, adapting to change becomes more difficult. Major issues found during this phase are usually so embedded, they are too risky to rework. If budgets and time pressures are a factor, it is always testing that suffers. Producing a high standard of testing becomes more and more challenging, and the blame culture starts to set in.
Working in this way can cause communication issues between business analysts, developers, and testers where requirements are often misinterpreted. Siloed working in these phases can lead to an over the fence attitude, wasted effort and a lack of involvement in decision making. These cause motivation and frustration issues for the testers involved.
The idea of delivering software in small, prioritised work items is to maximize value to the customer as early as possible. But things change. Customer expectations, difficulties with technology, new requirements, and changing priorities are all real complications that must be tackled on a regular basis.
Short feedback cycles are vital so testers can react to ever-changing demands. Collaborating with business analysts, developers and stakeholders is the best way to make sure any re-planning is turned around quickly and efficiently, reducing waste. With better visibility of progress, gives time to plan for the feasibility of automation, non-functional requirements and test harnesses. This adds robust quality attributes, prioritised depending on their business value.
In an Agile team, the tester role is utilised across the whole software life-cycle. Testing starts from day one of the project, and provides a platform to drive quality and influence team members to think likewise. Thinking from a customer point of view during refinement, the test focus includes asking questions, thinking about UX, personas, risks, impacts, workflows and testability early on when there is still time to change things. Being part of requirements analysis from conception ensures test planning is based on a concrete understanding of specifications, dealing with any ambiguity to avoid future rework.
What makes Agile work?
One of the benefits of Agile is that it is easy to adopt, in principle, if you were to implement the rituals and follow the rules. Frameworks like Scrum or Kanban have been provided. However, product maturity, dependencies on other teams, or even company politics means a templated approach does not suit all.
Of all the Agile manifesto points, the key to making it work well is people over process. Each team has different personalities, skillsets, and specialists, which is why no two projects should be run or compared the same way. Agile gives the flexibility to create a working atmosphere where everyone adds value. It is the people that make Agile successful, not the rituals and processes.
The goal is to build a culture that centres on collaboration and teamwork where everyone is responsible for quality. It takes away feelings of blame, pressure, and isolation that testers have frequently been the victim of in older methodologies. The experience of working together in synergy, creates an extremely slick and efficient team and testers thrive in a situation where there is respect and can contribute as equals. This results in the team analysing business value rather than testers trying to gain confidence in a squeezed time frame.
For an Agile team to evolve requires trust. Things always go wrong during the project and people make mistakes. The important lesson is in how issues are dealt with. Empowering the team to learn from their own mistakes is rewarding, allows individuals to encourage each other and improve on estimates through experience. It is possible in a self-organising team, and works well when there is no micromanagement or multi layered hierarchy.
Good testers love to learn. It is the basis of why we have a passion for testing. A self-managing and helpful team where everyone is working towards the same goal is a great motivator. Investigating and learning together with developers, and bouncing ideas against business analysts and other testers ultimately help to mitigate risks and reduces the overall cost of defects because they are captured and fixed much earlier during the development life-cycle.
Modern Agile teams are focused on continuous integration and continuous delivery models. Multiple changes and quick turnaround of defects require testers to be at the centre of decisions. Testers are best placed in a project to understand overall changes and impacts, so reporting risks and test coverage to the business is a benefit for both testers and stakeholders.
Business value in an Agile environment does not just include customer requirements. Creating a lean and efficient team helps to release within budget, allowing time to plan in knowledge transfer, self-learning and training. This investment improves knowledge that can be applied to future projects, and provides a longer-term benefit to the company without compromising delivery.
This is good news for testers developing a T-shaped skill set - the capacity to work across multiple disciplines while specialising in one core skill. Since Agile working is fluid, testers need to be flexible enough to switch between a logical and creative mindset. Product knowledge gained through rapid test feedback and continuous self-development ultimately increases software quality. Exactly what Agile and Testing both aim to achieve.
Regression testing is something that sounds so simple, so logical and an activity that should be obvious to what it entails. Yet time and time again, it is something that can cause problems for projects and software delivery. Usually in the time it takes to run the tests, inappropriate tests being used for regression or the very fact that there may be no regression suite to even execute.
A functional requirement specifies a function that a system or system component must be able to perform. Probably the easiest way to explain ‘non-functional’ requirements is that they specify all the remaining requirements not covered by the functional requirements. Non-functional requirements specify the system’s ‘quality characteristics’ or ‘quality attributes’. Two products could have the same functions, but their attributes can make them entirely different products. A Rolls Royce has more or less the same functionality as a Lada but many different attributes!
With such a deluge of content available right now on the introduction of the General Data Protection Regulation, this article has been written for anyone involved in the development, testing and implementation of software within the UK.
First up, I’m going to assume by reading this article you’re aware of the basics. I’m assuming you are aware that from May 25th 2018 the General Data Protection Regulation comes into force and will dramatically change how organisations process and store personal data within the UK. I’m also going to assume you’re aware of the significant fines that will be handed out by the ICO should you fail to comply. Often overlooked are the powers the ICO have to impose a range of corrective powers and sanctions to enforce the GDPR. These include issuing warnings and reprimands; imposing a temporary or permanent ban on data processing; ordering the rectification, restriction or erasure of data; and suspending data transfers to third countries. Obviously this is an important aspect and could very well leads to a significant loss of revenue.