php代码覆盖工具(1)-PHPCodeCoverage-无覆盖率报告

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
X-Forwarded-For漏洞是一种HTTP头部注入攻击,攻击者可以通过修改HTTP请求中的X-Forwarded-For头部来伪造用户的IP地址,从而绕过IP地址限制等安全措施。修复该漏洞需要在代码中对X-Forwarded-For头部进行过滤和验证。 以下是一些PHP代码示例,可以用于修复X-Forwarded-For漏洞: 1. 使用正则表达式过滤X-Forwarded-For头部: ```php $xff = $_SERVER['HTTP_X_FORWARDED_FOR']; if(preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/', $xff)) { // X-Forwarded-For头部格式正确,可以使用该IP地址 } else { // X-Forwarded-For头部格式不正确,可能是攻击者伪造的IP地址,需要进行处理或拒绝该请求 } ``` 2. 只接受已知的代理服务器IP地址: ```php $xff = $_SERVER['HTTP_X_FORWARDED_FOR']; $proxy_ips = array('192.168.1.1', '192.168.1.2'); // 已知的代理服务器IP地址 if(in_array($xff, $proxy_ips)) { // X-Forwarded-For头部来自已知的代理服务器,可以使用该IP地址 } else { // X-Forwarded-For头部来自未知的代理服务器或攻击者,需要进行处理或拒绝该请求 } ``` 3. 使用PHP框架中的内置函数过滤X-Forwarded-For头部: 如果你使用的是PHP框架,例如Laravel、Symfony、Yii等,可以使用框架中的内置函数来过滤X-Forwarded-For头部。以下是Laravel框架中的示例代码: ```php $ip = request()->ip(); ``` 该代码中,`request()->ip()`函数会自动检测并过滤X-Forwarded-For头部,返回正确的客户端IP地址。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值