第7章 接口相关概念

内容来源于《Web接口开发与自动化测试——基于Python语言》虫师编著,如有涉及版权问题,归虫师本人所有。请大家支持虫师的著作:http://www.broadview.com.cn/book/4811
源码下载:https://github.com/defnngj/guest

7.1 分层的自动化测试

测试金字塔.jpeg

测试金字塔告诉我们应该有更多的低级别的单元测试,而不仅仅是通过用户界面进行高层端到端的测试。
而且也提出了分层自动化的概念,用来区别于“传统的”自动化测试。
所谓传统的自动化测试可以理解为基于产品UI层的自动化测试,它是将黑盒功能测试转化为由程序或工具执行的一种自动化测试。
但是UI自动化测试维护的成本相对较高。
分层自动化测试倡导的是从黑盒单层到黑白盒多层的自动化测试体系,从全面黑盒自动化测试到对系统的不同层次进行自动化测试。


7.2 单元测试与模块测试

  • 单元测试(Unit testing)
    1️⃣单元测试是应用程序的最小可测试部分。
    2️⃣在面向过程编程中,单元也可以是整个模块,但常见的是单个函数或过程。
    3️⃣在面向对象编程中,单元通常是整个接口,例如类,但可以是单独的方法。
    4️⃣单元测试多数情况下是由程序员自己完成的。
  • 模块测试(Module testing)
    1️⃣模块测试是针对具有明显功能特征的代码块进行的测试。
    2️⃣单元测试可能只涉及测试一小部分的功能。
    3️⃣模块测试多数情况下由其他程序员或测试人员进行。
    总结:单元测试更强调的是程序的最小可测试单位;而模块测试更强调被测试程序功能的完整性。

7.3 接口测试

  • 程序接口:也可以看作是程序模块接口,具体到程序中一般就是提供了输入输出的类、方法或函数。对于程序接口的测试,一般需要使用与开发程序接口相同的编程语言,通过对类、方法和函数的调用,验证其返回结果是否正确来进行测试。这一类测试工作,既可以由开发人员自己完成,也可以由有良好编程能力的测试人员来做。

  • 协议接口:一般是指系统通过不同的协议提供的接口,例如使用HTTP/SOAP等。这种类型的接口对底层代码做了封装,通过协议的方式对外提供调用。因为不涉及底层代码,所以一般不受编程语言的限制。我们可以通过接口测试工具或者其他编程语言进行测试。这一类测试工作多数情况下由测试人员完成。

7.3.1 接口的分类

从系统的调用方式不同,大致可分为以下三类。

  • 系统与系统之家的接口
    可以是公司内部不同系统之家调用的接口,也可以是不同公司不同系统之间调用的接口。
  • 下层服务对上层服务的接口
    应用层与Service主要通过HTTP接口。Service层与DB层主要通过DAO数据库访问接口。对于Python与MySQL数据库之间的调用,PyMySQL驱动就是扮演着这样的角色。
  • 系统内部,服务与服务之间的调用
    大多数情况下指的是程序之间的调用。

7.3.2 接口测试的意义

  • 更早的发现问题
  • 缩短产品研发周期
  • 发现更底层的问题

7.4 编程语言中的Interface

7.4.1 Java中的Interface

接口在Java编程语言中是指一个抽象类型,是抽象方法的集合,通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。
接口并不是类,虽然编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。

  • 为什么使用interface?
    接口的特点在于它只定义规范,而不管具体实现,具体实现由接口的实现者完成。
    例如,当前有多个主流的数据库厂商(Oracle、SQL Server、DB2)等,Java定义了调用数据库的接口规范(JDBC即Java数据库连接,是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一种Java语言编写的类和接口组成),不同的数据库厂商需要根据接口实现自己的数据库调用。对于Java程序员而言,在调用不同的数据库时只需要用JDBC,而并不需要关系每个数据库是怎么实现接口的。

下面来定义接口。

public interface IAnimal {
    public String Behavior();  //行为方法,描述各种动物的特征
}

实现动物接口(Dog类)

public class Dog implements IAnimal {

    @Override
    public String Behavior() {
        // TODO Auto-generated method stub
        String ActiveTime = "我晚上睡觉,白天活动";
        return ActiveTime;
    }
}

实现动物接口(Cat类)

public class Cat implements IAnimal{

    @Override
    public String Behavior() {
        // TODO Auto-generated method stub
        String ActiveTime = "我白天睡觉,晚上捉老鼠";
        return ActiveTime;
    }   
}

测试

public class Test {
    public static void main(String[] args) {
        Dog dog = new Dog();
        Cat cat = new Cat();
        System.out.println(dog.Behavior());
        System.out.println(cat.Behavior());
    }   
}

7.4.2 Python中的Zope.interface

Python 中通过第三方库来使用类似Interface的概念。


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,980评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,178评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,868评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,498评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,492评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,521评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,910评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,569评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,793评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,559评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,639评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,342评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,931评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,904评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,144评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,833评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,350评论 2 342

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,580评论 18 139
  • 作者:李长熠 从前有一把刀,刀长五尺,有一个不长不短的刀柄,光可鉴人的刀身。 刀锋锋利得连落上的发丝都会齐齐削断。...
    续事创意写作工作室阅读 612评论 0 0
  • 欣赏自己:很高兴迈出了第一步来到此次的营销特种兵训练中,我要通过我的努力做一个手心向下的人,在以后的日子里带领我的...
    苏维光阅读 141评论 0 0