【转账】API自动化测试

 
随着公司各部门对质量的日益重视,API测试已成为日常的测试任务之一,为了提高测试效率,减少重复的手工操作,API自动化测试也逐渐变得愈加重要,本文是自己在API自动化测试方面的一些经验积累和心得、汇总成文,以飨读者。    什么是API,个人认为狭义理解API就是系统对外暴露的一些接口,供系统内部其他模块或者外部系统进行调用,如TD、harvest都有自己对外暴露的一些API,以供在其基础上进行二次开发,本文仅针对loushang平台的API进行讲述,目前loushang平台主要的API主要集中在BSP和BPM两大模块,大约300余个。    介绍API自动化测试之前,有必要首先介绍一下传统的API测试,所谓传统的API测试就好比传统的手工功能测试类似,针对某个功能点或者业务场景,准备一些数据,执行测试,其优点是测试速度快,但是缺点也非常明显,不能自动化,不能重复执行,需要人工的实时操作,功能的自动化测试相对比较简单,有许多现成的自动化测试工具可供选择,如QTP、Rational Function Test等等,API的自动化测试门槛则相对较高,一是适合的工具少,二是需要了解被测API的使用场景,三是需要吃透被测API的代码逻辑和后台数据结构,并能够设计相应的测试数据,以覆盖各种业务场景和代码的分支结构。    工欲善其事必先利其器,做API自动化测试之前,也需要借助一些外部工具,然后可以根据自己项目的需要,对外部工具进行改造,以适合自己的需要。做API自动化测试首先需要熟练掌握相关的程序语言,就loushang平台API而言,Java语言的熟练掌握是必不可少。还有就是当今非常流行且非常受欢迎的测试框架Junit4,Junit框架提供了许多断言,和实用的一些注解,这些是自动化测试的前提。另外,Ant对Junit提供了很好的支持,可以生成测试报告,用户可根据需要,对ant-junit进行改造,如对测试报告进行汉化,添加一些自己关注的但是报告中没有的一些信息等。    90%以上的API是和数据库打交道的,测试如何准备?数据库如何恢复?这也是自动化测试面临的一大难题,推荐使用DBunit,DBunit可以将数据库表导出至xml和xls文件进行备份,同时支持将xml、xls数据文件导入至数据库表,测试之前,如在junit测试用例的before阶段,将相关数据库表进行备份,并将测试数据(一般用xls或xml文件存放)导入至相应的数据库表,测试用例执行完成后,将备份的数据库表重新还原至数据库,如此,一则实现了测试数据和测试代码的分离,二则保证了测试数据库中的数据不受影响。    在进行数据的导入导出时,有时颇受外键约束的困扰,比如测试某个API,该API只关联2个数据库表,但是有n个其他表与这2个表存在外键约束,准备测试数据时,很是麻烦,建议执行测试时,如有必要可以将数据库的外键约束暂时禁用,测试结束后,再将外键约束启用,至于启用外键、禁用外键的方法,不同数据库方式不太一样,读者可自行研究。    API测试时,有时还会遇到一些无关紧要的对象,但是这些对象又非常难以构造并且测试该接口又离不开它们,如Resultset、request、session等,这时可以使用对象模拟技术,如EasyMock、Jmockit等,非常好用。    API测试属于白盒测试,为了更为清楚的展现测试覆盖率,一般测试完成后,出了测试报告之外,还会出具一份测试覆盖率报告,业界有不少的测试覆盖率工具可供选择,如Cobertura等,Cobertura会生成一个非常漂亮的测试覆盖率报告,读者可以研究一下,如何与自己的测试环境进行集成。    测试报告、测试覆盖率报告生成后,一般都是一些html文件,API自动化测试,由于有时需要通过定时任务(可利用windows定时任务或自行开发java定时器)自动执行,需要将测试报告通过邮件的方式发送给相关测试者,所以,我们还需要掌握打包工具(ant已提供,可简单包装后使用),邮件发送工具(javamail挺好用,可研究)。    至此,API自动化测试所需要的技术基本介绍完了,一些项目个性化的东西(如登录模拟、sca服务加载、spring容器加载)还需要根据实际需要进行研究,梳理一下整个流程如下:    Windows定时任务or自行开发定时器----》执行bat批处理命令----》bat中调用ant----》ant执行junit测试用例---》执行完成后将测试报告和测试覆盖率报告打成zip压缩包---》将压缩包作为附件邮件附件发送给相关人员。    拓展,为进一步改进测试架构,简化测试代码编写,可以考虑使用Unitils框架,Unitils整合了junit和easymock,可有效的简化测试代码的编写。    小结,本文是根据自己当前的测试流程和框架为蓝本汇总而成,希望能为有志于API自动化测试的同仁们提供一些帮助和参考!

转载于:https://www.cnblogs.com/lymeda/p/3893127.html

