1 单元测试简介

1.1 单元测试

单元测试:是指对软件中的最小可测试单元进行检查和验证。(单一模块、一个过程、一个函数等)

1.2 单元测试范围和目标

单元测试包含计划阶段、设计阶段、实现阶段和执行阶段。起始于详细设计,主要是各模块的源代码进行测试,直到单元阶段结束后终止。此时主要是PHP单元测试。

单元测试的目标是隔离程序部件并证明这些单个部件是正确的。一个单元测试提供了代码片断需要满足的严密的书面规约。

2 安装与使用

2.1 安装PHPUnit

1、在Linux中下载PHPUnit  wget https://phar.phpunit.de/phpunit.phar

2、添加执行权限 chmod +x phpunit.phar

3、更改路径mv phpunit.phar  /usr/local/bin/phpunit

4、查看phpunit版本 phpunit --version

2.2 使用

1、如有详细设计文档,先仔细阅读详细设计文档;针对需要测试的PHP代码先进行静态走读(查看是否正规编写、查看是否有逻辑错误、查看是否有未实现的功能等。)

2、编写测试脚本(以xxx.php为例)

1)首先是调用xxx配置文件以及调用PHPunit

有些是这样的:
/**************测试加载******************/
const CONFIG_ENV = 'office';// include_once __DIR__."/../../sdk/Autoload.php";
// include_once "ApiHelper.php";
include('/data/wuheyou_php/trunk/sdk/Autoload.php');
ImportModule('home');

2)然后测试模块加载类

3)最后编写测试用例(根据php代码,分析等,传入正确参数、错误参数、缺失参数、多余参数、路径覆盖、条件判断等)

