More Related Content
Similar to Yii phpunit (20)
Yii phpunit
- 1. 15 分钟入门 PHPUnit
Tips:
每版内容针对初学者精心设计,作者连续 2 小时打造的
精品幻灯片, 15 分钟轻松阅读学习,带你彻底了解
PHPUnit 的前世今生。
10/15/2012 Copyright © 2012 by CHENJINLONG 1
- 2. 今天你们会听到些什么?
1. 绿色环保的测试过程
2. 测试的分类
3. 单元测试周期
4. PHPUnit 入门
5. 说说 Selenium
6. Yii && UnitTest
10/15/2012 Copyright © 2012 by CHENJINLONG 2
- 4. 绿色环保的测试过程
• 在开发应用程序的时候,我们会发现我们
其实无法离开测试,就像
【地球离不开太阳,】
【寒梅离不开风霜。】
• 常规的绿色测试:
1. 程序体注入 echo 、 die 、 print 语句
2. 人员意志输入功能数据测试预期结果
10/15/2012 Copyright © 2012 by CHENJINLONG 4
- 5. 测试的分类
• 单元测试
焦点:代码独立单元
效果:单元运行与预期一致
• 集成测试
焦点:软件单位间的交互
效果:软件单位之间接口是否正确
• 功能测试
焦点: SRS
效果:是否符合用户要求的预期
• …
10/15/2012 Copyright © 2012 by CHENJINLONG 5
- 6. TDD 生命周期
• 测试驱动开发 (TDD) 的开发周期 :
• 1. 创建一个涵盖要实现的特性的新的测试 . 测试预
计将在第一次执行的时候失败 , 因为特性尚未实现 .
• 2. 执行所有测试 , 确保这个新的测试是失败的 .
• 3. 编写代码来使得测试通过 .
• 4. 执行所有测试 , 确保所有测试通过 .
• 5. 重构新编写的代码并确保这些测试仍然能够通过
.
• 重复步骤 1 至 5 推进整体功能的实现 .
10/15/2012 Copyright © 2012 by CHENJINLONG 6
- 7. PHPUnit 入门
• PHPUnit 安装
1. 进入 php 目录, pear version 查看 pear 版本,若版
本低于 1.7.x 或更低,则需要进行升级;
2. 下载 http://pear.php.net/go-pear.pear 文件拷贝至
php 目录,执行 php go-pear.pear 更新 pear 版本;
3. 按提示操作并回车,当看到 Double-click this file to
add it to the current user registry. 时,双击 php 目录
下的 PEAR_ENV.reg 将其添加进注册表;
4. 输入 phpunit 回车可看到 phpunit 版本信息,表示已
经安装成功。
以上步骤在不同的 AMP 套件的操作可能有异同,需要
视情况而定。
10/15/2012 Copyright © 2012 by CHENJINLONG 7
- 8. 一起来看看常规的测试示例
难道就这么简单而已?当然不是!
10/15/2012 Copyright © 2012 by CHENJINLONG 8
- 11. 书写测试类基本步骤
• 1. 将类 Class 的测试写入类 ClassTest 。
• 2. ClassTest 继承(通常)自
PHPUnit_Framework_TestCase 。
• 3. 测试都是公用方法,命名为 test* 。
另外,你可以在方法的文档注释块
( docBlock )中使用 @test 注解来把它标记为
测试方法。
• 4. 在测试方法中,类似 assertEquals() 的断言
方法用来断言一个实际值(应该)匹配一个期
望值。
10/15/2012 Copyright © 2012 by CHENJINLONG 11
- 12. PHPUnit 仅限测试一组数据?弱爆了
• 当然不是!
• PHPUnit 具备了数据提供者这一概念,数据
提供者方法必须是 public 和 static 的,其返
回值必须是一个数组,或者是继承了迭代
接口的对象。
• 提示,别忘了在测试方法的 docBlock 上添
加 @dataProvider xxx
10/15/2012 Copyright © 2012 by CHENJINLONG 12
- 16. • 编写测试的一个最耗时部分是编写代码设
置场景为已知状态以及在测试完成时将其
还原为初始状态。这个已知状态称为测试
的 fixture 。
• PHPUnit 支持共享装配代码,包括单体类测
试以及套件级测试,这里将认识两个模版
方法 setUp() 和 tearDown() 。
10/15/2012 Copyright © 2012 by CHENJINLONG 16
- 19. 测试用例扩展
• 期望值输出
PHPUnit_Extensions_OutputTestCase
• 性能测试
PHPUnit_Extensions_PerformanceTestCase
• 数据库测试
PHPUnit_Extensions_Database_TestCase
• …
10/15/2012 Copyright © 2012 by CHENJINLONG 19
- 22. 代码覆盖率
• PHPUnit 的代码覆盖率分析利用 Xdebug 扩展提
供的语句覆盖率功能 .
• 可以在测试方法上添加 docBlock
• 或者是使用 @codeCoverageIgnoreStart 和
@codeCoverageIgnoreEnd 注解不需要统计的代
码块
10/15/2012 Copyright © 2012 by CHENJINLONG 22
- 23. 说说 Selenium
• 一个 Band 0 级的 HelloWorld 例子
10/15/2012 Copyright © 2012 by CHENJINLONG 23
- 24. Selenium
• Selenium RC API
Selenium RC 所提供的接口函数
• PHPUnit_Extensions_SeleniumTestCase
测试用例扩展将同 Selenium RC 通话的 C/S
协议实现为专门用于 web 测试的断言方法
。
10/15/2012 Copyright © 2012 by CHENJINLONG 24
- 26. Yii && UnitTest
• 详细可查看项目中的代码, Yii 中的
PHPUnit 可谓是真正的披着马甲的 PHP 高效
框架。
• Yii 框架既定 PHPUnit 文件结构:
10/15/2012 Copyright © 2012 by CHENJINLONG 26
Editor's Notes
- 10/15/2012 Copyright © 2012 by CHENJINLONG