本文原文连接: http://blog.csdn.net/bluishglc/article/details/18768999,转载请注明出处!

程序是“分层”的,我们要探讨的是集成测试针对的层面问题。本文所谓的“面子”(Top Level API)指的是程序的最上层接口,也就是被UI或外部系统直接调用的类和方法。“里子”(Lower Level Classes/Methods)就是工作于最上层接口之下,为最上层提供服务的所有下层类和方法。

在谈到集成测试的时候,我们得先来说说单元测试。任何系统都是由一系列相互依赖的类和方法构成的,单元测试的初衷是针对某个类和方法进行“独立”的测试,如果被测试的对象依赖到其他类和方法,则使用mock的方式来隔离被依赖对象对测试的影响。例如某测试对象A依赖另外一个测试对象B,如果我们在测试A的过程中,使用了一个输入与输出均设定了期望值的B的仿制对象,那么这是标准的单元测试,如果我们没有对B进行仿制,那么对于A的测试实际上是对A及其依赖对象B的一次广义上的集成测试!所以对比较地说,单元测试是排除了一切干扰和不确定因素,特别是其他依赖对象的影响,而对某个类和方法进行的“单独”测试,而如果一测试中没有排除掉这些干扰,引入了哪怕是一个非经测试的依赖对象,我们都可以将其看作是“广义“上的集成测试,当引入的依赖越来越多,上升到对其他子系统和模块的依赖时,这时就是我们一般意义上所指的“集成测试”了。

所以我们可以看到集成测试是有层次的,从下至两个相互依赖类之间的测试到上至模块和系统之间的集成测试,都是可以进行的,这里有一个如何把握这种层次或者说是粒度的问题,这就是本文想要阐述的一种易于拿捏和切割的规则:“面子”是一定要测的,“里子”可以视目标类和方法的复杂程度和重要性有选择的进行,对“里子”的测试只是为准确找出引起最上层也就是"面子"问题的准确位置而进行的相对底层与细粒度的测试,可以说这些测试是过程性的,虽然其本身可以用于验证目标代码的正确性,但其被创建的根本初衷是为了定位引发最上层问题的准确位置而设计的。

从实际的开发工作来看,以往程序员们出于要求或是自我素养,做的大多数是单元测试,集成测试一般交给测试人员以黑拿方式进行,那么有没有需要开发人员写集成测试用例的时候呢?从我的工作经验来看,有很多场景是需要的。一般来说,那些不方便做单元测试的场景就是需要集成测试出马的时候,比如严重依赖容器和外围设施与框架的代码,或者说出于工作量,时间的考虑,开发人员只想以最少的代码驱动已经完成的代码并检查基本功能的时候等等。对于笔者目前正在开发的基于HBase的系统来说就是属于前者,因为对于像基于Hbase的应用程序来说,很多代码严重依赖HBase的基础设施,可能会一些第三方面的mock框架来模拟一个HBase的运行环境,但是从实际工作的效果来看,使用自上而下的广义集成测试是非常有效且易于实现和控制的。从本质上讲,我们这里所谓的广义上的集成测试和单元测试是殊途同归的,目的都是排查代码中的错误,只不过前者偏向于自上而下,由粗到细地方式展开,而后者则专注于最细精粒度的测试上。

