If you are limited in time, what you always are, markov chains resulting in trees with percentages of usage, can help you to priorize parts of the system for testing.
Finding the right test cases is always a big problem. In the following an outline of methods, which can lead to an idea or directly to a test case:
Black box:
- requirement / use case based testing
- traceability matrix
- crud ( create read update delete
- flow testing, scenario testing, soap opera testing
- user / operational profiles, frequency and priority / statistical ( markov) – feature functions interfaces
- design by contract
- equivalence class partitioning , boundary value analysis
- classification tree method
- state based testing
- cause effect graphing
- decision tables, decision trees
- combinatorial testing ( orthogonal arrays, pair-wise, n-wise) – time cycles
Grey box
- dependencies relations between classes, methods or components, services, application, system – communication behavior
- trace or protocol based testing
White box
- control flow-based
- statements (c0), nodes
- branches (c1), transitions, links, paths
- conditions, decisions (c2,c3)
- elementary comparison mc/dci
- interfaces (s1,s2)
- cyclomatic complexity
- read / write acces
- def / use criteria
Positiv valid test cases vs. negative invalid test cases
Fault based testing including risks, attacks, errors, bug patterns and exploratory testing.
Also choose the right selection for regression testing.
Notes from OOP 2012, talk by Peter Zimmerer