I'm interested in putting together some manual test cases in order to verify that the BL of a particular web application is functioning as intended.
Unfortunately, the coupling between the UI and the BL layer is high enough that I would need to spend some considerable time if we wanted to perform any automated testing using tools like Fitnesse, etc., and I don't see it as a value expenditure of time given the current deadlines, etc.
My question is, is it reasonable to perform manual testing (testing would be as defined here) in scenarios as described above, and if so:
Example:
REQUIREMENT: If a user provides two cost entries for the same type of
item, the application will take the higher of the two costs, and zero
the second.
TEST: Add two cost entries, both for vehicle use, submit the ticket.
Verify that the invoice for the ticket only shows the higher of the two.
How detailed should the system tests be for the BL layer?
How long will your system need to be supported? After you ship this will anyone ever need to regression test it again? If so, the tests must be detailed enough for them to be able to run tests based on the document. Otherwise why even bother writing them down?
With the correct tools, you can automate black-box tests through the UI even if your UI and BL are coupled. If your system will exist for many years and the cost of regressions is significant you should consider trying to automate tests through the UI. Executable tests cases are enormously more valuable than a document of written test cases.
In the case of general system tests and smoke tests, will designing each test to cover a particular requirement be sufficient for coverage?
At the very least you also need to do exploratory testing and try to break the program in edge cases to maximize your ROI when manual testing. Testing the happy paths will yield far less bugs than trying to break it at the edge cases.
Also consider any omissions in the requirements. Depending on the abstraction level of your requirements there could be many scenarios omitted.
Anything else I should take into consideration when designing manual tests?
Do what you can to automate setting up the test fixtures and exercising the system. Even if you cannot make that extra step into automated tests, you can save a large amount of time if you can setup test fixtures instantly.