Functionize Product Showcase Discussion
An interview showcasing the unique advantages of Functionize to prospective clients. Covers real-life use cases and practical problems that Functionize solves.
Tamas Cser, founder and Chief Technology Officer at Functionize, recently sat down with Colin Harbut, the Head of Marketing to showcase Functionize’s Intelligent Testing Platform and discuss some of the recent product advancements. Here’s a recap of the demo session.
Tamas: Let us start by looking at the test creation process using Architect. This is a simple extension for Google Chrome. You can go through the entire test creation process using this little add-on while you are looking at the page you want to test. It is laid out simply, uses basic English, and supports point-and-click. For example, if I want to test whether a particular menu or button exists on the page, I just click the flag icon and then the page element I want to test. Also, we can add instructions to the test by typing in the allocated text box. This helps modularize the test by outlining steps for specific test areas. You can even reuse them later.
Colin: That looks easy and intuitive. You mentioned that it is a Chrome extension. Can users also test on other browser platforms? Also, is the extension only on the testers’ machines? Or, can anyone have it installed and create tests and look at what other testers are doing?
Tamas: Sure. While test case creation takes place on Chrome, you can play those tests back on other platforms. The extension is usually in the testers’ machine, but we also give you a way to have access to a shared pool of testers if you want. Going forward, Architect can run tests on newly loaded web pages. You have granular control over what you want to verify, including specific objects, text, background color etc. You can also call on advanced tests that verify based on CSS data or at the DOM level. We can call on JavaScript code for more complex tests.
Colin: What about Visual UI testing?
Tamas: You can do that right here from Architect itself. You just click a button to capture an image or visual area of the page and add it to your functional test. You can also do a full-page visual check. With our advanced options, you can incorporate database and API calls. We support two-factor authentication and importing randomly generated user data or important files. You can define reusable page objects for test case sharing. Using Architect, you can create tests very quickly without losing any functionality, especially compared with testers having to write Selenium code for hours. When I save and execute the test, Functionize collects a large amount of data and leverages its AI algorithm.
Colin: If someone wants to implement more of an event-driven approach to testing, what options would they have? Can I call upon, for example, service integrations or WebSocket support?
Tamas: Absolutely. You can cover all that by using extensions. After the tests are created, you can trigger tests for multiple browsers simply using the UI. You can also run tests in bulk. This allows you to take advantage of our smart executions. Since the tests run on the cloud, you have absolutely no scaling issues or extra infrastructure or maintenance costs as the virtual machines on the Google Cloud Platform scale dynamically with the workload. This also facilitates cross-browser testing. We are also mimicking real user interactions using native OS actions. This eliminates click issues and improves accuracy.
Colin: How about parallel tests? Is there virtualization involved? Is every test starting in its own virtualized environment?
Tamas: Sure, you can configure the tests to run in separate virtualized environment. The platform is set to create virtual machines and keeping everything load-balanced seamlessly keeping in mind the best balance between costs, speed, and efficiency. Running in a VM is also more secure and you can even set a specified region to do geolocation-based testing.
Colin: So, do customers pay you based on resource allocation or is it a flat payment for the workload they use with Functionize?
Tamas: Our engine takes care of the resource allocation and we are priced competitively against our competitors when it comes to an execution-based model. We have a sophisticated system that is designed to scale cost-effectively, while not being functionally limited in any way due to the containerization process. It is a hybrid system, unlike running something on Docker containers or Spot instances In Kubernetes clusters.
Colin: That is impressive. I have experience with Kubernetes and am aware of the limitations of using such an approach. It looks like you have everything pretty balanced out features-wise.
Tamas: Now, we come to one of our most important features. The more times a test runs, the more data we collect and process. This is where our self-heal features come in. This differentiates us from traditional script-based tools, which can break over something as simple as a button being moved or restyled. They rely on static selectors. It takes a lot of time to identify and debug these. With self-heal these micro-changes can be detected by AI. The test is captured at different stages of its lifecycle and you can look at those multiple states and how things have changed. This makes it easy to identify changes. You will be able to see self-heal tags on test executions where the AI detects these changes and makes the requisite adjustments. So, the tests do not break. They execute like clockwork.
Colin: How does it differentiate between a simple change and something that is actually broken?
Tamas: You can treat these as probabilistic actions as opposed to actions that require a hard match. You can define that. You can define the degree and nature of validation required to satisfy the conditions of the test. The AI handles the rest. Between the AI and some elements of human test designs, functionalize does a pretty good job of identifying what needs to be healed and what should cause a failure.
Colin: That is awesome. What’s next?
Tamas: Next, I want to focus on test maintenance. You need to diagnose failures and debug them effectively. For this, you can use the screenshot comparison and error detection prompts. Another poignant feature we have is smart screenshots. We map our machine learning data with the screenshots to make identifying errors easier. So, when testers edit the test later, they can do it right from the screenshot itself. It saves a lot of time. Functionize will collect data on failed tests and even provide recommendations on what to do. You can integrate specific actions in-between screenshots, carry out live debugs, and even incorporate a completely different workflow. You can use our Quick Select feature to directly debug from screenshots.
Colin: This is really exciting to see how the Functionize platform has so many innovations, especially with the machine-learning based features added in the last few months!