Ad-hoc testing (or put simply, unplanned testing) can be a great way to target some of the bigger problems that may show up early during software development. It may even save you time and money before you move on to more extensive testing procedures.
However, as a software program moves past the early development phases, they need to ramp up the exacting nature of quality assurance assessment. After all, software developers need to see concrete results to see that their product is working as planned; they cannot rely on hunches.
This is where test cases come into play. Test cases provide a systematic execution of testing that is thorough and accurate. More specifically, a test case is a tangible document that outlines a specific set of criteria (i.e., prerequisites, procedures and results) that software must meet if it is to be declared satisfactory.
In this article, we will cover all the components of test cases and how to go about creating and implementing them.
How Does a Test Script Function in a Test Case?
Test cases should be carefully constructed and documented. This includes expected outcomes. However, it is the specifically targeted procedures called test scripts that drive most of the action.
Test scripts are detailed and specific plans of actions. Each script generally tests one area or function of a software program. A test case may be made up of one or several test scripts. These scripts are included as part of a test case template.
At its core, test planning occurs in three steps: finding the requirement, figuring out what to test, and then deciding how to test it. A test case includes both the “how to” of the test and the actual test results.
How to Write A Test Case from a Template
Test case templates are designed to help structure, identify, and contain test cases in an orderly, repeatable format. While they are not entirely standardized, many software applications use an automated format similar to the one below:
- Test Suite ID – The established ID for the associated grouping of test cases
- Test Case ID – The established ID for this test case
- Test Case Objective – A summary of what is to be gained by administering the test?
- Related Tests – Any associated, relevant, or pertinent, test cases
- Prerequisites – A description of any procedures or conditions that must be implemented before a test begins
- Test Scripts – The specific step-by-step actions that comprise the test
- Test Data – The facts and figures used for the testing process
- Anticipated Outcomes – Outcomes that are expected and usually hoped for
- Actual Results/Summary and Data – A true reading or measurement of actual outcome after the test was completed
- Pass, Fail, Null – Results can be a success, failure, or invalidated
- Comments – An open note section for additional information regarding procedures, development, or insights
- Test Environment – Listed systems and other arbitrary factors involved in implementing the test
- Author/ testers – The individual or individuals who wrote the test case and who performed the tests
- Date– The day and perhaps time when the test was applied
Of course, while some of the above categories are relatively easy to create, others may require more time and effort. Let’s discuss constructing some sections that require a bit more consideration:
How to Write Test Cases from Testing Types
Test cases typically target specific criteria. When quality assurance engineers establish an exact scope and purpose, they will usually zero in on a specific testing type.
Testing criteria and types help programmers create test case objectives. They inform test scripts, anticipated outcomes, and a whole lot more.
Functional test case
This is a type of black box testing used to see if an application will work with the rest of the system. Black box testing occurs when a tester analyzes how well an application is functioning without actually looking at its tangible structure or makeup. By requiring it to perform a function, it can be determined if it will meet the expectation of an end user.
For example, you may want a test case for an Internet login page that assesses a “remember me” function. As such, your test script may instruct users to:
- Go to a login page
- Enter their sing in information
- Log out
- Click on log in to see if their information is saved.
Unit test cases
The login function test script above is also an example of unit testing. A unit is the smallest testable component. Obviously, these test scripts are typically short.
Performance test cases
These types of tests are frequently automated. Test cases in software testing may, for example, measure response times calculated in a 1/4 of a second for every five thousand users. This would require the author to include the type of automation employed.
Validation Test Cases
A validation test case will help you determine if the software fulfills its duties as laid out by the client. For example, if the client requires that users can access the web application from mobile, then you will have to design a validation test case that ensures that this condition is met and that the code is thoroughly analyzed to show for it.
User interface test cases
Test scripts of this nature often ask testers to observe and document appearance. For example, they are used to make sure that graphic user interfaces and similar applications are not making “Q’s” that look like “Z’s”.
Security test cases
A common security test script involves penetration testing, or encryption stability. In all likelihood, the test script will include more than one form of computer driven hacking procedure.
Integration test cases
This kind of test focuses on different kinds of modular interaction (how modules behave with one another). It might ask testers to record lag times between different processes within a system.
Usability test cases
Usability test cases allow you to observe first-hand how a software functions while its intended users actually use it.
User acceptance test cases
Writing test cases for games often means getting an overall thumbs up for the program. This is where user acceptance test cases are often implemented. During a user acceptance test case, the intended user or client will try out the software to detect any potential problems with it.
Regression test cases
Testers may need to reference other tests here as a reference for change. Regression tests try to discern how new alterations make positive and negative changes in an existing program.
Good Test Writing Practices
Effective test cases are able to get straight to the heart of the matter. They are designed to be practical and to fulfill a specific function. As such, the language should strike a balance between technical and simplistic. That is to say, the details should be included, but anything superfluous that doesn’t help with the testing procedure should be left out.
Be aware that language can also vary significantly because of the level of the test case. In “high-level” test cases, some or all of the defining characteristics are considered abstract. Meanwhile “low-level“ cases are seen as being more concrete.
Needless to say, all testing results should be included. With time being a factor, some testers may feel tempted to omit data that seems useless, or at least modify it so that it appears to have some purpose. However, because test case information is often repurposed, omitting any data can lead to unforeseen complications down the road.
The key word for test case verbiage is “utility.” The information in your template should be structured economically, but detailed enough so that it can be used again. Likewise, testing instructions should be complete enough so that they are easily repeatable.
At times, constructing a test case can seem exacting. But the economically driven world of software engineering did not randomly produce this process as busywork to drag out product development.
Bottom Line: Test Cases Matter
Test cases are time savers and valuable IP that can often be utilized in surprising new ways. If they are to fulfill their duties, however, they should be well-designed. This guide should help you construct test cases in a way that yields tangible results.