BLOG

Software Testing Fundamentals

Thanks to the innovative, felicitous use of machine learning techniques, Functionize is the harbinger of a new era of testing automation which now transcends compatibility issues and relieves much of the pressure on enterprises to staff QA engineers who wield advanced degrees in computer science. Now it is very possible for nearly anyone to engage in verifying and validating a new software deployment because Functionize’s intelligence boosts everyone’s testing prowess; even marketing and customers can get involved. Functionize’s injection of intelligence into continuous testing was prophetic. Nowadays most enterprises recognize the need to efficiently release products, but until the rollout of Functionize, no testing automation enabled gating of releases with full confidence. How do we know exactly what the best companies are doing to create the best customer experience?

Reverse Engineering QA

Quality assurance is now relabeled and to some extent reinvented as customer experience. So profound is the dominance of this new perspective that, in a Hewlett Packard QA job description, the phrase “customer experience” actually appeared more often than “quality” or “testing.” The focus is the buyer, the end user, the customer. HP has a long tradition of the highest quality and most durable products, and so it is reasonable conjecture that the company’s QA methods are effective and efficient. Our study of software testing fundamentals may be well informed by way of intricately analyzing those methods. In order to discover the QA methods used by the best companies today we are taking the circuitous approach of dissecting actual job posts. From these we will learn exactly what is required of QA Engineers today. And by inference we will know the methods used within their continuous integration, continuous testing, and continuous deployment pipelines.

Once we discover the expertise and tools they require of team members we can infer their methods. Tools are designed to accommodate a specific suite of automation testing techniques. From these tools we may distill the absolute truth about software testing fundamentals of today, those in actual use, rather than speculating from a theoretical or academic set of principles. For example, one common requirement of a QA engineer is experience with a continuous integration tool such as Jenkins. This is no small demand when you discover that Jenkins is really a scripting language in its own right. Jenkins has a scripting console, from which engineers orchestrate the actions of a “master” and its “agents,” to offload builds, and by way of complex scripting thereby “automate” a phase of the integration and delivery process. But is this true automation? Not anymore.

QA Developers?

Instead of moving toward intelligence in automation, testing now requires an overhead of scripting by QA Engineers with advanced degrees! Look at Jenkins, for example, a common skill requirement of Fortune 500 QA team candidates. Jenkins is an automation server, which runs on Apache Tomcat servlet containers, and which enables developers to script many of the redundant processes of continuous integration and continuous delivery. But this means you need developers to carry the entire process from software revision to delivery. Where does traditional testing fit into this pipeline? It’s just too complicated. Right now top companies hire QA Engineers with advanced degrees; is so much technical skill necessary for testing? Do customers need this level of skill to use your product? If so, they will be scouring the internet for an alternative. But developers need Jenkins now and it’s imperative because the industry evolved toward complexity instead of intelligence! Testing is getting more difficult instead of easier. Testing should not require scripting. Now Functionize liberates developers from scripted testing.

And the setup can get even more complex when the OOP language Groovy plugin further enables developers to write Groovy code directly into the Jenkins console1. Jenkins documentation includes sample scripts which show how to execute Groovy scripts on agents. But the Jenkins doc takes a surreal turn when explaining how to install the Chuck Norris Plugin, and it feels like the developers have gone too far down a rabbit hole. Can this really be the state of the art in software testing fundamentals? When Fortune 100 companies like Tesla require their new QA members to be “good at open source tools like Jenkins,” the answer is clearly, “yes!”2 The QA world has become this complicated.” What are the other skill requirements of Fortune 100 companies’ QA team?

Customer Centric QA

Many QA engineers now work primarily in customer support roles, as specified in job descriptions. QA managers of the past may be surprised to find their modern counterparts bearing moniker which includes “customer assurance” as a variation of quality assurance. Technical support is now often remade as “technical customer support,” and responsibilities include dedicated customer centric quality management. QA engineers today must possess diplomatic skills to represent a customer’s sentiments while analyzing a variety of input from developers and business members; they must command data collection tools to integrate and analyze Big Data arising from Big Testing. Our modern QA engineer manifests customer advocacy and becomes the voice of the customer. But to perform this ambassadorial duty the QA member somehow needs a Master’s in engineering, along with certification in Lean Six Sigma!

Persistent Tradition

QA Engineers are still responsible for successful verification of Apps prior to deployment. And QA Engineers continue to create and execute tests both manual and automated to ensure product quality. These roles are the same on the surface but the mechanics have changed. Waterfall is replaced by Agile and Devops. Development of test cases now increasingly includes mobile apps and the complexity of mobile platforms. Functional system testing, integration and regression testing persist in the workflow of the QA engineer today. As illustrated with Jenkins above, one new form of exotica in QA today is the requirement to develop automated testing scripts for applications. Although rarely stated, this skill requires fundamentally the same technical knowledge as any other developer! And this extraordinary burden brings us into focus on intelligent testing at exactly the pivotal moment when it is most needed. Engineers are so valuable that they should be coding for the development of product, not scripting tests for the products of other engineers. Functionize democratizes testing automation so that everyone involved in business outcome can create incredibly resilient test cases – even without an advanced degree! Functionize frees your engineers to focus their time and expertise on product development.

The fundamentals of software testing in principle will always include the logging, tracking, and management of failures, along with reporting and resolution. However, the mechanics of performing those tasks may change in such a way that conceals the core, as a calculator conceals the fact that most people don’t know an algorithm to find the square root of a number. Now, in other words, QA engineers need the ability to write Java or Python code, and this inevitably means the use of libraries and reusable code. This translates to a lot of coding on top of development. A strong comprehension of REST and APIs is often required. Tesla actually requires QA engineers to be proficient in the design of frameworks, not just their use to achieve some short term scripting automation. With Functionize the overfitting problem of putting engineers in testing roles is solved.

The New Intelligence in Testing

One way of reverse engineering the testing process is to read job ads posted by Fortune 100 companies, wherein we can observe by proxy the mechanics of their testing procedures. A surprising revelation from this approach is that QA is retitled to CA – meaning Customer Assurance – to emphasize a new perspective and change the mindset. At the top of the CA’s list of responsibilities is customer advocacy. Functionize contains the testing intelligence to become the perfect partner in verification and validation of web apps because it the only testing solution that is powered by Adaptive Event Analysis. Functionize makes it possible for customers and any non technical team members to record and illustrate test cases and improve customer experience. This further relieves enterprises of the burden to staff QA with engineers. The intelligence of Functionize is the new wave in true automation testing. Functionize is a relief to developers, QA, customers, and even the human resources of an enterprise!

1 https://wiki.jenkins.io/display/JENKINS/Jenkins+Script+Console
2 https://www.tesla.com/careers/job/qa-engineer-39182