Knowledge level
I am looking for a how-to for a beginner, not so much for a expert or consultant answer like "it depends".
Feel free to add the "it depends" parts nevertheless.
Question
How would you proceed if you were tasked with:
"Analyse this code base and tell us where to do more testing to find bugs and to prevent introducing bugs in critical components in the future".
Procedure
Step 1: Get data
This part seems clear to me.
- Get the code base
- Run it through a code coverage tool
- Get a heat map of which parts of the code are well covered and which are not (example screenshot)
Step 2: Analyse the results
This is the part I need help with.
- A
- Take the code coverage heat map
- B
- Take the parts with the most dependencies?
- Take the parts the software architects labelled as critical and important?
- Take the parts that used to have lots of bugs in the past?
- C
- Overlay the data from A with the information from B and find areas to improve
- Draw conclusions
Step 3: Provide suggestions for improvement
As a manager I probably would expect a prioritized list of areas to work on and improve.
- Priority 1
- Method X in class Y is called a million times and has low code coverage so we should increase coverage to 100% (100% coverage doesn't necessarily mean you've done a good job)
- Priority 2
- Component Z has low code coverage and has had lots of problems and bugs, so we should test more there
- Priority 3
- ...
Help required
Steps 2 and 3 are where I'd love to get some suggestions for.