Test Design for Security Checks
How testers choose a small set of cases that still catches mistakes, and how the same ideas make a security check trustworthy.
OpenVAPT Academy handout. Online, with the self-check quiz: https://openvapt.com/academy/p23.html. Offline: openvapt learn P23.
Read First: F3
You Will Be Able To
- Use equivalence partitioning and boundary values to pick test cases.
- Explain why every check needs a failing and a passing example.
- Recognise false positives and false negatives as test design problems.
Why Test Design Matters
A check that reads a configuration value can meet thousands of different files. Nobody can test them all, so testers group inputs and pick the cases most likely to expose a mistake.
Equivalence Partitioning
Split the possible inputs into groups the check should treat the same way. For an SSH setting such as PermitRootLogin, the groups are: allowed, forbidden, limited to keys, and missing.
One case from each group is usually enough, because a mistake that affects one member of a group tends to affect all of them.
Boundary Values
Mistakes cluster at the edges of a group. If a check fails when MaxAuthTries is above 4, test 4 and 5, not only 3 and 10.
The same applies to dates, sizes and version numbers: the version just before a fix and the fixed version itself are the most useful cases.
Two Labs, Two Directions
OpenVAPT tests every check against a vulnerable lab, where it must fail, and a hardened lab, where it must pass. The first catches false negatives and the second catches false positives.
When a real machine shows a wrong result, the fix is a new test case in the lab first, then a change to the check.
In Summary
Group inputs, test one case per group, and test both sides of every boundary. A check is only trusted once it fails on a weak example and passes on a fixed one.
Apply It
These OpenVAPT checks put this module into practice. Open one to see its detection logic and source code.
| Check | Title | Severity |
|---|---|---|
HOST-SSH-001 | SSH Allows Direct Root Login | High |
Printable Worksheet · Teacher Answer Key · For Teachers · Print this page with your browser's Print command for a handout.
Also available as plain Markdown for notes, scripts and AI tools. Same facts, same source, no styling.
Lab
Run: openvapt explain HOST-SSH-001 and list the input groups its detection must handle.Run: openvapt demo vulnerable --only HOST-SSH-001 --out p23v and openvapt demo hardened --only HOST-SSH-001 --out p23h, then compare the evidence.
Check Yourself
Answers are checked in your browser and never stored or sent.
References
Adapted from the OpenVAPT Academy (openvapt.com), built by AI Cybersecurity Engineers, used under the OpenVAPT Source-Available Licence 1.3. Free teaching use under Teaching With OpenVAPT. Pre-release material may be wrong or unstable; use at your own risk.
Cite This Page
If this page helped your work, please cite it. The version and web address are filled in; the access date is today's date in your browser. Every other style, and when credit is required, is on How to Cite OpenVAPT.
OpenVAPT. (2026). P23: Test Design for Security Checks (Version 0.1.0-alpha.6). OpenVAPT Academy. Retrieved October 16, 2026, from https://openvapt.com/academy/p23.html
In text: (OpenVAPT, 2026). Accessed: the date shown is today's date from your own browser (the site's build date without JavaScript); change it to the day you read the page.
@misc{openvapt_p23,
author = {{OpenVAPT}},
title = {{P23: Test Design for Security Checks}},
year = {2026},
howpublished = {\url{https://openvapt.com/academy/p23.html}},
note = {OpenVAPT Academy, version 0.1.0-alpha.6. Accessed 16 October 2026}
}
Accessed: the date shown is today's date from your own browser (the site's build date without JavaScript); change it to the day you read the page.
Citing OpenVAPT does not mean OpenVAPT endorses, approves or has reviewed your work.