Objective:
- To perform black box testing on a provided compiled library (
SmartLock.dllorsmartlock.jar). - To discover and document the system's behavior through testing.
- To identify and analyze a hidden, randomly triggered error within the system.
- To automate the test execution using GitHub Actions.
System Description:
You are provided with a compiled C# DLL, "leetgrind.dll," containing an obfuscated implementation of a smart lock system. The system provides the following public methods:
Reset(): Resets the lock to its initial state.EnterCode(string code): Attempts to unlock the lock with the provided code.Lock(): Locks the lock.GetLockState(): Returns the current state of the lock.
You are provided with a compiled JDK jar, "lock.jar," containing an obfuscated implementation of a smart lock system. The system provides the following public methods:
reset(): Resets the lock to its initial state.enterCode(string code): Attempts to unlock the lock with the provided code.lock(): Locks the lock.getLockState(): Returns the current state of the lock.
Tasks:
-
DLL/JAR Integration:
- Create a test application (in any language that can interact with a DLL) to utilize the "leetgrind.dll.". The DLL is compiled using
DotNet 8.0 - If you are using Java create an application in any language that can interact with JAR. The JAR is compiled using
JDK 21.0.6
- Create a test application (in any language that can interact with a DLL) to utilize the "leetgrind.dll.". The DLL is compiled using
-
State Transition Analysis:
- Analyze the behavior of the lock system by interacting with its public methods.
- Create a state transition diagram that represents the observed behavior of the lock system.
-
Test Case Design:
- Design black box test cases to test the lock.
- Include test cases for:
- Valid and invalid code inputs.
- State transitions between "Locked," "Unlocked," and "Fault" states.
- Boundary conditions and edge cases.
- Testing the
Reset()andLock()methods.
-
Error Discovery and Analysis:
- Through testing, discover the hidden, randomly triggered error within the
EnterCode()method. - Analyze the conditions that trigger the error, including:
- The probability of the error occurring.
- Any patterns or dependencies related to the error.
- The exact number of incorrect password attempts that triggers the lock to go into an error state.
- Through testing, discover the hidden, randomly triggered error within the
-
Test Reporting:
- Prepare a test report (ONLY PDF or Gihub Markdown format) that includes:
- A state transition diagram.
- An analysis of the discovered random error
- Recommendations for any improvements
- Prepare a test report (ONLY PDF or Gihub Markdown format) that includes:
-
Test Automation with GitHub Actions:
- Create a GitHub repository for your test project.
- Implement a GitHub Actions workflow that:
- Executes your test cases.
- Ensure that the workflow passes successfully.
- Create a GitHub repository for your test project.
Note: The PDF/Github markdown of your report should be uploaded on Github.
Bonus:
- Successfully determine the exact number of attemps and probablity that can cause the lock to enter the "Fault" state.
Evaluation Criteria:
- Completeness and effectiveness of test cases.
- Accuracy of state transition analysis.
- Thoroughness of error discovery and analysis.
- Clarity and completeness of the test report.
Important Notes:
- You are not allowed to modify the provided "SmartLock.dll."
- Focus on black box testing techniques to discover the system's behavior.
- Pay close attention to boundary conditions and edge cases.