1.代码覆盖度
可参考代码覆盖度概念
2.php代码覆盖工具
PHPCodeCoverage(PCC)是一个基于xdebug检测php代码覆盖的工具,它能够应用于黑盒功能测试,接口测试,单元测试等任何php代码环境,通过监听代码被执行的路径覆盖,展示代码覆盖的结果。
使用代码覆盖工具可以辅助我们检查测试过程中,哪些代码条件逻辑是一次都没有被执行过,从而补充遗漏的测试用例和场景。
PCC开源项目位置:https://github.com/cj58/PHPCodeCoverage 。
3.安装xdebug
3.1下载xdebug,windows上安装xdebug需要下载的是dll组件,下载时注意php版本,我的php版本是7.3.12
下载地址: http://www.xdebug.org/download.php,也可点击直接下载php_xdebug-2.8.0-7.3-vc15-x86_64.dll
我用的是wamp集成环境,将dll文件放在了php根目录下的zend_ext文件夹中
3.2配置xdebug,进入php的根目录,如:D:\Tool\wamp64\bin\php\php7.3.12,找到php.ini文件,添加以下配置,将zend_extension_ts改为刚才放置的xdebug的dll组件位置
[Xdebug]
zend_extension_ts="/zend_ext/php_xdebug-2.8.0-7.3-vc15-x86_64.dll"
xdebug.auto_trace=on
xdebug.collect_params=on
xdebug.collect_return=on
xdebug.trace_output_dir="/tmp/xdebug"
xdebug.profiler_enable=on
xdebug.profiler_output_dir="/tmp/xdebug"
4.安装PHPCodeCoverage
4.1下载PHPCodeCoverage,下载地址: https://github.com/cj58/PHPCodeCoverage,解压后放到wamp的www目录下,即apache的站点目录,便于后续通过页面访问查看代码覆盖情况
4.2进入PHPCodeCoverage目录,编辑config.php文件,设置data目录
5.应用
5.1在www目录下新建一个test文件夹,test下新建index.php文件
index.php的代码如下:
<?php
//引入pcc,include_once是PHPCodeCoverage主程序放置的位置
include_once("../PHPCodeCoverage/Pcc.php");
//创建一个Pcc对象,参数是项目的名称
$p = new Pcc('test');
//setAllMode()作用是合并所有监听结果,去掉这句话,就是每次请求都只显示当前执行时的路径了
$p->setAllMode();
//运行Pcc代码
$p->run();
$status = $_GET['status'];
if ($status == 1){
echo "Valid account";
}elseif($status == 2){
echo "Invalid account";
}elseif($status == -1){
echo "blacklist";
}else{
echo "error";
}
?>
5.2请求接口:共请求3次,status分别为1,2,3
http://localhost/test/index.php?status=1
http://localhost/test/index.php?status=2
http://localhost/test/index.php?status=3
5.3查看监听结果,访问PHPCodeCoverage下的index.php。
http://localhost/PHPCodeCoverage/index.php?
点击.pcc文件,即可查看详情。当点击+Expand时候,会展开当前目录下所有覆盖的php文件;
点击-Folded后,会进入目录检索模式,显示所有的项目以及覆盖的代码行数,下图显示index.php共覆盖了8行代码。
点开我们的测试项目test,即可查看代码覆盖情况。背景行是绿色的表示被覆盖。
可以看到index.php中代码18行未被测试覆盖,遗漏了status=-1的情况。
over