The Value of Software Testing History

The Value of Software Testing History Bob Reselman (Guest Author) August 16, 2017

January 26, 2026 · 10 min read · Testing Guide

The Value of Software Testing History

Bob Reselman (Guest Author)
August 16, 2017

There ’ s a saying that ’ s being thrown about in the software essay community. It goes like this: “ A testing process without history, ain ’ t. ”

According to Geoff Cooney, a software engineer at mabl,

“ Test history reveals aspects of software lineament that can not be determined by any one trial. The thing that come to mind immediately is performance behavior: is my codification speeding up, or slowing down? Also, give the prominence of eventual consistency when it get to set system province, determinism can be hard to get by at the systems degree. & nbsp; A good test history can aid identify truly flaky tests and ply context for tests that do fail. ”

Geoff has it right. When it comes to historic reporting, info collect from a single testing session is of no more value than the score of a single baseball game when it comes determining the standing of each team in the conference. Without having the welfare of the historical data related to your tests, you lose visibility into the trends within and about the software quality. For illustration, is the current code making your software go faster or slower? Or, are the algorithm in the software losing truth? & nbsp; And, as Geoff points out above, as datum integrity become progressively subject to the dynamics of eventual body, the result of one test might be misleading. One test session might report failure, while ten others pass. The information we gather from test history cater the information necessary for the analysis of trends and probability relevant to package quality.

Allow me a share a causa in point. A while back I was doing some development employment that involved the extensive use of substance queue. The rudimentary mechanic are as follows: a message queue sign to an AWS SNS issue receives a message that ’ s consumed by some application logic; the application logic in turn extracted datum from the message and forward some of the information onto an API terminus. (See Figure 1.)

Of trend I had a exam to control my programming. The test sent a message to the SNS matter, waited for a predefined number of seconds and then appear for the subset of data that was supposed to be within the get API ’ s sphere. (How the tryout gets the data from the API domain is another story, one that is not that relevant presently.)

Figure 1: Without test history even simple tests can be misleading, particularly those dependent to latency

The test failed every clip I ran it within the test runner, in this case Mocha/Chai under Node.js. However, when I started doing manual inspection or ran the test codification through a debugger, the tests legislate. I suspected a latency problem between SNS and the AWS message queue on SQS. So, I moved the topic and subscribing queue to different a AWS area. Turns out I was right. The job was latency. The code ran as anticipate in the alternate area. If you opine my experience is crucify, try expand the issue to multiple developers and software tester trying to debug a fixation tryout of this variety with ongoing commits hap in the background. It ’ s plenty to drive even the most patient group of people to the edge.

Yet, these sort of things happen everyday. I do not have adequate fingers and toes to weigh the number of developer and testers who hold attract their hair's-breadth out combat latency problems. However, if test history was built into my examine process, I could have simply run my tryout X amount of times against an SNS/SQS combination in one region and then the like number of times against identical code in a different region. Comparing the history of results would have saved me an even ’ s worth of heartache.

As you see from my example, the benefit of receive a testing process that provides test history is patent. Yet while most squad intuitively recognize the value of examination history for metric reporting, many just compile test history manually over time into ad hoc story, often intended for the eyes of management. However, supporting the elaborate, ongoing panorama of test history such as code reporting trends, test count overtime, stability metric, etc… as part of the Software Testing Lifecycle involve planning. Also, making sure the data reflected in a exam history is useful throughout the enterprise requires input from all the parties that experience interest in the software, from design to loose.

So, where do we commence?

Not all Software Testing Reports are Historic

The best starting point is to see that a test history is an aggregation of testing metrics gathered over two or more testing sessions. A testing session is the execution of a trial or a suite of examination. Listing 1 below display an representative of a elementary tryout suite of unit exam written in JavaScript for a Node.Js project.

Listing 1: & nbsp; A simple, distinctive unit test suite
Once a test session executes, we can report the result of the session in a variety of report formats. Figure 2 below shows a report that describes how many tests in the suite passed and how many failed.

Figure 2. A Pass/Fail test report for a Node.js task using mochawesome.

The prosody reported in Figure 2 are the time it lead for the retinue to run, by test and overall. The report too shows the number of tests in the rooms, the bit legislate, the number failed and the number pending.

Figure 3, belows demonstrate a code coverage report create use the Istanbul projection. The account is derived from info cumulate utilize the test cortege illustrated in Listing 1.

Figure 3: A coverage story shows the line of code work by a set of tests

For autonomous testing across multiple user personas, check out SUSATest — it explores your app like 10 different real users.

The reporting report in Figure 3 has a variety of metrics, most spectacular are the line of code work & nbsp; and not exercised by the exam suite.

The important thing to understand is that while both reports are valid, they cater no historic information about the testing process.

As mentioned above, we need to aggregate info over many quiz session in order to furnish story.

Using Developer Tools to Create Test History

There are a few means to near implementing test history. Implementations will change according to the level and case of testing you are doing. For example, you can use an off the ledge puppet, such as & nbsp;unitTH for creating test history at the Java unit test level. Teamcity cater a test history feature for source code too. Azure integrates with Visual Studio Team Services to provide performance examine history. These are but a few of the tools useable.

