Customer experience in recent marketing hyperbole is synonymous with quality. And notice that both aspire to imply good: good customer experience means good quality. Furthermore, quality software is a consequence of accurate testing. Naturally then customer experience equally improves when testing ensures intended performance. Customer experience is now so deeply entangled with quality and testing that enterprises place their own QA engineers in customer advocacy roles. These testers with Groovy developer skills spend much of their time on a customer’s site, identifying issues and advocating for solutions. Testing and quality are intimately related.
What exactly is the relationship? We talk about these subjects because there are apocalyptic quality failures which cost millions, and failure creates karmic problems, problems that ripple out across client relationships.
Although a quality failure at a customer site is stressful it is also the most intensely motivating kind of failure, because it has the power to escalate the level of urgency in the delivery pipeline, in the full cycle of continuous integration, continuous testing, and continuous delivery. Presently there is an additional strain in the relationship between customer experience and quality assurance. The strain results from the new requirement to have engineers in what were previously simpler testing roles, and this is the first unintended consequence of Devops.1 But because of the simultaneous requirement that testers assume customer advocacy roles there is a disconnect at precisely the pivotal point previously occupied by the non-technical QA testing staff.
If an engineer is testing a customer site with customer team members involved, and scripting tests using tools like Selenium and Coded UI or BDD code like Cucumber and Gherkin, the customer team is likely to feel lost in a random forest of jargon. Engineers staffed for testing roles are not ideal for this position, but who else can do the development work required to script tests? Now Functionize resolves the entire dilemma by returning the testing capability to non engineering human resources.
Functionize partners with non technical personnel to intelligently replace engineers in QA. We accomplish this with patented new machine learning technology which learns test cases in such a way that no future scripting nor any editing of scripts is required. Functionize learns your user interface and actually creates new test cases with each new integration of code. The benefits of enabling non technical staff to gate and release new software with confidence and accuracy heralds a new wave of intelligent true automation testing. Let’s see how Functionize kills one of the most ancient and persistent bugs known to software development.
In each cycle of regression testing a curious phenomenon emerges where bugs become increasingly immune to scripted tests in a manner analogous to E. coli developing immunity to penicillin! Let’s call that bug a mutant. Each time developers commit a bug fix to a module a subtle new error may be introduced which the scripted battery of tests are less likely to discover than in the previous cycle.2 The standard remedy nowadays is to edit existing test case scripts to achieve finer granularity, because the mutant is resistant to previous tests. In other words, presently the only method of fighting mutant bugs is for engineers to redact existing test scripts or write new ones. It is as if test cases are prejudiced; they are likely to detect only what they are coded to detect.
What if an intelligent ubertester could predict the appearance of mutants and present a line of new regression tests to its human companion tester without coding? That ubertester lives now in the form of Functionize. Functionize has a high IQ and actually reformulates its own tests to anticipate new mutant forms of old bugs in modules.
Functionize replaces engineers with a combination of human and machine intelligence: the perfect smart testing tool in the hands of intelligent non technical testers who are more likely on technical par with customers and end users. This simplifies a Devops devolution which continues to complexify the testing world and distribute headaches unevenly among all involved team members.
Another source of inequality arising from bug behavior is known as defect clustering, which means that bugs are not equally distributed across all modules in an application, but instead tend to lurk in groups, especially around newer more recently coded modules, and those with experimental functions. Bugs of a feather tend to huddle together; several in one module while a majority of modules may have no bugs at all. These empirical anomalies in software testing are a permanent headache for human team members. But Functionize has unlimited endurance to sift pests from the infinite tedium of modules. Functionize never forgets a failure. It can repeat test cases and revise itself to adapt to changing app behavior. No scripting is required.
Functionize automatically creates new test cases! The perplexing annoyance of scripting new test cases on a Selenium dashboard after every code change from developers is fully relieved and eliminated by Functionize’s patented Adaptive Event Analysis. AEA is a new method of machine learning which recognizes changes in visual rendering and layout between code revisions, and actually adapts its own test cases to anticipate potential errors in new rollouts. Functionize is now literally revising the FURPS model.
Functionize extends the golden handshake to QA engineers. When was the last time you used a calculator that added two numbers incorrectly, or produced a division error? When the program does not change, quality is assuredonce and the game is over. QA is dismissed. We rarely enjoy this luxury in the innovative realm of software development in which everything under the Sun is new and must be proven. Human testers strain to maintain comprehensive test regimes because of increasing complexity. However, replacing traditional testers with engineers is not the solution. We believe that human testers empowered by the intelligence of Functionize is the answer. Functionize further relieves the burden because it never forgets a test. Once learned, test cases are recalled and revised automatically to ensure that new code changes do not break pre-existing modules.
Complexity in today’s software demands equal complexity in quality assurance and testing. But scripted test cases written by QA engineers to create replayable tests turns out to be a paradox, because it is a second level development complex. It installs more developers in your QA department, rather than preparing existing testers for future complexity. It is an unintended and impracticable outcome of Devops. And this is the pivot point where we define the relationship of quality to testing: quality is determined by the customer experience and it is guaranteed by Functionize.
We have arrived in a new world of complexity of software testing, one in which Big Data demands accelerated performance from both innovative machine learning methods and from the most recent hardware upgrades. QA engineering staff is only a temporary solution, a placeholder for Functionize and truly intelligent testing tools which can track ALL issues and never forget one. True FURPS quality assurance guarantees a pristine customer experience and Functionize revitalizes FURPS: Functionize, Usability, Reliability, Performance, and Supportability. Functionize's intelligence keeps everyone in the quality loop.