第4章 文件系统接口测试 文件系统攻击分为两类:基于介质的攻击和基于文件的攻击 基于介质的攻击 基于介质的攻击目标是模拟存储介质本身-软盘、硬盘、CD-ROM等 攻击1 按容量填满文件系统 按容量填满文件系统会确保你的应用程序很好地处理满磁盘的情况。一旦Canned HEAT模拟了满状态下的磁盘,就应该抓住每个机会试者强制应用程序打开、关闭、读取、写入和修改文件。这样能发现访问文件的位置,但是对满状态下的磁盘,软件无法实施检查。 攻击2 强制介质忙或不可用 强制介质忙或不可用会保证与存在问题的存储设备相关的错误条件得到测试。其思想是,当应用程序访问硬驱、软驱或其他外部存储机制时,强制错误返回码标明介质存在的问题。如果开发人员无法对这些条件编写适当的错误处理程序,应用程序就会失效。 攻击3毁坏介质 模拟被破坏的存储介质对任务关键的应用程序是有用的,这种应用程序在受损介质下也必须仍然能够运行。这种攻击有助于对开发人员没有编写存取文件或写文件时的错误处理代码这种情况进行测试。 基于文件的攻击 攻击4 赋给无效文件名 赋给无效文件名用来发现在哪里没有对读取或写入文件标识符进行约束。由于名字常受限于操作系统,如果应用程序对名字没有真正的约束,创建有效名字的失败会引发失效。其思想就是试着用很长的,且包含非法字符和字符组合的名字进行命名。 如何进行攻击? 第一组测试是使应用程序进入相当于“另存为...”对话框,并键入操作系统不能接收的名字。 第二组测试是使用操作系统以应用程序可能不接收的有效文件名创建文件。 攻击5 改变文件访问许可 改变文件访问许可会发现难以察觉的隐错,当应用程序使用的文件可在该应用程序控制之外得到处理时才显示出来。该攻击强调创建和修改文件访问许可,然后驱动应用程序访问文件内容。如果用以检查各种许可处理的错误代码丢失或出错,那么应用程序就会失效。 如何进行攻击? 在不同应用程序中打开和关闭同一文件,并试着在某个应用程序中打开在另一个程序中已打开的文件。 攻击6 更改或破坏文件内容 更改和破坏文件内容模拟对文件故意地或偶然地修改。如果在读取文件以前没有编写错误代码来检查文件内容,则软件可能会崩溃。可使用Canned HEAT来模拟这些事件,以便测试员能强制文件操作,并密切观察可能的文件失效。 有两种基本方法来实现攻击-手工损坏文件或使用运行期故障植入作为文件进行操作。 文件系统攻击小结 基于介质的攻击 1.看软件是否能处理满状态的存储介质。填满硬驱,然后强制软件执行文件操作(通过打开、移动和保存文件)。 2.看软件是否能有条不紊地处理忙文件系统。一些应用程序没有真正的超时/等待机制,所以当文件系统忙于响应另一个应用程序的请求时就会失效。强制软件执行与后台应用程序相关联的文件操作,这些后台应用程序也在执行文件操作。 3.试图在受损介质上强制软件进行文件操作。在这种场景下,有一些故障的处理代码的应用程序常会失效。 基于文件的攻击 4.对应用程序的数据文件、临时文件和只读文件试图赋给无效文件名,然后强制软件使用这些文件。 5.修改应用程序数据文件的访问许可。用户许可和读-写-执行-删除许可常被开发人员所忽视。 6.看软件是否能处理文件中损坏的数据。由于大多数数据破坏会导致失败的循环冗余校验,所以Canned HEAT是植入这种故障的理想机制。否则,使用十六进制/文本编辑器来修改文件内容,然后强制软件打开文件或从中读取。
B2C流程说明: 1、客户在商户网站浏览商品信息,签订订单; 2、商户按照工行B2C订单数据规范形成提交数据,并使用工行提供API和商户证书对订单数据签名,形成form表单返回客户浏览器,表单action地址指向工行接收商户B2C订单信息的servlet; 3、客户确认使用工行支付后,提交此表单到工行; 4、工行网银系统接收此笔B2C订单,对订单信息和商户信息进行检查,通过检查则显示工行B2C支付页面; 5、客户在此页面可以查询客户在银行的预留信息;也可以输入支付卡号、支付密码、验证码进行B2C支付; 6、工行检查客户信息,通过检查后显示确认页面;客户确认提交后工行进行支付指令处理; 7、工行进行支付指令处理后,如果商户需要工行实时通知,则工行将处理结果使用http协议post方式将通知消息数据提交到商户网站(这个接收银行通知消息的商户端地址是随商户订单数据提交银行的merURL字段),商户返回取货地址或关闭这个银行与其建立的连接后,银行才显示交易结果页面给客户。(注意1、发送通知和显示结果页面是串行的,所以商户端接收银行通知处理时间太长可能导致客户等待超时,造成银行不能将交易结果页面显示给客户。2、此连接是银行服务器自动和商户进行的连接,商户返回也是直接返回给银行,商户端不能对银行的这个请求进行重定向。) 8、工行进行支付指令处理后,如果商户不需要工行实时通知,则工行直接显示交易结果给客户。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值