集成测试的“面子”和“里子”相关推荐

  1. 全球科技大会鸿蒙,华为开发者大会:全球瞩目的“鸿蒙”面子和里子大格局

    华为开发者大会大会将于8月9日至8月11日在东莞松山湖正式举行.此次大会毋庸置疑是华为历史上规模最大的,备受全球瞩目的大会.此次大会将揭晓鸿蒙操作系统.华为EMUI10.0发布.搭载"鸿蒙& ...

  2. 论文的“面子”与“里子”

    想必每一位科研学者都被论文投稿折磨过.蹂躏过,当然既有发表的喜悦,也有论文被拒的沮丧.作为某权威期刊主编的博导道出了论文初审一般关注的两个关键点:一是面子:二是里子.本期且听学长娓娓道来. 一篇论文从 ...

  3. 华为鸿蒙布局发展大会,华为开发者大会:全球瞩目的“鸿蒙”面子和里子大格局...

    华为开发者大会大会将于8月9日至8月11日在东莞松山湖正式举行.此次大会毋庸置疑是华为历史上规模最大的,备受全球瞩目的大会.此次大会将揭晓鸿蒙操作系统.华为EMUI10.0发布.搭载"鸿蒙& ...

  4. 海底捞只要“面子”,不要“里子”?

    2019独角兽企业重金招聘Python工程师标准>>> 海底捞是一家很重视"面子"的公司. 关于它的"变态"服务,经常在朋友圈刷屏.等位可以做 ...

  5. 面子对中国人为什么这么重要

    武志红 青音:有一个我们中国人常提起的话题"面子".中国人特喜欢维护面子又特别善于委屈里子.有个春晚小品叫<有事儿您说话>.郭冬临为了给自己讨个好人缘,大半夜排队给人买 ...

  6. 超车新势力齐聚港股,谁主沉浮?

    超车新势力齐聚港股,谁主沉浮? 造车新势力三强即将齐聚港股. 蔚来在港交所文件中并未将自己的车型与小鹏.理想对比,而是对标宝马.奔驰.传统豪华品牌被其拉入局,混战中,谁将胜出? 2月28日,蔚来宣布公 ...

  7. AI 人才越来越不值钱了吗?

    AI人才市场波动的背后,是你看不到的组织矛盾. "实不相瞒,我们已经不敢招那些有头有脸的AI科学家了."传统IT上市企业高管程路摇头叹气道. AI科学家恐惧症这个词,近些年时不时从 ...

  8. 想知道你在网上的发言,被怎么分析么?

    对数据应用感兴趣的朋友们好~ 这次跟大家分享一下,我们日常在网上的留言评论,都会被怎么分析利用,能产生哪些价值.这也正好对应了数据产品的一个子类--舆情数据产品. 首先统一下定义,我们在网上的各种留言 ...

  9. 数据产品经理:埋点的设计、管理与应用

    本文由作者 董小矿 于社区发布 前言: 本篇是从数据产品经理如何设计.管理和应用埋点的角度重新整理的文章,其中:1.埋点类型.2.1新增埋点设计.2.3产品指标地图部分的内容,与本人之前的文章有重叠, ...

最新文章

  1. sql server where 条件 区分大小写查询
  2. FCC有意支持Sprint与T-Mobile合并?
  3. C语言 读取txt文档按行读取到新的txt文档
  4. Bootstrap入门(八)组件2:下拉菜单
  5. 工业交换机厂家,工业交换机品牌前十大排名
  6. C# PagedList 真分页
  7. Golang——深浅拷贝
  8. PHP 会话 线程 进程,php进程后台调用(多线程/进程)
  9. NanoDet:这是个小于4M超轻量目标检测模型
  10. 基于Python-turtle库绘制路飞的草帽骷髅旗、美国队长的盾牌、高达
  11. simotion基本功能手册_深入浅出西门子运动控制器——SIMOTION实用手册(1CD)
  12. 数学建模学习(57):K-Means聚类原理分析讲解与应用
  13. 怎样将手机屏幕投射到电脑
  14. 高低压配电柜温度在线监测系统解决方案
  15. ICP算法详解——我见过最清晰的解释
  16. 浅谈视频会议系统的带宽控制!
  17. von mises应力和stress intensity的区别
  18. 张桂梅PK清华副教授:不要站在高楼上,傲慢地指着大山
  19. 对国内基金行业的一些思考 【投资干货】
  20. 直播粉丝统计平台 抖音直播粉丝 如何查看直播间的粉丝人数 如何查看主播直播数据记录

热门文章

  1. vue项目添加百度统计
  2. 还不知道 Puppeteer 的注意了,它能干大事
  3. 盛大副总-朱威廉(转自tom)
  4. Oracle数据库对小数点的操作
  5. HTML5期末考核大作业:基于Html+Css+javascript的网页制作(化妆品公司网站制作)
  6. Linux文件服务站
  7. 前端开发实习生-实习日志
  8. CCF CSP 历年试题题解
  9. css浮动布局自适应,CSS 几种常用自适应布局
  10. 公司mysql试题及答案_MySQL初级考试试题及答案