版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、核心测试新人指南31.核心测试基本概念31.1.核心测试框架简介31.2.TestNG简介41.3.持续集成62.环境配置82.1.JDK安装82.2.Oracle安装92.3.PL/SQL安装92.4.Ant、Maven、Antx、Svn、Jboss102.5.环境配置Q&A123.常用测试工具的使用163.1.TortoiseSVN163.2.Antx193.3.Maven193.4.eclipse213.5.SecureCRT243.6.pl/sql263.7.Tcenter283.8.TestNG324.测试工具类345.测试实例345.1.GUI测试实例345.2.核心测试实例456
2、.流程及规范626.1.CQClear Quest常用操作626.2.JIRA常用操作696.3.项目关键时间点696.4.核心测试编写规范697.其他717.1.有问题找谁717.2.组内学习文档72核心测试新人指南1. 核心测试基本概念核心测试就是核心系统的接口测试,接口测试是测试系统组件间接口的一种测试,接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。如今的系统架构纷繁复杂,系统间的接口庞杂繁多,传统的功能测试已经难以满足系统发展的需求,迫切需要一种更加有效实用且可以持续进行的测试方式
3、来保证系统的质量,接口测试在这种需求下应运而生。首先,随着系统复杂程度的上升,传统的测试方法测试成本急剧增加,测试效率大幅下降(根据淘宝的数据模型推算,底层的一个bug能够引发上层的8个左右bug,而且底层的bug很容易引起全网的宕机),相反接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案。其次接口测试不同于传统开发的单元测试,接口测试是站在用户的角度对系统接口进行全面高效持续的检测。最后接口测试是自动化并且持续集成的,这也是为什么接口测试能够低成本高收益的根源。1.1. 核心测试框架简介核心测试框架是基于TestNG和Sofa Test框架之上的,测试脚本都是以TestNG的方式
4、运行,跑脚本之前,TestNG会先启用一个main主线程,利用TestNG的标签通过反射找到并调用SetUp方法进行一些初始化的工作,用一个上下文context加载所有的读取的配置文件中的bean,加载完之后,用数据驱动的方式去调用Test标签所标示的方法,从而去跑核心测试的脚本,结构图如下所示:1.2. TestNG简介TestNG是为了解决Junit过于简单的问题而产生的,它与Junit是同一类的框架,两者不能同时使用,TestNG相比Junit增强功能如下:l 定义测试组的能力,每个测试方法都可以与一个或多个组相关联,但可以选择只运行某个测试组。l 重新运行失败的测试,对于每天都进行编译
5、来说非常有帮助。l 提供了依赖检查机制,并可以严格控制执行顺序。l 可以简单的直接进行多线程测试了。l 提供xml方式的参数化测试。PS. TestNG的安装:打开eclipse,点击工具栏上的HelpSoftware Update:然后点击Add Site,输入下载TestNG的网址,/eclipse(适用于eclipse3.4版本):在Available Software中就会有可用的TestNG的安装,点击Install:安装完毕后在eclipse工具栏上点击WindowsShow ViewsOther,选中Java目录下的TestNG,即可在eclipse
6、页面上看到TestNG的视图了:1.3. 持续集成持续集成是接口测试实现全面自动化回归测试的重要技术手段。简单来说,持续集成就是把写好的测试代码持续不断地运行起来,并且利用版本控制技术,让测试代码测试的始终是最新版本的系统接口。核心测试使用Hudson作为持续集成的工具,Hudson是在开源届广泛认知的持续集成服务器,其支持CVS和SVN作为版本控制工具,支持ANT和MAVEN作为构建工具,支持定时或者特定事件触发集成任务,给指定人员发送错误邮件等等,并且操作十分简单。Hudson自身没有持续集成能力,只是作为一个整合CVS,SVN,ANT,MAVEN和EMAIL的工具存在。Hudson拥有的
7、特性包括:l 易于安装-只要把hudson.war部署到servlet容器,不需要数据库支持。l 易于配置-所有配置都是通过其提供的web界面实现。l 集成RSS/E-mail/IM-通过RSS发布构建结果或当构建失败时通过e-mail实时通知。l 生成JUnit/TestNG测试报告。l 分布式构建支持-Hudson能够让多台计算机一起构建/测试。l 文件识别- Hudson能够跟踪哪次构建生成哪些jar,哪次构建使用哪个版本的jar等。l 插件支持-Hudson可以通过插件扩展,你可以开发适合自己团队使用的工具。核心系统Hudson地址为:http:/hudson.d19.alipay.n
8、et/hudson/Hudson的状态图标代表的意义:图像 说明 关注点 不稳定(Unstable) 关注测试失败的用例 成功(Success) 不用关注/关注修正部分 失败(Failed) 关注构建失败的原因 不可用(Disabled) 不必关注 图像 说明 评分 最近5次构建没有失败的 =80 最近5次构建有一次失败的60-80 最近5次构建有两次失败的40-60 最近5次构建有三次失败的20-40最近5次构建有四次或四次以上失败的preference-general-content Types-java properties File,改成GBK,点击update,点击okl 更改mav
9、en本地数据仓库(.m2文件夹)默认位置安装完maven后,系统默认的maven数据仓库,也就是.m2文件夹会放在C:Documents and Settings .m2repository位置,因为路径比较长,而且包含空格,所以在后期的项目开发中可能会因为莫名的错误,为了把这些错误扼杀在摇篮中,建议大家把maven数据仓库改到某个磁盘的根目录下,操作很简单:修改setting.xml配置文件把数据仓库位置中间改成要存放的地址即可,记得把注释去掉!3. 常用测试工具的使用3.1. TortoiseSVN现在公司的代码基本都是由SVN来维护的,以recon系统为例,在本地磁盘建立目录recon,
10、在目录上点击右键,选择SVN Checkout:输入流的地址,点击OK即可(若无拉代码的权限可去CQ上申请,详见CQ申请权限):若要提交自己的测试脚本可在recon目录下,点击右键,选择SVN Commit:也可在eclipse中选择要提交的文件,右键选择Team提交:若代码有了变更,可在目录下右键选择SVN update来更新代码(若无改动pom文件,eclipse里面刷新一下即可,不用重新编译):3.2. Antx代码拉下来之后要进行编译,目前公司有两类系统并存,一类是Webx系统,一类是Sofa系统(区分两类系统的方法是Sofa系统在系统根目录下有pom.xml文件,而Webx系统则是p
11、roject.xml文件),对于Webx系统我们需要Antx来编译,首先需要在系统目录下建立perties文件:“干净”的perites文件可到各系统的stable服务器上去下载(用secureCRT下载,详见secureCRT),文件下载后注意要将ject = 你的binary的目录地址,如:ject = E: /yue.li _int/vobs/binary(注意这里的斜杠跟windows下的路径是反的)。注:对于webx项目,下代码的时候除了下载本项目,还需要下载binary库。建
12、议下载到一个自定义的公共目录,供多个项目配置共用,定期更新。做好以上准备后,接下来就可以用antx命令了。命令antx reactor goals=default的作用编译webx工程。命令antx reactor goals=eclipse的作用是生成eclipse项目文件,接着就可以在eclipse中import所创建的eclipse项目。还可以使用命令antx reactor goals=clean来清除上次编译的文件。3.3. Maven相比Webx项目复杂的配置与操作,Sofa项目则相对简单许多。首先在Maven安装目录下的conf目录下,在setting.xml文件中设置Maven
13、本地库(.m2目录)的路径设置:在项目根目录(有一个总控pom.xml的目录)下,执行mvn eclipse:eclipse,这个命令会从Maven服务器库下载项目所依赖的jar包,并创建eclipse工程。如果所依赖的jar有更新,但是版本号没有更新,建议删除本地库中相关包,重新下载(本地库中文件随便删,每执行mvn eclipse:eclipse会下载)。在Eclipse中导入生成的工程,如果打开有红叉报错,报错原因是没有找到M2_REPO的话,则在项目编译路径中添加M2_REPO变量,指向maven下载的repository目录:3.4. eclipse代码编译完毕并生产eclipse文
14、件后,可在eclipse中将其导入,选择Fileimport:选择General-Existing Projects into Workspace:然后选择项目所在的目录导入即可。l eclipse常用快捷键:工欲善其事必先利其器,熟用快捷键可减轻我们的工作量,eclipse常用的快捷键有:Ctrl+1 快速修复Ctrl+D: 删除当前行 Ctrl+Alt+ 复制当前行到下一行(复制增加)Ctrl+Alt+ 复制当前行到上一行(复制增加)Alt+ 当前行和下面一行交互位置Alt+ 当前行和上面一行交互位置Alt+ 前一个编辑的页面Alt+ 下一个编辑的页面Alt+Enter 显示当前选择资源(
15、工程或文件)的属性Shift+Enter 在当前行的下一行插入空行Shift+Ctrl+Enter 在当前行插入空行Ctrl+Q 定位到最后编辑的地方Ctrl+L 定位在某行Ctrl+M 最大化当前的Edit或View (再按则反之)Ctrl+/ 注释当前行,再按则取消注释Ctrl+O 快速显示 OutLineCtrl+T 快速显示当前类的继承结构Ctrl+W 关闭当前EditerCtrl+K 参照选中的Word快速定位到下一个Ctrl+E 快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)Ctrl+J 正向增量查找(按下Ctrl+J后,你所输入的每个字母编辑器都提供快速匹
16、配定位到某个单词,如果没有,则在stutes line中显示没有找到了)Ctrl+Shift+J 反向增量查找Ctrl+Shift+F4 关闭所有打开的EditerCtrl+Shift+X 把当前选中的文本全部变为小写Ctrl+Shift+Y 把当前选中的文本全部变为小写Ctrl+Shift+F 格式化当前代码Ctrl+Shift+R 查找文件Ctrl+Shift+T 查找类3.5. SecureCRT测试脚本在本地跑通后还需要在服务器上跑一下,在项目中核心系统都有各自的测试服务器,以recon为例,我们使用连接服务器的专用工具secureCRT连上服务器
17、:连上服务器后,进入这个目录:/home/admin/ccbin/记住这几个“万能”脚本:mkview.sh:下代码的脚本;ccupdate.sh:更新代码的脚本;build.sh:编译的脚本;deploy.sh:部署的脚本;checkservice.sh:检查系统是否启动成功的脚本;输入./mkview.sh下载代码,先输入要下的系统名称,再输入流的地址:如果代码有更新,输入./ccupdate.sh来更新代码:下载完毕后输入./build.sh编译代码:编译成功后输入./deploy.sh部署代码:最后输入./checkservice.sh看部署成功没:凭这几个脚本,你就可以玩转支付宝的服
18、务器了。当然这只是理想情况,在实际部署服务器的时候可能会遇到各种各样的问题,导致部署失败,碰到问题时可参考黄河的环境配置问题ppt(见组内学习文档),可解决大部分常见的问题,若还是部署不成功那就要找运维解决了。在服务器上跑脚本时如果脚本挂了,不能像在本地一样debug,必须查看服务器日志,错误日志一般在error.log 或common-error.log中,查看日志常用的命令有:vi a.log:用vim打开a.log日志;grep “XXX” a.log:在a.log日志文件中查找包括内容为XXX的那一行;grep “XXX” a.log | grep “YYY”:可用|连接符搜索含有XX
19、X和YYY的那一行;tail -number a.log:输出a.log日志倒数第number行;tail -f a.log:动态的跟踪a.log日志的变化,实时刷新;3.6. pl/sqlplsql可谓是测试用的最频繁的工具之一了,下面是开发库的用户名和密码:开发库用户/密码PLSQL对应CUSTOMERali88devdb01TRADEali88SETTLECOREali88PAYCOREali88APAYFUNDali99devdb02GOLDENali315ACCCOREali00devdb03ACCTRANSali00APAYAPapayapAPAYACCali88APAYCAcad
20、ur4xCREDITcreditAPAYRAraAPAYMKTapaymktaliprodali88schedulerali88schedulerdevali88LEDGERali88mktplusali88APAYBDali88devdb04APAYBPMali88APAYCRMali99BDCRMali88APAYBIZali88DAILYali88APAYSPali88HECLAheclaPACIOLIali77APAYFORUMali66FORUMHISali66JBPMAPAYCTUapayctuAPAYESBali00CTUEVTali88注意:使用plsql时经常会使用updat
21、e语句来锁表锁记录,记住最后要提交操作,不然记录会一直锁住:3.7. TcenterTCenter是在开源测试工具testlink的基础上进行二次开发的,以满足我们的测试需求,它主要是一个测试管理的工具,地址为:/tcenter/login.php?note=expired用自己的域账号登陆后,可在右上方选择产品名称:以资金处理平台为例,点击用户故事(用户故事是从用户的角度来描述用户渴望得到的功能):Tcenter中的测试分析是根据用户故事文档来具体分析的,然后关联到测试项目,选择某一项目,创建测试分析,可用两张格式创建wiki和html,统一使用wiki
22、:还可以选择与之关联的其他测试分析:编辑完测试分析后还可以创建相关的测试用例:勾选关联的测试分析,创建用例:用例生成后可对其进行编辑:Tcenter的功能远远不止这么多,详细请参看Tcenter操作手册。3.8. TestNGTestNG是一个基于annotation的测试框架,下面介绍一些常用的annotation:TCList(测试用例描述,表明该测试方法有几个用例以及用例的描述)属性:caseid:测试用例编号;casedesc:测试用例描述;Test(标记一个类或方法作为测试的一部分)属性:dataProvider:这个测试方法的data provider的名称;dependsOnMe
23、thods:当前依赖的方法列表,自身必须在所依赖的方法之后运行;description :当前方法的描述;TestNG还有一个suite(测试套件)的概念,一个suite可以包括多个测试用例,一个测试用例可以包括多个测试类,而一个测试类中可以定义多个测试方法,只需简单的配置一个xml文件即可,如下例:l 一个suite使用一个xml文件来定义 ,该suite可以包含一个或多个test且该suite使用标签来定义;l 一个test使用标签来定义,该test可以包含一个或多个TestNG类;l 一个TestNG类就是一个Java类,它至少包含一个TestNG注解。一个TestNg类使用标签来定义,
24、可以包含一个或多个方法;l 一个测试方法就是一个在你的代码中使用test注解标注的java方法;运行一个suite可在该suite上右键,点击Run as-Run Configurations:点击New launch configuration:选择好待运行的suite后点击run即可:TestNG是一个很强大的测试框架,功能远远不止这么点,进一步的学习可参看TestNG官方文档(组内文档里有)。4. 测试工具类测试脚本的编写过程中,有一些常用的功能比如往数据表里插入自己的数据,删除数据,校验数据表等等都有一些工具类可以使用,这大大减轻了脚本编写的工作量,下面主要介绍最常用的两个工具类DBU
25、tils和TextData:4.1. DBUtils常用方法:l public static boolean DBCheck(String path, String tableName, String condition) 作用:通过数据对比文件的路径,表名,条件,校验单个文件,默认检验文件第1列 参数解释:path:数据对比文件的路径,path一般是放在数据文件的path栏下,脚本启动时会自动检测,例如:testres/normal/RegisterAccItemESBService/RegisterAccItemESBServiceNormalTestDBCK.register.FUND_
26、ACC_DEFAULT.csv(数据校验文件的命名见核心测试编写规范)tableName:要对比的表名,就是你要检查数据插入是否正确的表的表名,这个是放在数据对比文件的第一栏的condition:在数据表tableName中的数据提取条件,实际就是SQl语句中select语句的where子句部分,condition需要在脚本中自己写。 解释:在数据对比文件中最后一栏可以设置为“exp”,该方法就是由condition取出的记录的各字段的值是否与“exp”下的值一致,一致则返回true,不一致则返回false。数据库对比文件如图所示:tablename:要对比的表名colsName: 表的列名c
27、omments:说明(可选)flag: 标志位,Y表示校验此字段,N表示不校验此字段,R表示校验正则表达式exp: 期望值l public static boolean DBClean(String sqls, String tables) 作用:清除数据库记录,把测试时插入数据库中的记录在完成测试之后删除 参数解释:sqls:完整的SQL语句,将完整的delete语句传入,需要在传入前写好,例如:String sql = delete from + tableName + where INSIT_ID = + instID + ;tableName:要删除记录的表名,这个表名是在数据对比文件
28、中的。 解释:当测试时在数据库中插入了测试数据,在测试结束后应该删除数据,这时可使用该方法。需要注意这里的参数,虽然是Strings但是在传参数 的时候依然可以按照String来传的,例如:DBUtils.DBClean(new String sql , new String tableName )l public static String getSql(String sql, String conditions) 作用:生成SQL语句函数,可以简单快速的拼接SQL语句 参数解释:sql:你想要拼接的SQL语句,这个语句中任何参数运用“?”代替,例如:String aql = “select
29、 * from TABLENAME where id = ? and name = ? and age ?”Conditions:具体的条件值,也就是“?”所代替的参数,例如:String conditions = “10000”,”TIGER”,”18”; 解释:拼接语法:sql = DBUtils.getSql(aql,conditions);l public static ResultSet getQueryResult(String sql, String tableName) 作用:通过SQL语句查询,表名为tableName并返回查询结果ResultSet。 参数解释:sql:完整
30、的SQL查询语句,可以使用getSql拼装完成。tableName:要查询的数据表名。4.2. TextDatal public void csvToOracle(String csvFile, String tableName) 作用:将CSV文件里的记录插入到数据表中 参数解释:csvFile:CSV文件的路径名,CSV文件的命名见核心测试编写规范,这里要注意的是CSV文件里的列名要严格等同于表里的列名且顺序也要一样,数据都要加上号,例如:即使你要插入的字段为空,也不能空着,填入即可;tableName:要插入记录的数据表名 解释:在执行某些查询接口的测试的时候,为了不依赖表中现有的数据,
31、可使用该方法自行插入个性化测试数据来执行查询接口测试l public void multiCsvToOracle(String csvFile, String tableName) 作用:将多个CSV文件里的记录插入到多个数据表中 参数解释:csvFile:多个CSV文件的路径名数据tableName:要插入数据的多个数据表名数组注意csvFilei与tableNamei一一对应l public void cleanDataByDate(String tableName, String condition) 作用:根据条件condition来删除表名为tableName的时间晚于当前系统时间的
32、记录 参数解释:tableName:要删除记录的数据表名condition: SQL语句delete中的where子句部分 解释:在自己往表里插一些数据时,为了后续删掉方便,在某些字段会造一些个性化的数据,比如创建时间设置为比系统当前时间晚一天,这样就可以用该方法来删除,只需将condition的值设为创建时间字段即可;5. 测试实例5.1. GUI测试实例l 搭建环境参考毕方所写的:新版ATS框架开发环境搭建手册,写的非常基础。l IDEA的使用1. 打开IDEA如图1图 1 IDEA2. 如果要导入工程可点击File下的open project选项,如果新建工程则可点击File下的new
33、project选项,这里我们只介绍导入工程。图 2 导入工程3. 因为我们是UI测试使用IDEA,所以要打开的是test目录下的.ipr文件,点击OK。(因为UI测试是黑盒测试,不需要依赖开发代码,所以单独创建一个工程即可)图 3 导入项目24. 我们测试人员要写的测试脚本(即.groovy文件)都放在kmi-test/com.alipay.kmi/guitest/script下。图 4 脚本文件存放5. 新建一个测试脚本做法如下:在KeyManage处右键单击,new-groovy class,命名为test_xiaoman。在图7中点击OK。如此创建一个新类,如图8所示。图 5 新建gro
34、ovy类图 6 命名类图 7 生成文件到服务器图 8 test_xiaoman类l 运行脚本1.在代码区域单击右键,选择Run,即可运行这个脚本了。图 9 运行脚本2.运行后,在控制台会产生一些信息,绿条表示运行成功。下方会有一些运行期间的信息产生。图 10 控制台信息以上是用IDEA来写groovy脚本的一些基础知识。5.2. 核心测试实例l 写在前面 脚本跑通不代表要测试的代码无差错,有可能是测试脚本没有覆盖到出问题的地方 脚本跑不通不代表测试的代码有错,有可能是脚本没写正确,设断点debug定位问题所在,判断是脚本问题还是要测试代码问题 确定脚本覆盖到了所有的点后,脚本跑通说明要测试代码
35、没有问题编写一个合适的测试脚本的一般流程:l 明确需求测试的目的就是要找出你要测的代码是否有问题,开发提交的代码不会有语法错误的,所以重点就放在对代码逻辑及功能的测试上,这就需要我们做如下工作: 明确你要测试的代码要实现的功能 看要测试的代码,了解代码逻辑 找开发沟通l 确定测试范围现在很多的代码都是基于以前的开发代码开发的,很多时候都是在调用原来已有的代码,这时候就要在看开发代码的基础上确定你要测试的代码模块和其他模块的耦合情况来确定你的测试范围。l 用例数据准备用例的数据准备有两种情况: 异常数据准备 正常数据准备数据可采用等价类划分和边界值来确定,如果对代码逻辑了解的话可以根据要测试代码
36、中条件语句以及异常处理语句等会产生不同运行结果的地方准备正常或者异常测试数据。l 测试脚本编写一个完整的测试脚本应当包含以下内容: 测试方法准备 参数准备 返回值校验 数据库校验 数据库测试记录删除l 下面开始一个脚本的具体编写过程:1 环境工具准备:Eclipse,TestNG,PLSQL Developer,oracle .0版本(并修改tnsnames.ora文件),killinkcsv编辑CSV文件。环境配置上的问题可参考环境配置Q&A。2 测试的代码通常都在xxx-test-test文件夹下,除了开发要做的单元测试和冒烟测试之外,我们测试人员要写入的代码都在src/t
37、est/java和src/test/resource两个文件夹下。以下所涉及的内容测试脚本都在src/test/java的servicetest下编写,有关数据相关都在src/test/resource下。3 以cif中com.alipay.cif.servicetest.mobile接口,UnbindMobileBindingWithPayPasswordNormalTest方法为例介绍脚本编写过程。首先编写用户故事,进行测试分析,确定测试的关注点,用例数和要进行操作和查询的数据表。用户故事:登录TCenter:/tcenter/index.php,用户
38、名和密码为电脑的开机用户名和密码,选择用户故事,找到对应的项目组,根据需求建立用户故事,一般以每个接口为单位进行编写。在迭代里可以根据迭代编号和已有的故事序号进行编写。不论哪种用户故事,都要交代清楚需求的背景,具体需求点,模型和代码设计实现的关键逻辑等。用户故事下面需要对具体的方法的进行测试分析:统一使用WIKI格式进行编辑。测试分析针对具体的方法实现流程,需要操作的数据库中的表进行细致分析。需要特别注意以下几点(直接指导用例的设计和脚本的编写):a) 输入和输出的描述(输出尤其注意异常的情况)b) 流程要求的前提条件和在数据表中的操作(插入/删除/更新)c) 测试关注点:要注意覆盖尽可能多的
39、情况,异常的情况要仔细考虑确定了这些也就确定了用例数和测试脚本要如何校验该方法是否正确执行。4 下面开始正式动手了,首先是要填写测试脚本自动生成信息:resource-make-test-properties-easy-F/N.perites。在其中依次填写接口名称,函数名称,参数描述,测试用例信息,要操作和查询的数据表信息。其中F为异常测试脚本,N为正常测试脚本。为保证测试集描述中id为不与其他用例冲突,保持一定顺序,可以通过测试用例计划自动生成:/testplan/lib/,有特殊情况要咨询师傅。用例数和要校验数据的数据表通过前面的
40、分析得到,要用到的数据表之间用逗号隔开。写完后,在Servicetest.util-EasyMakeTest.java-右键run as java application-连续输入3-生成自动化脚本和csv文件,生成后要刷新(F5-切记!)工程。其中3:生成所有文件:脚本和数据文件,1:只生成脚本文件,2:只生成数据文件。可以根据需要选择要生成的文件。下面为生成的脚本文件,NormalTest为正常场景测试脚本,FuncException为异常场景测试脚本:下面是生成的数据文件,分别在正常和异常两个目录下:5. 在自动生成的脚本中之后,开始可能会有错误import进来的包,这样的要手动删掉,把
41、没有包含进来的包import进来,如下图:(a) Import出错的原因是自动生成的脚本用了原来的框架,现在的脚本基于testNG的,所以要重新引入。将有红叉的地方删掉后,将鼠标定位到TestLab,TCLlist处,会出现提示import包,选中即可。也可以用快捷键Ctrl+Shift+O。注:TestLab,TCList,Test(dataProvider = CsvDataProvider, description = *),这些都是testNG的一些基本注解,用来引入用例集合,注入数据等。customerId和result 处的错误是由于参数没有声明和定义,mobileService这
42、个接口的测试脚本,都是以cardNo为参数的,将customerId改成cardNo就可以了。result是默认的执行测试方法返回的结果,这里要测的方法是:unbindMobileBindingWithPayPassword(),所以要定义:(b) 默认生成的测试脚本中传进来的参数都是string类型,如果需要boolean,long类型需要进行修改,如果是其他类型,如枚举等,则要在程序中手动转换。例1:例2:(c) assertTrue是常用的判断结果的断言,判定result.isSuccess()是否为true,即测试方法是否正常执行通过。另外还可能用assertNotNUll()等断言进
43、行判断。(d) 对于异常场景测试方法:基本改动跟正常场景是一样的,但是由于异常场景测试会出现很多参数为空,为null的情况,所以自动生成的脚本会添加一部分根据是否为null的判断,如下图:(e) 在异常测试脚本中/TODO:DEL标签内的语句可以删掉,一般使用断言的assertFalse(),assertNUll()来测试,还需要测试返回的错误代码是否正确还有一点需要交代的是,有时候输入参数中有密码,实际方法用到的是密文,所以用例中的明文传进来需要用进行加密处理,否则会报错。下图中红框内即为加密的过程。6 经过上述操作测试脚本和用例框架基本搞好了,下面就是要根据具体方法进行测试用例编写和脚本编
44、写。acts框架按照特定类型注入:所以自己引入的其他类对象要写成protected,自己定义的静态变量类型:private final static int index对于会员核心来说,由于查询的数据量比较大,很多接口会有同步到cache的操作,所以在执行方法前需要清除一下缓存,具体要清哪个缓存要以方法用到的缓存为准:cacheClean(cardNo);/清除minicachetaobaoCacheComponent.remove(CachePrefix.MOBILE_BINDING_INFO.getPrefix()+ cardNo);/清除taobaoCache,参数为对应的key7 在d
45、atacenter中要对自己的测试用例备份,防止数据库中其他人的修改。备份的步骤如下:找到resources下的datacenter新建一个.txt文件,里面写select语句(查出你要备份的用例在数据库中的表的信息),然后运行util里的DBRecoveryUtil.java方法,刷新目录可见生成的.xml文件最终通过ImportDataToDB.importDataFromXml(*.xml),在测试时直接在数据库中插入想要的数据。对于资金核心测试来讲,需要在测试后将数据库还原,这也需要注意。8 test/resource里以testres.FuncExp和testres.normal开头
46、的都是是我们的测试数据,分别对应异常用例和正常用例。其中的正常用例csv文件又有两大类,一类是用例数据,另一类是要校验的数据库的数据。下图中红框内的为用例数据,剩余的为校验数据。从命名规则上也能看出来,以要测试的方法名称命名的是用例数据,带有DBCK.表名的就是要校验的该表的数据,注意大小写及命名规范(当然自动生成脚本都会自动生成的,但是当有些表遗漏需要添加时可以考虑手动添加)Csv文件可以用killinkcsv软件打开进行编辑,caseid是自动生成的,description里一定要将你这个用例的情况进行详细说明,方便以后阅读和review修改,后面的是参数列表,根据你所测试的方法输入的参数个数自动生成,但是具体内容要自己根据用例填写,最后面的是数据库校验的路径,不用操心会自动生成的(*_*) 。对于数据库中要检验的数据一般会比较多,每个csv文件里会对应这个表的所有字段,字段的名称是自动生成的,只是需要补充字段的数据,这样填写的时候可以到数据库里拷贝一下,在csv文件里修改相应的字段就可以了。粘贴之后要注意,有些字段在数据库里是空的,但在csv文件里空字段不能通过校验,所以要手动补成null。还有特别说明的是,flag字段有很重要的意义:C:表示根据该字段查询,N:不校验改字段,Y:校验该字段。有时候根据单一的一个字段查询会有很多笔记录,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 鹰课件语文教学课件
- 特殊旅客课件教学课件
- 2024年度建设工程施工合同工期与质量要求
- 2024年度维修保养服务合同
- 2024年城乡供水工程特许经营合同
- 2024年度设备采购合同:甲乙双方在二零二四年就某设备的采购的详细合同条款
- 2024企业人力资源管理与聘用合同详细规定
- 2024年家长学生老师三方面协议
- 2024年国际货物买卖合同:机械设备
- 【初中生物】观察周边环境中的生物+课件2024-2025学年人教版生物七年级上册
- 输血相关移植物抗宿主疾病课件
- 5.2探秘人工智能+教学设计
- 《工程项目审计》课件
- 2024年巴西机器人工具快换装置市场机会及渠道调研报告
- 基础教育质量提升调研报告(3篇模板)
- JT-T-1116-2017公路铁路并行路段设计技术规范
- GB/T 18488-2024电动汽车用驱动电机系统
- DZ∕T 0130-2006 地质矿产实验室测试质量管理规范(正式版)
- 2024入团知识题库(含答案)
- 电梯改造工程施工方案
- 数字人文建设方案
评论
0/150
提交评论