If you think you have written enough tests, it’s high time you reconsider it!

What is this about?

It’s about a built-in feature of Codeception (a tool powering the Falcon’s testing suite, which is a BehaviourDrivenDevelopment-styled PHP testing framework, brought to you by Codeception Team, OpenSource and MITLicensed)which helps in analyzing the code coverage.

This feature of Codeception allows you to collect code coverage reports for all your tests: unit, functional, and acceptance and merge them together. So now you can review what parts of your applications are tested and which are not.

Oh nice, but sorry I don’t have the bucks

Well, this is absolutely FREE!

Great, but sorry I don’t have that much time to install and set up the configs

Installation and setup can be done in the time you finish reading this message.


Step 1. Install Codeception
installed via PEAR

$ pear install codeception/Codeception

or via Composer

$ php composer.phar update

Step 2. Configure code coverage
To enable code coverage put these lines in the global configuration file codeception.yml:

coverage:
    enabled: true
    include:
        - app/*

Step 3. Generate the report
To generate a clover xml report or a tasty html report append also –coverage-xml and –coverage-html options.

codecept run unit --coverage --coverage-xml --coverage-html

Cool, tell me what do you have?

When you execute your tests to collect coverage report, you will receive statistics of all classes, methods, and lines triggered by these tests. The ratio between all lines in the script and all touched lines is the main coverage criterion. 

In the ideal world, you should get 100% code coverage. But in reality, this is relative to an individual project (Falcon has set a different percentage threshold for different classes). Because, where on one hand even 100% code coverage rate doesn’t save you from fatal errors and crashes, on the other hand, a code coverage for classes which are crucial from a logical point of view, a coverage tending to 100% is pivotal.


As shown below, this feature provides a comprehensive analysis of Line Coverage, Method Coverage, and Class level coverage of your project. Along with this, it also provides visuals in form of graphs in the dashboards shown below.

This is how the dashboards and visual stats look like –

Zoom Screenshot from 2019-11-29 18-53-14.png
Code coverage percent-wise 
Zoom Class Distribution Tests Before.png
Classes Line Coverage Distribution
Zoom Method Distribution Test Before.png
Method Coverage Distribution
Zoom Screenshot from 2019-11-29 12-58-42.png
Screenshot of code coverage before and after of the modules worked on in Falcon 189

Oh CRAP!

As shown in the image below, not only do you have a comprehensive and exhaustive analysis of the coverage from this tool, but you also get CRAP score for your functions of the respective classes.

Zoom Screenshot from 2019-11-29 19-07-38.png
CRAP score 

As we reach the end, I hope that setup of yours is done. So what are you waiting for? Get your project onboard with this so that you can “Refactor with Confidence”! ✌️

References
Installation: https://codeception.com/installhttps://codeception.com/docs/11-Codecoverage