What is Functionize?
Functionize is an intelligent software testing platform powered by ML models that empower teams of all sizes and skill sets to build tests faster and reduce maintenance with self healing technologies.
A cloud first infrastructure enables infinite testing capacity across all browsers and environments, with seamless CI/CD integrations to dramatically reduce time to market.
Deep learning ML models learn how your UI works, updating tests dynamically as your UI changes, improving test maintenance efficiency with 1-click updates.
How Does Functionize work?
Functionize uses artificial intelligence to create tests that become smarter with use. This powers our Self-Healing and SmartFix features. Every time a test is run, our Machine Learning Engine learns your site's DOM even better, and creates tests that become even more stable over time. These powerful functional tests can then be run in a number of ways and in conjunction with a number of integrations.
What Software is Required to Use Functionize?
No software (other than a browser) is required to use Functionize because it is a SaaS based solution. You can simply use any browser to access Functionize, however, we do recommend Chrome because it tends to be more stable than other browsers.
What is Functional Testing?
Functional testing is a quality assurance process and a type of black box testing that bases its test cases on the specifications of the software component under test. Functions are tested by feeding them input and examining the output, and internal program structure is rarely considered. Functional testing usually describes what the system does.
- Identification of functions that the software is expected to perform
- Creation of input data based on the function's specifications
- Determination of output based on the function's specifications
- Execution of the test case
- Comparison of actual and expected outputs
- Alert user of differences between actual and expected output
Who is Functionize For?
Functionize is built for businesses and developers who are looking to simplify testing, start automating, and to provide a higher quality of service to their users. Functionize allows fairly nontechnical teams to quickly create fully automated functional tests. Additionally, Functionize creates the test cases in such a way that they're less brittle than traditional Selenium test cases, so your team will spend less time maintaining automated test cases and more time innovating and driving your product forward.
What Downloads are Required to Use Functionize?
The only required download for Functionize is the browser of your choice. There are no user licenses or downloads necessary with Functionize.
What Are the Advantages of Functionize?
Functionize allows your team to create and execute fully automated functional tests powered by Artificial Intelligence. Tests are created Architect. They are maintained through Self-Healing and One-Click Updates for Root-Cause Analysis, dramatically reducing the time spent on maintenance. Additionally, Functionize allows you to automatically scale up in the cloud and do so with cross browser compatibility.
What is the Functionize Modeling Process?
Functionize takes test cases in plain English and turns them into robust automation that requires little selector related maintenance. We use multiple machine learning techniques including K-means, Expectation Maximization, Recurrent Neural Networks (RNN), Convolutional Neural Networks (CNN), Information Theory, Reinforcement Learning and Supervised Learning.
Machine learning and computer vision allows Functionize to move away from the common, one dimensional test scripting world to create test cases that leverage a significantly more robust data set. Moving from a single selector per step to several hundred selectors requires modeling, and the more data the Functionize system has, the better. Functionize also uses dozens of algorithms to aid in the process of machine learning.
During the modeling process, the described test case is interpreted by Functionize and executed multiple times in the cloud. Modeling is typically complete in less than a day, sometimes in as little as a few hours, all dependent on the existing data set. It is important to note that modeling is an asynchronous process where no human supervision is required. It is also scalable. Whether one or one hundred test cases are submitted, they are all modeled simultaneously in a completely scalable manner.
The benefits of machine learning on test creation are simple:
- Complex tests can be written in less than an hour.
- Users require little automation experience to get started.
- Tests model autonomously, without human supervision.
- The modeling process offers true cross browser compatibility (Chrome, Firefox, Internet Explorer, Edge, Safari), with a single script and no additional logic.
Even more notable are the benefits on the backend. All tests will require significantly less maintenance. The reduction in maintenance is directly tied back to the learning that took place at the creation of the test case. Every step leverages hundreds of selectors instead of a single, brittle xPath or CSS selector.
The advanced technology that Functionize utilizes accomplishes tasks that were previously impossible.
Why Do Test Cases Self Heal When They Should Have Failed?
Our machine learning model was built to solve the largest pain point in test automation: fixing broken tests. Therefore, our ML engine will find every opportunity to self-heal test cases when there are changes in the application under test. When a test is executed, our ML algorithms will check every page to determine which elements to interact with. If an element can no longer be found we will identify the most probable alternative element on the page in attempt to self-heal. Only verifications are excluded from the self-healing behavior, since machine learning will try to fix everything else. Therefore, it is important to add verifications to a test to specify and enforce checkpoints since self healing can cause a test to pass. False negatives can easily be avoided by ensuring to include proper verifications in the test case. See also our ForceFail article.
What is an API?
An application programming interface (API) is a set of functions and protocols for building software applications. A software company releases an API so software developers can easily design products powered by their service.
What are API Calls?
API calls are operations that applications use to perform specific tasks. A client application submits a service request to the server via the API and the server processes the API call before returning a response.
Does Functionize Offer API Integration?
Yes. Functionize offers a simple API key based webhook system for easy integration. An OAUTH2 based REST API is also available. If there's an integration you'd like, but is not listed, please let us know.
Current API Based Integrations
- Circle CI
- Travis CI
- AWS CodePipeline
- Bamboo CI
How are Browser Updates Handled?
Functionize systematically updates to newer browsers when they are stable and compatible with Functionize. Once the browser update is complete, all tests are automatically run on the new browser version and no user action is required.
Do You Support the Testing of Different Screen Resolutions?
Yes, Functionize supports the default 1280 x 1024. We can go up to 1600 x 1200 resolution and down to any number that you want. It is easy for you to do this as well once a test case is active in your account by accessing the test settings (for example, viewport width and viewport height).
Keep in mind that responsive websites have dynamically changing UI, based on screen resolution. Often, in such cases, the layout completely changes, so that the test case might not work or it might generate a false positive - because our system can still find elements that are visually hidden in the DOM. For this reason, best practices suggest that users create new test cases to cover different screen resolutions.
What is a Group Orchestration?
Group orchestration allows you to specify which cases run in what order. For example if some tests depend on other tests running first, you can simply put all the tests that need to run first in the first group (and specify serial or parallel within that group), then you can drag and drop the latter tests to another group that runs next. You can create as many groups as you like.
How Long Does it Take to Run a Test in Functionize?
Running a test takes an average of 5-15 minutes for short tests and up to 40 minutes for longer ones.
Can I Integrate with ..........?
We have a number of services for which integrations are available, including Jenkins, Heroku, and GitHub. For a full list, see the bullets below. Also, if there is a service you would like for us to add to our list, please let us know through the HelpDesk or any other support channel, as it is a relatively quick process to do.
- AWS CodePipeline
- Bamboo CI
- Circle CI
- Travis CI
Can We Export our Test Cases into a Selenium Script?
Yes, but there is a caveat. We provide the option to export your test case into valid python or java Selenium scripts that should be able to execute within a standard Selenium framework setup.
However, these exported test cases will be far less robust, meaning that there is no AI behind them powering Self-Healing and a multitude of other benefits enabled by our modeling process. These exported scripts will be as fragile as any other Selenium script that lives outside of the Artificial Intelligence driven Functionize platform.
Do You Support Native Apps?
The Functionize Platform tests anything in a browser. As such native apps are not currently supported. However, this feature is on our Roadmap and could be arriving in late 2019.
Do you Offer 24/7 Support?
Yes, we have multiple layers of coverage including our Help Desk, Customer Support Slack Channel, and dedicated 24-hour support team.
Do Tests Run on Physical or Emulated Devices?
Tests run on emulated devices, conferring a number of benefits including the ability to execute at cloud scale. If you have 10,000 tests, then Functionize can run all 10,000 in parallel. Effectively, the time it takes to run one test is the time it takes to run 10,000, affected primarily by the complexity of each individual test. Other benefits include reducing maintenance and avoiding limited executions associated with device farms,
Cloud testing also enables us to provide realistic Load and Stress tests. Rather than just ping a server a defined number of times, as some other popular services do, Functionize can run real user journeys to give your apps realistic loads, and therefore better risk management.
Does the live tracking widget need access to our source code?
Does the live tracking widget store user credentials and other sensitive information?
Personally Identifiable Information (PII) and other sensitive information is completely stripped. Usernames, Passwords, Social Security Numbers, etc. are never stored, and substituted with dummy data.
How many virtual machines do I get for the month with Functionize?
Functionize technology scales automatically. There are no limitations on bandwidth or VMs. Using a cloud based platform eliminates the need to decide how many 'dedicated' VMs you will need.
There are a lot of screen shots stored by the tests as they run. Can I turn off the storage of such information?
Yes, but why would you need to? This feature can be toggled on or off, but consider that these images are stored in the cloud, thus there is no cost or performance hit to your system. The only time this should really be carefully considered is in an On-Prem Configuration.
How do you ensure that our data is secure?
We employ industry best practices, including White Hat Security Monitoring, and are SOC 2 Certified.
In addition to that, every test case runs on its own virtual machine in the cloud. When a test is finished running, we tear down the virtual machine, eliminating anything that was stored there. Customer information is stored separately, on a different site, from the Functionize Web Application. The screen shots and logs we store for test execution are housed in a secure Google Cloud bucket that is not publicly accessible. Thus, we ensure a strict demarcation and deletion of the data for every test case and end user. We also have the ability to turn off the storing of screen shots, if that is desired. Finally, for On-Prem configurations, we set up a private cloud, allowing for complete control of the system.