Hodor’s Manifesto - 5 Reasons Why Agile Testing Improves The Software - Blog CSHARK Hodor’s Manifesto - 5 Reasons Why Agile Testing Improves The Software - Blog CSHARK

Mint Blog

Blog subscription

06/08/19

Hodor’s Manifesto - 5 Reasons Why Agile Testing Improves The Software

Hodor’s Manifesto - 5 Reasons Why Agile Testing Improves The Software

Quality is not an act, it’s a habit. Software development should be all about problem solving and quality. The first can’t be done without qualified software developers, the second – without quality assurance (QA). Agile Testing lets software developers create valuable products, with Quality Assurance Specialists backing them up. What is Agile Testing and how it elevates software development?

Quality should be a mindset, organized as a process. Care for quality should be constant because the only stable environment can produce results. Agile Testing is perfect for the modern, highly competitive market. Start-ups and seasoned companies alike can’t wait too long to launch their product on the market. Nowadays they even put half-baked products (minimal viable products – MVPs), that are nothing more than glorified prototypes, with functionalities being added over time, continuously generating community and hype. By the time the product hits physical or digital shelves, it’s obsolete. Clients habits, needs, and challenges are rapidly changing. The software must respond to them, by adjusting the process by which it is being made and developed over time. Everything has changed – software development process, its architecture and the way it changes clients’ experience. Quality assurance must keep up with the flow. Here’s how it’s done.

Why Agile Testing improves software?

1st. Agile Testing can begin at the start of the project and run until the end, assuring quality throughout the whole software development cycle. This way client and/or end users can voice their feedback, even from the initial stage of the whole process. Feedback at this early stage is invaluable – it directly impacts the rest of the development process, sometimes even changes the scope of the project. Plus, testing at this stage can spot very serious bugs that are hard to eliminate later. It’s easier to spot deeply embedded problems in code and fix them. After months of development, the same bug will have an impact on other systems inside working software. You won’t be dealing with simple code refactoring; in the worst-case scenario, you would be fixing software’s architecture.

2nd. Early implementation of Agile Testing makes Quality Assurance Specialists design team members and have an impact on usability decisions. Clients often think about Quality Assurance Specialists as people clicking through application and reporting bugs here and there. In fact, QA is about much more than that. For a starter, people taking care of ‘bugs’ are often Quality Assurance Engineers. This means broad horizons and testing automation. Manual testing takes time and is not effective enough. It’s also costly. QA Engineer optimizes processes and has experience in imagining consequences that software brings. Developer looks from the application development point of view, while QA Engineer cares about the implementation of functionalities. In other words, Software Developer builds foundations of the house, walls, and roof and QA Engineer establishes the environment for furnishing. Early participation in application development (that also includes Agile Testing) gives QA Engineer a chance to actively think about how to implement solutions that will positively impact users. They can also spot roadblocks – from both the technical point of view and the one related to scope and expectations.

