The Functionize Manifesto
How we can revolutionize the world of testing
What if you could create tests in English that never broke? What if an intelligent test agent manages your testing? In this blog, we set out Funcitonize’s Manifesto and vision for the future of autonomous testing.
Imagine a world where anyone can write a test and it just runs without further intervention. A world where an intelligent test agent proactively searches your site and creates tests based on standard design patterns. One where tests never break, however much you redesign your UI. This is Functionize’s vision for the future of autonomous testing.
The QA Winter
How QA has lagged far behind the evolution of modern websites.
Modern websites have evolved dramatically over the past 15 years. Yet test automation has struggled to keep pace.
How we interact with websites has evolved beyond all recognition since Selenium was first released in 2004. Back then, sites like Amazon were at the cutting edge of eCommerce, but their site was almost unrecognizable compared to today. Social networking was in its infancy (Facebook’s predecessor, FaceMash, was released in 2003). Gmail had yet to be invented. Most sites were largely static, with responsive design still many years off.
However, over that same time period, test automation has hardly progressed at all. Testing has been stuck in the depths of an innovation winter. The capabilities of test automation systems lag years behind the sites that they are testing. Tests are still created using the same scripting languages. Recorders are just a dumb way to simplify the routine of test creation. Tests are still extremely brittle – arguably, they are now more brittle than ever. Test maintenance is still being done by hand (and routinely occupies the majority of a test engineer’s time).
The reasons for this are manifold. QA testing has always been seen as a necessary evil, rather than an essential driver of success. As a result, QA teams are often starved of resources. QA engineers are typically looked down on as failed developers. Few developers are prepared to invest effort into developing test automation. To put this in context, Selenium’s GitHub has 423 contributors, Ruby on Rails has 3,773.
What is Functionize doing about this
Functionize is on a mission to simplify test automation and to make it accessible to everyone. To achieve this, we have developed an intelligent test agent that takes on all the complexity of test automation for you. At the heart of this lies our work on natural language processing. Our aim is to realize the vision set out above. A world where English is the language of test scripting. A world where intelligent automation means tests can write themselves. Above all, a world where test maintenance is a thing of the past.
The Functionize Manifesto
Recently, we published the Functionize Manifesto. This sums up our view of what we should be doing as a company. But it is also our vision for the future of testing. The 10 points in our manifesto are:
Testing must be cloud first
One of the big issues for test automation is that it rapidly becomes resource-intensive. By shifting testing to the cloud, Functionize bring you all the benefits that made cloud the driver of the app-revolution a decade ago. Cloud is cheaper – you no longer need your own hardware. It is (infinitely) scalable – this removes artificial limitations on your testing. Cloud is reliable, so it won’t fail in the middle of a critical test. And if it does ever fail you can recover instantly. Above all else, the cloud provides the compute resources needed to enable AI-acceleration of testing.
Intelligent automation just works
One of the great drawbacks to test automation is the amount of effort needed to set everything up; The time required to write scripts; The need to constantly debug. Especially, the need to customize scripts for every browser and environment you want to test. But it shouldn’t be like this. Intelligent test automation should just work straight out of the box.
Agile DevOps requires autonomous testing
DevOps is essential in a world where success is measured by your ability to move fast without letting down customers. DevOps ensures your site stays up, whatever happens. It makes sure new feature launches go smoothly. Truly agile DevOps straddles the border between development and production, and as such is intimately connected to testing. With intelligent test automation, the job of the DevOps engineer becomes far simpler.
Plain English is the new test language
Everyone knows that test automation requires you to learn how to write test scripts, right? Wrong! Using NLP engine means English is the new language of test scripting. And this is the way it should be. Through this approach, anyone can create new tests. You can just plug the output of your test plans straight into the test engine. And you can derive tests directly from user stories. This is the future of test scripting!
Tests should never break
Once upon a time, no one had ever heard of “test maintenance”. Then, along came test automation systems, and suddenly every minor change to your site triggered a need for time-consuming debugging and re-writing of every test. Our goal at Functionize is to consign test maintenance to the past. We are already well on the way with technologies like Root Cause Analysis, One-Click Updates, and Self-Healing Tests. As we develop this further, the future of testing becomes maintenance-free.
Shifting testing left is not enough. Shift right
Over recent years there has been a lot of hype about “shift left”. This is the idea that testing should happen at every stage in the development, not just at the end. Undeniably, this is a good idea. It allows bugs to be found earlier and resolved quicker. This leads to better efficiency and can save you from costly development dead ends. But in the modern world, it’s not enough. You need to also shift testing right, all the way into production. You should be leveraging your users as an extension of your test team. This is enabled using approaches like canary testing, A/B testing and production instrumentation.
Software testing is about driving revenue, not just finding bugs
For too long, testing was the poor man of the development team. Clearly, everyone knows releasing buggy software is bad for revenue. Yet, all too often senior management sees testing as a luxury, not an essential. We argue that testing deserves more. No successful company ignores customer support. Equally, you shouldn’t ignore testing, because efficient, bug-free, stable software is a major driver of revenues.
Quality is in the DNA of every great company
Quality is about more than just dumb testing. It is an essential part of success. Talk to any software executive and there’s one company they all want to ape – Google. One of the reasons for Google’s phenomenal success is the company-wide culture of quality first. We believe every company should take a leaf out of the Google book when it comes to testing. Do this, and quality will follow.
Autonomous testing is your brand’s shield and protector
Almost every company values its reputation above almost anything else. Brands that become tainted hemorrhage customers faster than you can say knife. For customers, your brand image is intimately connected with your reliability. If content delivery services like SoundCloud, Netflix, and Hulu kept dying mid-track you’d soon cancel your subscription. And people expect messaging services to be 100% reliable. This means that proper, autonomous testing becomes the defender of your brand. Yes, site reliability engineering and DevOps can firefight when there’s a failure. But surely, it’s better to not have the fire in the first place?
Testing must be strategic. Don’t leave is as an afterthought
In our opinion, QA should be a C-suite responsibility. No one laughs at the idea of a Chief Compliance Officer, so maybe you should consider appointing a Chief Quality officer? Successful companies are the ones that adopt the mantra of test early, test often, and test in depth. This means testing becomes a key strategic requirement in your organization. Testing shouldn’t be the poor relation, it should receive sufficient resources so that you can put quality first, every time.
How is Functionize going to achieve this?
Functionize was founded by Tamas Cser with the specific goal of ending the QA winter. To this end, we have been focussing on how to use artificial intelligence in a strategic and intelligent fashion to enhance test automation. The end goal is a fully autonomous intelligent test agent. To date, we have made some impressive progress.
Our ML Engine leverages advanced machine learning to solve the test maintenance issue. Our visual testing approach uses fuzzy logic to accurately locate visible elements on your page. Autonomous template recognition uses multiple techniques to find your site’s homepage and navigate its way through the whole UI. Above all, our NLP engine means that you can now write tests in plain English. This slashes test creation time to minutes and empowering everyone on your team to become an active tester.
We recently announced a $16m Series A funding round. This money will allow us to develop further and to fully realize our vision for the future of testing. Why not join us as we revolutionize the world of test automation and bring about a new spring for QA?