Nginx模块的测试方法与程序测试经验.pptx_第1页
Nginx模块的测试方法与程序测试经验.pptx_第2页
Nginx模块的测试方法与程序测试经验.pptx_第3页
Nginx模块的测试方法与程序测试经验.pptx_第4页
Nginx模块的测试方法与程序测试经验.pptx_第5页
已阅读5页,还剩34页未读 继续免费阅读

VIP免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,Nginx模块的测试方法与程序测试经验,服务器平台 李子,2010年5月5日,2,服务器平台 李子,概要,单元测试 nginx-test perl,单元测试,4,2010年5月5日,单元测试 & roadmap,什么是单元测试 单元测试重要性 我们的借口 单元测试内容 Mock对象 怎么成为好的单元测试,5,2010年5月5日,什么是单元测试,定义 开发者编写的一小段代码,用于检查被测试代码的一个很小的、很明确的功能是否正确 目的 证明某段代码的行为是否与开发者所期望的一致,6,2010年5月5日,不写测试的借口,测试太花时间了 在编写代码时,你在哪些地方花费了更多时间? 在项目快要结束时才做单元测试,立即测试与延后测试的比较,7,2010年5月5日,不写单元测试的借口,还认为没时间写单元测试 对于所编写的代码 ,在调试上花了多少时间? 你觉得是正确的代码,但却存在重大bug,你花多少时间在重新确认这些代码上面? 对于别人报告的一个bug,你花多少时间 才找到导致这个bug的源码位置 ?,8,2010年5月5日,不写单元测试的借口,单元测试运行时间太长 将费时间的测试与其它测试分开来 费时测试可以每天一次或几天一次 运行很快的测试可以经常运行 测试代码并不是我的工作 工作完成并不意味着编码结束 增加对自己代码的自信 会不会让测试人员没事可干?,9,2010年5月5日,需要测试的内容,Right-BICEP Right结果是否正确 B边界条件 I反向关联 C交叉检查 E强制错误条件的发生 P性能要求,10,2010年5月5日,需要测试的内容,Right结果是否正确 确认代码要做的与期望是否一致 重视测试数据,出错时,先检查数据2-3次,11,2010年5月5日,需要测试的内容,B边界条件 Conformance(一致性) Ordering(顺序性) Range(区间性) Referendce(依赖性) Existence(存在性) Cardinatity(基数性) Time(相对或者绝对的时间性),correct,12,2010年5月5日,需要测试的内容,I反向关联 使用反向的逻辑来验证他们 如:计算平方根,将结果平方后来验证 向容器增加数据,验证数据是否存在于容器中 尽可能使用不同的原理来反向测试 避免两个函数出现相同的bug,13,2010年5月5日,需要测试的内容,C交叉检查 使用未采取方法来验证采纳方法的正确性 使用本身的不同部分来数据来检验 如:总数=已完成+未完成 E强制产生错误条件 如:磁盘满,断网 E性能特性 可以粗糙测试来保证性能曲线的稳定性 如:改前为1s,改后是5s,14,2010年5月5日,Mock对象,使用场景 某个方法依赖于其他一些难以操控的东西,如网络等 简单替换 简单替换函数 如:gettime(),15,2010年5月5日,Mock对象,Mock对象 使用一个接口来描述这个对象 为产品代码实现这个接口 以测试为目的,在mock对象中实现这个接口,16,2010年5月5日,优秀的测试,A-TRIP 自动化(Automatic) 彻底的(Thorough) 可重复的(Repeatable) 独立的(Independent) 专业的(Professional),17,2010年5月5日,优秀的测试,自动化(Automatic) 调用测试自动化 检查结果自动化 彻底的(Thorough) 测试了所有可能会出问题的情况 可重复的(Repeatable) 独立于其它测试,独立于周围环境 能以任意顺序执行,且产生相同结果,18,2010年5月5日,优秀的测试,独立的(Independent) 简洁而精炼 一次只测试一样东西 专业的(Professional) 不要为了测试去测试,不可能出现问题的情况就不需要去测试了,nginx-test,20,2010年5月5日,nginx-test & roadmap,能做什么 执行流程 有何优势 有何不足 如何测试,21,2010年5月5日,nginx-test,能做什么 主要是针对功能测试 测试执行流程,22,nginx-test,优势 独立性 依赖于强大的perl(特别是CPAN) 清晰的测试结果 可扩展性强 不足 无法针对单元测试进行测试 无法针对性能进行测试 目前提供针对nginx的库函数较少,23,2010年5月5日,nginx-test,如何使用 函数库 Perl库:Test:More /mschwern/Test-Simple-0.94/lib/Test/More.pm like、 unlike、ok、is like ($got, qr/expected/, $test_name); ok( foo(), $test_name ); is( foo(42), 23, $test_name );,24,2010年5月5日,nginx-test,如何使用 函数库 nginx-test 函数库 Plan、run、stop、write_file、write_file_expand、 http_get()、http_head()、http(),25,2010年5月5日,nginx-test,如何使用 准备测试数据:配置文件,数据文件 从脚本文件中输出 拷贝到指定地方,26,2010年5月5日,nginx-test,如何使用 编写用例代码 like(http_get(foo.html),qr/partten/, comment ) 执行 设置环境变量:TEST_NGINX_BINARY 执行测试脚本,perl,28,2010年5月5日,Perl简介,Perl是什么 Practical Extraction and Report Language 作者:Larry wall 具有高级语言(如C)的强大能力和灵活性。 脚本语言,解释执行,并具有脚本语言所有功能 Perl像C一样强大,像awk、sed等脚本描述语言一样方便。,29,2010年5月5日,Perl基本语法,变量定义 以$开头,如:$num=1; 数组定义 以开头,如:array=1,2,3; 调用数组元素,如:$ array1 字符串 Perl 中字符串的未尾并不含有隐含的NULL字符,NULL字符可以出现在串的任何位置。,30,2010年5月5日,Perl基本语法,单引号与双引号字符串 单引号字符串没有变量替换 单引号字符串不支持转义字符 单引号字符串可以跨多行 字符串连接 连接:.(注意与+的区别) 重复:x 如 :“t” x 5,31,Perl基本语法,文件读写 打开、关闭文件 open(filevar,filename) close(filevar) 文件访问模式:读、写和添加 Open(FILE,”aa.txt”) Open(FILE,”aa.txt”) 读文件 $line = 写文件 print FILE (“abc”),32,Perl基本语法,命令行参数 命令行参数存放在ARGV变量里面 $ARGV为参数个数 打开管道 Open(FILE,”| ls ”) Open(FILE,”ls |”),33,Perl基本语法,模式匹配 以两个反斜线包含:/pattern/ 匹配操作符: =、! 如: $foo = “abcd” $foo = /a/ 字符”|”指定两个或多个选择来匹配 替换操作符:s/pattern/replacement,34,Perl基本语法,子程序 子程序可以出现在程序的任意地方: sub subname statements; 返回值 :默认为最后一条语句的值,也可以通过 return 来返回值 参数传递: Sub sub1 my($var1, $var2) = _; ,35,Perl基本语法,子程序 预定义子程序: BEGIN:启动时调用 AUTOLOAD:找不到子程序时调用 END:结束时调用,36,Perl基本语法,面向对象 创建类: 创建名为foo.pm的包文件 最后一行添加:”1;” 定义包:package foo; 构造函数:new(); sub new() my $self =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论