PHP代码覆盖工具 - PHPCodeCoverage 部署教程 windows篇

1. 简介

1.1 代码覆盖度

测试过程中一直有一个痛点,就是如果去统计测试工作的覆盖度。我们知道有用例覆盖度、需求覆盖度和代码覆盖度。其中,代码覆盖度(概念可参考这篇博文)的概念一般出现在单元测试或者白盒测试。那么怎么把代码覆盖度运用在黑盒领域中的系统测试上呢?

如果有一种工具,可以监听代码被执行的路径覆盖,是否就可以辅助我们去检查测试过程中,哪些代码条件逻辑是一次都没有被执行过的。

1.2 PHPCodeCoverage

就php语言而言,答案就是我最近了解到的 PHPCodeCoverage。
Github地址: https://github.com/cj58/PHPCodeCoverage

举个例子:

def func (status): 
	if status == 1: 
		statement1
	elif status == 2:
		statement2
	elif status == -1:
		statement3
	else:
		statement4

字段定义:1 有效 2无效 -1 黑名单

test case
C1 有效数据登录 预期: 可以登录
C2 无效数据登录
C3 异常传参

程序中这个函数有4条路径,测试人员用上面的功能测试用例测完了之后,就有可能遗漏黑名单这个功能点。如果有部署代码覆盖工具,那么我们查看监听结果时,可以轻松发现status==-1这个路径没走到。
在这里插入图片描述

2. 部署

Linux和Mac直接参照github中的readme步骤就可以了,我单独写一下windows上的,也是为了记录学习过程。

2.1 安装xdebug

  1. 下载xdebug
    windows上安装xdebug需要下载的是dll组件,下载时注意php版本。
    下载地址: http://www.xdebug.org/download.php

  2. 我用的是wamp集成环境,放在了php根目录下的zend_ext文件夹中。
    在这里插入图片描述

  3. 编辑php.ini文件
    添加以下这段配置信息, 改为你刚才下载放置的xdebug的dll组件位置

[Xdebug] 
zend_extension_ts="/zend_ext/php_xdebug-2.6.0-7.1-vc14-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"

2.2 安装PHPCodeCoverage

  1. 下载PHPCodeCoverage
    下载地址: https://github.com/cj58/PHPCodeCoverage

  2. 解压后我直接放到了wamp的www下面了,也就是apache的站点目录
    因为后续还需要访问页面去查看代码覆盖
    在这里插入图片描述

  3. 编辑config.php文件
    修改输出结果的目录,这里设置的是当前目录下的data文件夹
    在这里插入图片描述

3. 使用方法

3.1 引入pcc

在 自己的php程序头部,加入这段内容。
其中include_once是上一步中PHPCOdeCoverage主程序放置的位置。而setAllMode()这个函数的作用是合并所有监听结果,去掉这句话,就是每次请求都只显示当前执行时的路径了。

include_once("../PHPCodeCoverage/Pcc.php");
$p = new Pcc('testpage');
$p->setAllMode();
$p->run();

3.2 参考demo

把这段代码copy到本地,新建为index.php。

<?php
include_once("../PHPCodeCoverage/Pcc.php");
$p = new Pcc('testpage');
$p->setAllMode();
$p->run();

$status = $_GET['status'];

if ($status == 1){
	echo "有效帐号"; 
}elseif($status == 2){
	echo "无效帐号";
}elseif($status == -1){
	echo "黑名单";
}else{
	echo "异常";
}

?>

3.3 查看结果

  1. 我把demo程序放到了wamp的www目录下,分别请求了这3次接口。
    http://127.0.0.1/testpage/index.php?status=1
    在这里插入图片描述
    http://127.0.0.1/testpage/index.php?status=2
    在这里插入图片描述
    http://127.0.0.1/testpage/index.php?status=999
    在这里插入图片描述

  2. 访问PHPCodeCoverage目录下的index.php可以看到监听结果。
    http://127.0.0.1/PHPCodeCoverage/index.php
    在这里插入图片描述
    注:程序中没有调用setAllMode()函数的话,这里不是一个总文件,而且若干个切片文件。

  3. 最终结果如图
    可以看到,之前的功能测试中,我们遗漏了status=-1的情况。
    在这里插入图片描述

4. 尾声

前几天看到谷歌也在做类似的东西[链接],但没有开源,确实是一件有价值的事情。PHPCodeCoverage 这个工具还是挺不错的,可惜仅局限于php,我也就尝个鲜。如果要用于实际项目中,还需要考虑到线上环境时屏蔽引用pcc那部分代码。还有一点就是,代码迭代后,行数的变化会导致统计错误,只能清楚后重新统计,这一点特性不适合频繁变更代码的提测初期。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值