软件测试自动化中脚本开发经验分享_第1页
软件测试自动化中脚本开发经验分享_第2页
软件测试自动化中脚本开发经验分享_第3页
软件测试自动化中脚本开发经验分享_第4页
软件测试自动化中脚本开发经验分享_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

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

文档简介

1、1、脚本测试特点脚本语言语法简单灵活,与效率不是很相关的部分,使用脚本比较方便。对于多个文件的读写和控制,有比较成熟的库,几行代码可以解决C、C+需要较多代码才能实现的功能。特别是对多文件的处理,数据流动和处理比较复杂的情况。脚本语言的劣势在于,缺乏严格的编译环节,变量定义,函数定义等问题发生概率比较大,会多制造一些障碍给测试人员。上帝关上一扇门,同时也开启了另一扇门,解释性的运行方式,使我们很容易在程序中插入测试代码,从而灵活的进行测试,对程序代码行、函数、代码段、脚本,都能在不同的粒度上进行控制,测试 更 加彻底,不易出现漏测问题。2、打好语言基础对脚本的快速测试,需要基于一定的语言基础,

2、增强对脚本执行的调试能力:1)sh x执行看变量,sh 基本语法检查2)快速多行注释,%s,快速注释多行方法“ << 标记 标记”3)熟悉awk,shell的基本语法,基本用法4)掌握awk快速对数据的分析能力5)Perl、python 的调试能力3、如何做到无漏测从问题角度出发,看存在哪些类问题,发现阶段最早在?1)历史漏测点A)Awk漏测,数据测试不充分,基于构造的方法比较困难,(看懂代码+理解逻辑+异常构造)比如awk中的数据处理的第一条和最后一条是否符合预期,awk内存占用是否 正常,可优化,数据的处理结果是否和预期一致。B)上线单漏测复杂上线单中的验证,上线的时间点是否合

3、理(非线上运行时间)C)多级环境部署漏测多机环境下需要模拟,远程登录执行或者scp数据,用户之间要有信任关系,如spiderA到workB的信任关系,需要在前面加上用户名,否则ssh B会有问题。2)历史bug(可能漏测点)知史而至今,前提是知史,需要对前面的问题有个学习,避免今后工作中出现。3)无遗漏发现问题从发现途径上,单步执行、分块执行、整体执行、考虑重复多次执行环境问题。从多个层次上对脚本进行测试和考虑,从细节-> 功能-> 整体运行维护:A)Sh -<, sh -n单步执行解决语法问题、变量问题、文件存在性问题。B)分块儿执行避免语法、逻辑问题、异常处理验证、下载验

4、证、md5验证、数据验证C)整体多次执行考虑线上是多次运行,历史数据维护,会不会有硬盘问题,会不会自动清理历史文 件,历史文件的清理是否正确。D)可维护角度报警是否合理,是否报警过多。E)上线阶段上线时间是否合理,是否正在运行中,上下游数据准备好的时间是否有足够的 时间缓冲。F)上线检查对log进行检查,及时发现问题。从以上几个角度出发,测试的过程是完整的,有效地避免了bug中的大部分。测试难点在于:大awk的测试,异常测试、数据流程理解和数据异常测试、历史环境、复杂上线单测试、多机环境部署配合测试。本次只是针对awk测试重点进行讲述,awk如果出问题都是数据问题,影响效 果,下面针对awk的

5、陷阱做了一些总结:Casel :代码阅读发现缺陷,基于逻辑的数据检查,注意第一条和最后一条的 输出逻辑:16 awk 'BEGINpre_user="" ; check=0 ; dead=0# patternneed checkif(ARGIND=1)dict$1=$2;elset=split($1,a,"/");p1=a1"/"a2"/"p2=a1"/"if(p1 in dict)p=p1;else if (p2 in dict)p=p2;else next;if(check!=0&a

6、mp;&p!=pre_user)print p,check >>"'$3":if(check=dead)20212223242526272930313233343536373839 if(check>=dictp)40 print p,check >>"'$4":41 else print p,check >>"'$5":42 43 check=044 dead=045 46 check+;47 if($3=0) dead+;48 pre_user=p49 50

7、 ' $1 $2Case2 :脚本中dump.sh 调用filter.awk 时,取不到dump.sh中使用的 shell 变量,DEL_REASON的变量值,导致 从LINKBASE上取到的数据经filter.awk 处 理后没有任何数据输出,dead.url_age.$i永远为空。Case3 :对2个有序文件进行 merge,构造case的时候,构造文件$1,$2进 行merge,如果$1先结束,会造成$1的最后一条还 会不断打印出来,使文件无 序,如果$2文件先结束,则不会出现该情况,构造数据验证时要注意等价类划分情 况,保证所有情况都被测试到。77787980818283848

8、5868788899091错误代码:awkBEGINkey_url=""key_all=""ret=1if($2v'$0LDEST_TIME') nexturl=$1url>key_url)while( url>key_url) # 修改为 while(ret>0 &&if(key_all) print key_allwhile(ret=getline line < "'$1'")>0)sp=index(line,"")tmp_url=s

9、ubstr(line, 1, sp-1)if(tmp_url>key_url)92 key_url=tmp_url93 key_all=line94 break95 96 print line97 98 if(ret=O) break99 100 pri nt101 102 END103 if(ret) print lineline104 while(ret=getlineline < "'$1'")# 修改为(ret=getlineline < "'$1'")>0 print105 pri ntl

10、ine106 107 ' $24、加快脚本测试方法做任何事情,如果想加快,都有一些熟知的方法:1、并行处理;2、借助于工具,自动化不需要人工介入的部分;3、加快必须人工部分的速度。如果把上面的基 本方式映射到我们的脚本测试中:4.1并行执行多个CASE我们可以对多次运行做并行化。对于脚本类测试,大多数是挖掘类,基于一个比较复杂的测试周边环境,但是,不会修改本模块以外的环境和数据。我们可以利用一个周边环境,部署多个被测程序,通过修改conf来保证运行:a)对同一台机器部署多个不同目录(减少搭建周边环境)b)对不同机器相同路径部署(减少修改conf)对不同目录进行不同case运行。比如,新

11、旧对比,性能,功能等同时进行。同 时对多个粒度进行测试,避免因为某次运行,占用环境,而堵塞我们的测试过程。4.2借助工具自动化操作步骤,这个我们自己可以编写test脚本来完成,比如性能监控,环境清理等功能。借助于自动化通用工具,比如类似编译器的变量检查,路径检查,函数接口检 查等,实现脚本之间调用关系和数据依赖关系的检查等。对很多产品线的公共问题,统一处理,这些都是大组、专人来开发和维护。4.3脚本测试技巧人是灵活的,不是所有的工作都适合自动化。脚本测试设计中和代码逻辑强相 关的部分,不易自动化,因为自动化要兼容多种可能性的时候,太复杂,而且不能 保证100%的准确率,还是需要人工参与,比如:问题1: if的异常分支,空文件构造,数据的清空逻辑,数据的历史维护逻辑, ssh逻辑,如何快速验证?问题2:领测国际为了不同粒度的测试,需要多次运行脚本,有些脚本运行时 间很长,是否可以一次运行,测试完所有粒度的功能?上面这个例子中的一些技巧:A)异常分支,我们可以通过添加语句 mkdir -p a;rm a,来保证#?的检测B)构造各种逻辑,或者看代码,看是否满足线上对数据逻辑的需求。C)中间数据的保留,对需要长时间运行的代码块儿,插上桩,将结果cp到其他文件,缩短时间,后续修改脚本代码,利用备份的中间文件多次独立运行,节省

温馨提示

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

评论

0/150

提交评论