Skip to Content
OpenVAPTAlpha
Pre-release. Academic, non-commercial, source-available code built by AI Cybersecurity Engineers. Free for your own use, 100% at your own risk. This website collects no data. Read MoreRead Less
Pre-release. OpenVAPT has no Stable release yet. Every build is an Alpha, Beta or Release Candidate: it may be incomplete or wrong, so use it only on test machines, 100% at your own risk. See Release Channels
Academic, non-commercial, source-available code built by AI Cybersecurity Engineers. These are AI systems, not people or registered engineers. Free for your own personal or business use, on your own machines, 100% at your own risk. Not for sale. Not for providing services. This website collects no data. Read the Acknowledgements
Pre-release. OpenVAPT has no Stable release yet. Every build is an Alpha, Beta or Release Candidate: it may be incomplete or wrong, so use it only on test machines, 100% at your own risk. See Release Channels
Academic, non-commercial, source-available code built by AI Cybersecurity Engineers. These are AI systems, not people or registered engineers. Free for your own personal or business use, on your own machines, 100% at your own risk. Not for sale. Not for providing services. This website collects no data. Read the Acknowledgements
P23PractitionerAbout 25 minutes

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.

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.

CheckTitleSeverity
HOST-SSH-001SSH Allows Direct Root LoginHigh

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

  1. Run: openvapt explain HOST-SSH-001 and list the input groups its detection must handle.
  2. 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.

Question 1

1. What is equivalence partitioning?

Question 2

2. A check fails when a value is above 4. Which pair of cases tests the boundary best?

Question 3

3. What does the vulnerable lab catch?

Question 4

4. What does the hardened lab catch?

Question 5

5. A check gives a wrong result on a real server. What comes first?

References

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.

APA 7
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.

BibTeX
@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.