ChristianFindlay.com

Christian Findlay is a professional Software Developer and trainer based in Melbourne, Australia. He builds with Flutter, .NET, AI, Firebase/Supabase, Google Cloud, and Microsoft Azure.

Follow Me

What I Do



Flutter Consulting Services: The Critical Necessity of Widget Tests

Ensuring the highest quality in my services is my top priority. Implementing Flutter widget tests is essential, not only for new projects but also for existing apps. Here's why:

You have an app. It's working. It's doing what it's supposed to do. It's been tested. You hired people to build this and you expect this to continue to work. If there are no automated tests in place, the original people are the best people to fix the existing app because they know their own code and they can potentially fix issues without breaking the app. If I modify code that I am unfamiliar with, there is a high chance I will introduce bugs. It's important that I don't do that.

What Are Widget Tests?

Widget tests are a form of automated testing for Flutter apps, focused on verifying the behavior, appearance, and the app as a whole. These tests provide businesses with key advantages:

First, they streamline the development process by automating testing, allowing me to concentrate on more critical tasks. This accelerates the delivery of new features and improvements, increasing the app's market competitiveness. Second, widget tests ensure a consistently high level of app quality, providing users with a superior experience while minimizing the risk of unexpected errors. Furthermore, widget tests are faster to write and maintain than unit tests, which is why I generally prioritize them over unit tests.

With extensive experience in building widget tests, I can create them quickly and efficiently. Normally, I dedicate 15% - 20% of my time to writing or updating tests, which is sufficient for most apps and provides quick value. However, apps without existing tests may require additional initial effort.

Why I Can't Work Without Automated Tests

Risk of exacerbating issues: Without widget tests in place, any attempt to fix existing bugs or add new features can easily result in further complications. These tests serve as a safeguard, allowing us to catch and address potential problems before they escalate. Without them, I cannot confidently provide my services without risking additional damage to the app.

Original developers' expertise: If your app lacks widget tests, the original developers, who are familiar with the codebase, would be in a better position to address issues. They can use their intimate knowledge of the app's architecture to implement fixes with a lower risk of introducing new problems. My services are most effective when widget tests thoroughly cover the main use cases in the app, ensuring that those use cases continue to work after I make changes.

Long-term stability and maintainability: Widget tests are crucial for the app's long-term health. They allow for easier updates, bug fixes, and feature additions by ensuring that the app remains stable and functioning as intended throughout its life cycle. An app without widget tests will likely face difficulties in adapting to change, becoming less maintainable and more error-prone over time.

How Long Will It Take?

When creating a new app, I add widget tests as part of the process. This doesn't slow me down and I can usually get the test coverage to around 80% - 90% without much extra effort. However apps that don't have any tests can take longer. Apps that don't have tests usually require extra changes to add tests. This does introduce a small amount of risk because I need to refactor. So, you need to retest the app after the changes. It may involve a round of bug fixing at the end. If you have a small app with less than 5,000 lines of code, adding tests may be possible in under five days.

Conclusion

Widget tests are an indispensable part of any robust Flutter application, and their importance cannot be overstated. To deliver exceptional services, I require that all projects have a solid foundation of widget tests in place. Of course, I am keenly aware of time and cost so I will not spend time writing tests that do not provide value. I will explain the process and include the work in my estimates before we start. This approach guarantees that my contributions are both effective and reliable, ensuring your app thrives in the long run.