The welfare of utilize a pre-existing tool is that you save time and avoid reinventing the wheel. Yet there are times when even the nigh feature oppressed creature will descend short when it comes to meeting the need at manus. In such suit you might need to take a custom approach in order to create utile test history.

Taking a Custom Approach

When it comes to considering a custom approach, one mind is to take advantage of cloud based logging services. For example, the test architect will bind tryout logging to a log service such as Logentries or Sumologic. Then the test designer will devise a way to posttryout resultsas log entries to the logging service. Once test outcome data is stored in the logging service, the test designers create historic reports utilise the information aggregation and reportage capabilities provided by the logging service. & nbsp;

Figure 4: Using a logging service ’ s account capableness render a way to create a history of test termination

One advantage of utilise a common logging service is that teams will often run tests against different environments. Being able to tag those environments and filter the log introduction accordingly fits well with these creature ’ strengths.

Correlation, the Next Frontier for Test History

There is little downside to ensuring your test processes support story. If you got nothing more than being able to determine trends and form in your package over time, you will still be way ahead of the game. However, where things get really begin to get interesting is when we combine histories from different parts of an application to determine correlation.

For example, guess that that we have a front end test that shows failure in its history. Also, when we conduct a look that backend server logs, we see occurrences of failure. Consider the distinct frontend and backend histories gives us a circumscribed perceptivity. We know the frontend has problem and we know the server has errors intermittently. But, we & nbsp; do not get the full image. However, when we start looking at thetest resultsin price of historic interaction between the different parts of the coating, frontend and backend, we get a new perspective on matters.

Of course we need to have a way to tie the histories together. This is where using a logging service as a common repository of exam data arrive into drama. We need to plan not only how to make the association but also how to happen valid correlation. At the least we will need to get up with a mark dodge that allows us to “ joint ” the log entries from the different parts.

One way is to use a correlation identifier to bond together application calls that are portion of a dealings that occurs over many domains. Thus, the first, easiest thing to do is make sure that our frontend tests and backend services support correlativity IDs.

A more custom solution is to implement especial tag properties within log entries made by node side tests and backend deportment. For example, we could implement the tag, client_ip_address and server_ip_adddress for the log entries made by front end tests and also for the API logs. Then, when the API error out, we can demonstrate a direct, historical connecter between customer and server. The failure might be coincidental or they might correlate. Such determination requires a good deal of consideration.

Whether you use a correlativity ID or a more robust, especial data structure to help binding among many trial histories, the significant thing is to plan onwards to create a proficiency that combine the historic data together. Test history correlation is travel to get a more crucial aspect of test analysis, particularly as more enterprises create architectures that make all-encompassing use of microservices.

It Takes a Team to Create Meaningful Test History

As you can see, with some planning and a little elbow grease, the physical aspects of creating tryout history are rather achievable. It ’ s just a inquiry of having the summons in place to aggregate metrics from one or more test session into a meaningful reporting structure. Thus, having your system weave test account into the fabric of your testing surroundings should be easy simple? Right?

Wrong.

Just because creating test story is essentially elementary, it do not necessarily postdate that it ’ s going to be easy to implement within the initiative. Think about this: When was the terminal time you sat in a design meeting in which developer, project managers, product managers, deployment engineers and testing engineers be present? Me? Up until a few years ago, it never pass. Usually test engineers were assigned to the QA Department downstream in the release process. If they got to see any codification before the typical, “ release to QA ” phase, they were lucky.

Granted things are commence to modify. In an enlightened organization the SDET is an entire member of the devone who enjoy the uninterrupted presence in the Software Development Lifecycle concede to all other member. At the least, this means operationally that the SDET is part of the code review process that accompany a pull request. Also, it means that the SDET ’ s code is dependent to the code review by the team.

According to Martin Leon, an SDET at Apple Inc.,

“ Probably the easiest, best way for any companionship to control a testing process that works is to make certain the SDETs are work in as the product is be designed. SDETs needs to be equal members of the growing team, from beginning to end. ”

SDET ’ s are really good at keeping code testable. And, they are very good at helping to shape trial metrics that have historic value as well as devising slipway to guarantee that those prosody are meet easy and analyzed in a meaningful manner. But, they postulate to be involved betimes on. As we feature learned on the terrain, if you need the capability to publish utilitarian test histories, it ’ s best to have trial engineering involved from the showtime of a project. Otherwise, as has been proven time and time again, those who do not know history are doomed to repeat it.

Putting It All Together

Having the ability to return meaningful test account is an capacity that is not going to lessen. Modern covering are go more granular, more ephemeral and much more loosely twin. Relying on the results of a single test session simply won ’ t do. We need data that is historical. And, we need to be capable to bind disparate histories together into meaningful information that describes the software in its totality. Such potentiality are accomplishable. The technology exists. The question is do we have the will to make historical software testing happen? Maybe you ’ ll discover the reply the next time you find yourself writing individual session test and hear a vox in the back of your mind echoing the phrase, “ a quiz process without account, ain ’ t. ”

Quality Engineering Resources

Automate This With SUSA

Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts needed.

Try SUSA Free

Test Your App Autonomously

Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts.

Try SUSA Free