《Web接口开发与自动化测试基于Python语言》--第7章

《Web接口开发与自动化测试基于Python语言》–读书笔记

第7章 接口相关概念

7.1 分层的自动化测试

  • 测试金字塔模型:

敏捷大师Mike Cohn《Succeeding with Agile》

  • 分层自动化测试模型:

这里写图片描述

传统自动化测试: 基于产品UI层的自动化测试,它是将黑盒功能测试转化为由程序或工具执行的一种自动化测试。

分层自动化测试: 从黑盒(UI)单层到黑白盒多层的自动化测试体系,从全面黑盒自动化测试到对系统的不同层次进行自动化测试。

7.2 单元测试与模块测试

  1. 单元测试(Unit Testing)

    • 单元测试是英语程序的最小可测试部分;

    • 在面向对象编程中,单元也可以是整个模块,但场景的是单个函数或过程;

    • 在面向对象编程中,单元通过是整个接口,例如类,但可以是单独的方法;

    • 单元测试多少情况下是由程序员自己完成的。

  2. 模块测试(Module Testing)

    • 模块测试与单元测试有细微的区别;

    • 模块测试是针对具有明显功能特征的代码块进行的测试;

    • 单元测试智商设计测试一小部分的功能;

    • 模块测试多数情况下由其他程序员或测试人员进行。

单元测试强调的是程序的最小可测试单元

模块测试更强调被测试程序功能的完整性

模块接口测试: 模块测试+接口测试,强调了被测试的模块有规范的输入和输出。

7.3 接口测试

程序接口: 程序是提供了输入输出的类、方法、函数。程序接口测试使用相同编程语言,通过对类、方法、函数的调用,验证其返回结果是否正确来进行测试。

协议接口: 系统通过不同的协议提供的接口,例如使用HTTP/SOAP协议,这种类型的接口对底层代码做了封装,通过协议的方式对外提供调用。因为不涉及底层程序不受编程语言的限制,多由测试人员完成。

7.3.1 接口的分类

  • 系统与系统之间的接口

    • 公司内部不同系统之间调用的接口,eg:活动报名、活动投票;

    • 公司内部与外部系统之间调用的接口,eg:微信、微博提供的第三方登录接口;

  • 下层服务对上层服务的接口

    • 应用层:系统提供的UI层功能,eg:浏览器页面上的登录、注册、查询等。

    • Service层:可以理解为服务器所提供数据的处理。

    • DB层:数据库主要用来存放数据。

举例说明各层之间的调用顺序:

一个用户查询功能,用户输入查询的关键字,并显示查询结果。

首先,底层调用Service层所提供的查询接口,查询接口得到应用层调用的查询数据;

然后,再通过DAO(Data Access Object)访问数据库,根据用户输入的查询数据,查询数据库中的数据;

最后,将查询到的数据库数据返回给应用层,用户在应用层查看查询结果。

应用层与Service层: 通过HTTP接口进行访问

Service层与DB层: 通过DAO数据库访问接口访问

  • 系统内部,服务与服务之间的调用

这种接口,多指程序之间的调用。eg:用户信息接口、用户抽奖接口。

用户查询接口,输入用户名,返回用户信息,如果用户不存在则返回null;

用户抽奖接口,该接口需要用户名和抽奖活动id,抽奖接口得到用户名后可以调用用户查询接口,如果用户查询接口返回null,那么抽奖接口就可以直接返回用户不存在了。

用户抽奖接口调用的就是用户查询接口。

7.3.2 接口测试的意义

  • 更早的发现问题

单元测试和接口测试是更早介入测试的两个方面,接口测试可以在功能界面未开发出来之前对系统的接口进行测试,从而可以更早地发现问题并以更低的成本修复问题。

  • 缩短产品研发周期

更早介入测试带来的另一个好处就是可以缩短产品周期,接口测是介入可以更早地发现并解决bug,使得留到功能测试阶段被修复的bug减少,从而缩短整个项目的上线时间。

  • 发现更底层的问题

通过接口测试可以更简单更全面地覆盖到底层的代码逻辑,从而可以发现一些隐藏的BUG。

7.4 编程语言中的Interface

7.4.1 Java中的Interface

接口在Java中是指一个抽象类型,是抽象方法的集合,通常以interface来声明,一个类通过继承接口的方式,从而来继承接口的抽象方法。

类描述对象的属性和方法。
接口则包含类要实现的方法。

接口无法被实例化,但是可以被实现。

一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。

7.4.2 Python中的Zope.interface

在Python语言中也有Interface的概念,虽然Python本身并不提供Interface的创建和使用,但是我们可以通过第三方扩展库来使用类似Interface的概念,这里选用Zope.interface库。

root@TEST:~# python
Python 2.7.12 (default, Nov 19 2016, 06:48:10) 
[GCC 5.4.0 20160609] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from zope.interface import Interface
>>> from zope.interface.declarations import implementer
>>> 
>>> class IHost(Interface):
...     def goodmorning(self, host):
...         """Say good morning to host"""
... 
>>> @implementer(IHost)
... class Host:
...     def goodmorning(self, guest):
...         """Say good morning to guest"""
...         return "Good morning, %s!" % guest
... 
>>> if __name__ == '__main__':
...     p = Host()
...     hi = p.goodmorning('Tom')
...     print (hi)
... 
Good morning, Tom!
>>> 

7.5 总结

本章主要是讲解了接口测试的相关理论知识,什么是接口,什么是接口测试,主要是理论,没有实操,注意区分上述概念即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值