One of the major disciplines of software engineering is how to do testing. A test suite cannot prove that the software is working due to the limited set of test cases. To prove the correctness of computer software is one of the harder disciplines of theoretical computer science. Instead a test suite is used to find as many errors or bugs as possible. A test case consists of both the user input and the expected outcome.
The behavior of PAM can be very complex. To find a minimum set of test cases can be difficult. For example, in some situations, accounts are required to expire after 60 days of inactivity. Expiration of an account is difficult to test since you are supposed to wait for 60 days. In order to perform such a test case, you can move the clock ahead by 60 days instead of waiting. But such a test case can often be safely ignored since expiration is not configured directly by PAM.
While testing a particular service, three possibilities for each module must be considered:
Valid...