Web接口开发与自动化测试基于Python语言

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

第7章 接口相关概念

7.1 分层的自动化测试

  • 测试金字塔模型:

敏捷大师Mike Cohn《Succeeding with Agile》

  • 分层自动化测试模型:

这里写图片描述

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

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

7.2 单元测试与模块测试

  1. 单元测试(Unit Testing)

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

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

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

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

  • 模块测试(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!
    >>> 
     
     
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    7.5 总结

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值