访问私有函数public function testuserTechDonateResource(){print("资源争夺战个人科技贡献");for ($i=0; $i<=20; $i++){//资源争夺战 8基础战力,9幸运倍率,10守城加成,11宽度$boss = new GangTech(144540,136);$method = new ReflectionMethod('GangTech','userTechDonateResource');$method->setAccessible(true);$tech_id = 9;$type = 3;//资源争夺战$result = $method->invoke($boss,$tech_id,$type);var_dump($result);$this->assertArraySubset(["result"=>"true"],array("result"=>"true","code"=>0,"msg"=>"成功","data"=>array("next_score"=>60,"star"=>3)));}}
例子:1public function testPublishGuessodds(){echo "odds为负数!\n";$guess = new GameGuess();$uid = 186;$guessdesc = "这是我的猜猜猜22222";//$options = array(array('option_name'=>'我是谁', 'odds'=>1.6),array('option_name'=>'我是谁2', 'odds'=>1.5));//传入多组$options[] = array('option_name'=>'是是是是是', 'odds'=>-1.6);//传入单组$aborttime = '1449049541';  $result = $guess->publishGuess($uid,$guessdesc,$options,$aborttime);// var_dump($result);$this->assertEquals('赔率设置不合法',$result->msg);}
例子2:public function testbestlist(){print ("\n 城市转转转押注情况列表\n");$list = new GameCitytrun();$data = array('uid' =>183 , 'gtypeid' =>20 );$result = $list->betList($data);var_dump($result);$this->assertTrue(true);}
例子3:public function testdoSpin(){print ("摇奖生成随机数,作为×××的布局\n");$DSp = new GameBetTiger();$method = new ReflectionMethod('GameBetTiger','doSpin');$method->setAccessible(true);$res_num = array();$this->res_num = array("1" => Array("11" => 4,"21" => 2,"31" => 5),"2" => Array("12" => 5,"22" => 2,"32" => 7),"3" => Array("13" => 4,"23" => 2,"33" => 4),"4" => Array("14" => 2,"24" => 2,"34" => 9),"5" => Array("15" => 2,"25" => 5,"35" => 8));$result = $method->invoke($DSp);var_dump($this->res_num);          

3、执行对比返回结果 phpunitxxx.php

1)  正确数据发送请求时,查看返回数据是否正确、是否会报错、数据库中是否正常插入数据、关闭相关数据库是否能正常工作等。

2)错误数据发送请求时,查看返回数据是否有异常处理、是否有报错、数据是否有异常、等。

3)发现BUG,在提交BUG指向相关开发并督促修复bug,只至关闭BUG。

转载于:https://blog.51cto.com/engine/1610853

PHP单元测试使用手册相关推荐

  1. PHPUnit简介及使用(thinkphp5的单元测试安装及使用)

    PHPUnit简介及使用(thinkphp5的单元测试安装及使用) 一.总结 一句话总结:直接google这个phpunit(how to use phpunit),然后去官网看使用样例和手册,那些英 ...

  2. tp5 php7 报500,记一次TP单元测试报500错误的问题

    记一次TP单元测试报500错误的问题 一直听说好的单元测试能提高代码质量,昨天终于在下定决心弄懂单元测试,但第一步就把我干趴下了,我的问题在下面 开始都没有什么问题,tp5单元测试的手册就那一点,通过 ...

  3. 熟读《阿里巴巴java开发手册》(三、单元测试,四、安全规约)

    目录 三.单元测试 四.安全规约 三.单元测试 1. [强制] 好的单元测试必须遵守 AIR 原则. 说明: 单元测试在线上运行时,感觉像空气( AIR)一样并不存在,但在测试质量的保障上,却是非常关 ...

  4. 测者的测试技术手册:AI的自动化单元测试

    测者的测试技术手册:AI的自动化单元测试 谈新技术:AI的自动化单元测试 转载于:https://www.cnblogs.com/mrtester/p/10107939.html

  5. 《码出高效:java开发手册》八 -单元测试

    前言 这章内容主要是讲单测,单元就是指一个程序分的最小单位,一般是类或者方法,在面向对象编程里,一般就是认为方法是最小单位,单测是程序功能的基本保障,在软件上线前非常重要的一环 正文 单测的好处: 1 ...

  6. Java开发手册之单元测试,还没搞懂JVM

    正例:为了不受外界环境影响,要求设计代码时就把SUT的依赖改成注入,在测试时用spring 这样的DI框架注入一个本地(内存)实现或者Mock实现. [强制]对于单元测试,要保证测试粒度足够小,有助于 ...

  7. 《码出高效 Java开发手册》第八章 单元测试 (未整理)

    待整理 转载于:https://www.cnblogs.com/52liming/p/10686235.html

  8. git操作手册_基本的Git手册

    git操作手册 介绍 (Introduction) Hi! I am Sanjula, and in this guide I hope to teach you a little bit about ...

  9. 编写单元测试代码遵守BCDE原则,以保证被测试模块的交付质量,那么下列说法正确的是

    多选 编写单元测试代码遵守BCDE原则,以保证被测试模块的交付质量,那么下列说法正确的是:答案在文末 A. Border,边界值测试,包括循环边界.特殊取值.特殊时间点.数据顺序等. B. Corre ...

最新文章

  1. 百家中华老字号故宫过大年
  2. [网络安全自学篇] 三.Burp Suite安装配置、Proxy基础用法及流量分析示例
  3. window.parent和window.opener区别
  4. config.cfg.php,PHP:使用给定的结构获取变量形式的config.cfg
  5. matlab画直方图下标,matlab画二维数据直方图/画二维概率分布
  6. Data-Driven Geometry Processing 3D Deep Learning
  7. 形态学操作之提取水平与垂直直线
  8. Unity3D脚印6——模型动画
  9. CustomValidator 的客户端验证
  10. 关于1stopt的补充说明
  11. 使用JavaScript重定向到其他网页
  12. 论文中 一级标题、二级标题等 对应格式的统一修改
  13. UART嵌入式通信协议(以AVR单片机为例)
  14. 绘制一幅蓝图_给未来画一幅蓝图
  15. 2020年Vault咨询公司排名TOP 50
  16. 【保姆级!完整详细!】小米路由器3 刷openwrt固件并连接上校园网
  17. 基于web的运动会综合管理系统
  18. 如何将jpg,bmp等普通图片转成层次分明的二值图片(非仅用阈值分割)
  19. [面试题][Java]当当、映客直播
  20. 分享马化腾在3Q大战后写给腾讯全体员工的一封信

热门文章

  1. 金蝶BOS开发中Edit编辑界面和List叙事薄界面需要写的代码
  2. C++关键字:重学记录
  3. Python select解析
  4. ubuntu无法获得锁 /var/lib/dpkg -open 问题
  5. centos7 设置ip地址
  6. 整合Hibernate3.x
  7. poj 2749 2-SAT问题
  8. 微信小程序 小程序登陆功能
  9. element table 表格设置max-height 没有出现滚动条,多渲染了一列。
  10. ElementUI在el-table基础上进行导出.xls表格操作