3rd. Agile testing helps overcome QA challenges in Agile software development. Agile is a highly effective and proven way for software development. There are, however, challenges that are associated with this type of production, cooperation, and mindset. Agile testing solves them all.

  • Testers are often required to act as developers. We have already established that, but it goes far more than suggestions about usability. A Front-End Developer, for example, should also know a thing or two about design. In an Agile environment, roles become blurred – it’s often expected that every team member knows something about everything and everything about something. This means that developers may have to test, and testers may have to develop. That way they can be more self-aware and project-aware. They can throw better ideas and write better software. Working in such an environment with that mindset, QA Engineer can support usability at a very early stage of software development, leading to building a better product.

  • Time for test planning is scarce. Agile is based on flexibility and embracing change. Some things you can’t easily foresee. An unexpected market trend may influence functionalities, client’s ideas may be thrown into the mix. Yesterday you did know the scope of the project, therefore the test plan. Today you don’t. Today you need to fix things by rapidly developing a new test plan, including new scope. By understanding what was happening with the project from an early stage, QA Engineer understands it through and through. It’s simply easier to adapt to change.

  • Documentation in Agile has less priority than development and human relations themselves. This generates additional pressure on QA team. Agile is all about communication and relations. Paperwork and processes take a backseat, therefore it’s easier to make a mistake and let bugs slide. Unless you hire a QA Engineer with experience in Agile Testing. They can help with code refactoring and advise on potential bottlenecks.

  • New features are implemented quickly. The cadence of changes reduces the time needed to check if new functionalities are working properly, meet project requirements and address business issues. It’s as simple as that. Less time dedicated to a thorough investigation of software usability results in lower overall product quality. It also fuels the development of nice-to-have but often irrelevant functionalities that do not translate into problem-solving or money-making. That’s burning money, especially for start-ups that depend on investors’ money.

  • Regression testing usually has limited time slots. Regression testing is a process that helps to check if recent code changes adversely affected already implemented product architecture and its features. Because Agile thrives on change… you know the rest. Agile Testing helps because, in a small amount of time usually given for this kind of a task, QA Engineer can fly through these changes by knowing the product really well.

  • A nature of tester has shifted. In the past, a Quality Assurance Specialist was treated like Hodor in Game of Thrones. Everyone who loves this epic saga knows from where the ‘Hodor’ nickname came from. From holding a door. Hodor was a gatekeeper that dedicated his life to keep the threat out. In a way, he was a partner in establishing and maintaining quality. That’s quality assurance’s past. Today, QA is responsible for active participation in threat fighting. We can say that rather from holding a door, modern QA is running through the castle and dealing with every single threat that managed to slip in.

  • That’s the ultimate Hodor’s manifesto - quality is not an act, it’s a habit. It’s not a simple, one-time act of heroism. It’s an active approach. A combination of pre-defined and agreed-upon processes (that are flexible, therefore destined to change), and eternal vigilance. Remember the Night’s Watch from Game of Thrones? These guys were stuck on a wall, looking out for anything that might come from outside the giant wall of ice. That’s Hodor evolved. Not a single man and one-act – a consistent vigilance, a mindset, a habit.

  • Test-driven software development and behavior-driven software development and exploratory testing are bread and butter of modern quality assurance. These models require flexibility and explain why this flexibility is necessary in order to develop great products.

  • Agile Testing requires a certain attitude towards test automation development.

The team should focus on test automation, which is divided into 3 main layers:

  • robust unit tests and component tests,
  • automated business-facing tests written to support the team. These are the functional tests that verify that we are “building the right thing”
  • GUI tests that represent what should be the smallest automation effort.

Unfortunately, in practice the pyramid is reversed – team members to impress and satisfy the stakeholders produce a tremendous amount of GUI test are the most spectacular, and impress the management the most, but provide the lowest ROI.

4th. Agile Testing requires active client participation. There’s a difference between ‘it works as coded’ and ‘it works as intended’. The first is related to a waterfall-driven software project, usually monolithic in nature. If something is not written in stone, it doesn’t exist. It doesn’t work, it should be coded. The second, on the other hand, is much more flexible. It’s a birthplace of many fantastic solutions but also a few challenges, for software developers and clients alike. Agile is demanding, as anything that bets on eternal vigilance. Cooperation between software outsourcing development company and the client is not limited to conversations summarizing the sprints and talking about progress in development. It also requires active cooperation in testing the application. Only then the client can have a hands-on feeling of how the user will feel while using the application. Only then they can voice their opinions that are based on more than sprint report.

5th. Everyone’s involved. There’s a saying that ‘it takes a village to raise a child’. In Agile Testing, it takes a village to make a good software product. QA team members are not the only ones who test the application. Developers and business analysts join the effort, increasing the chance of finding something worthy of throwing outside the wall of ice.

Agile Testing benefits for startups

Let’s finish with what we’ve started with. Every company benefits from Agile methodologies of software development. Agile Testing benefits especially start-ups. There is a value of time and money. Agile Testing, along with rapid software development platform like MAKO, provides measurable results to pre-seed and incubation companies, seed and growing companies, post seeds and scale-ups.

They all require special treatment, tailored offer. Both rapid software development and agile testing act like Night’s Watch. They don’t let bad guys in, providing a sustainable environment for growth.