您当前所在位置: > 网游 > 综合热点

单元测试究竟是该开发来做还是测试?

时间:2018-08-18 03:09:16  来源:  作者:网络
请注意:本文为编辑制作专题转载的资讯,页面显示的时间仅为生成静态页面时间而非具体内容事件发生的时间,由此给您带来的不便敬请谅解!

文|茹炳晟

源|InfoQ

不少公司有单元测试的需求,但单元测试到底谁来做,每个公司都不一样。

1

开发写单测

优:开发对代码最熟悉,而且开发技能也强,开发自己写单元测试效率上和覆盖率上都比较高。而且单元测试有时候需要开发对代码进行部分重构才方便进行,开发自己做这些重构也比较顺手。

缺:开发平时写业务代码就忙不过来了,哪有时间写单元测试?而且大部分开发没有太好的测试思想,单元测试可能只是写个最简单的用例就完了,最终可能单元测试通过,但基本的功能还是有问题,这样的单测没有太大作用。

2

测试写单测

优:测试有比较好的测试思想,可以更好地保证用例的覆盖。而且通过写单测测试能更好地了解具体代码结构、流程,对于后续的业务测试也有利。

缺:有比较好代码能力的测试人员不多,而且测试对代码没有开发熟悉,遇上为了可测性需要重构的时候还是得开发花时间配合。效率上不如开发自己写。

3

无论谁来做,那到底怎样才能做好单元测试?

如果你没有开发背景,感觉这篇文章理解起来有难度,那你可以在学完后续的“代码级测试”系列的文章后,再回过头来看一遍这篇文章,相信你会有醍醐灌顶的感觉。

什么是单元测试?

如果把电视机的生产、测试和软件的开发、测试进行类比,你可以发现:

电子元器件就像是软件中的单元,通常是函数或者类,对单个元器件的测试就像是软件测试中的单元测试;

组装完成的功能电路板就像是软件中的模块,对电路板的测试就像是软件中的集成测试;

电视机全部组装完成就像是软件完成了预发布版本,电视机全部组装完成后的开机测试就像是软件中的系统测试。

通过这个类比,相信你已经体会到了单元测试对于软件整体质量的重要性,那么单元测试到底是什么呢?单元测试是指,对软件中的最小可测试单元在与程序其他部分相隔离的情况下进行检查和验证的工作,这里的最小可测试单元通常是指函数或者类。

单元测试通常由开发工程师完成,一般会伴随开发代码一起递交至代码库。单元测试属于最严格的软件测试手段,是最接近代码底层实现的验证手段,可以在软件开发的早期以最小的成本保证局部代码的质量。

另外,单元测试都是以自动化的方式执行,所以在大量回归测试的场景下更能带来高收益。

同时,你还会发现,单元测试的实施过程还可以帮助开发工程师改善代码的设计与实现,并能在单元测试代码里提供函数的使用示例,因为单元测试的具体表现形式就是对函数以各种不同输入参数组合进行调用,这些调用方法构成了函数的使用说明。

如何做好单元测试?

要做好单元测试,你首先必须弄清楚单元测试的对象是代码,以及代码的基本特征和产生错误的原因,然后你必须掌握单元测试的基本方法和主要技术手段,比如什么是驱动代码、桩代码和 Mock 代码等。

代码的基本特征与产生错误的原因

开发语言多种多样,程序实现的功能更是千变万化,我可以提炼出代码的基本特征,并总结出代码缺陷的主要原因么?答案是肯定,你静下心来思考时,会发现其中是有规律可寻的。

因为无论是开发语言还是脚本语言,都会有条件分支、循环处理和函数调用等最基本的逻辑控制,如果抛开代码需要实现的具体业务逻辑,仅看代码结构的话,你会发现所有的代码都是在对数据进行分类处理,每一次条件判定都是一次分类处理,嵌套的条件判定或者循环执行,也是在做分类处理。

如果有任何一个分类遗漏,都会产生缺陷;如果有任何一个分类错误,也会产生缺陷;如果分类正确也没有遗漏,但是分类时的处理逻辑错误,也同样会产生缺陷。

可见,要做到代码功能逻辑正确,必须做到分类正确并且完备无遗漏,同时每个分类的处理逻辑必须正确。

在具体的工程实践中,开发工程师为了设计并实现逻辑功能正确的代码,通常会有如下的考虑过程:

如果要实现正确的功能逻辑,会有哪几种正常的输入;

是否有需要特殊处理的多种边界输入;

各种潜在非法输入的可能性以及如何处理。

讲到这里,你有没有回想起我跟你分享的“等价类”。没错,这些开发工程师眼中的代码“功能点”,就是单元测试的“等价类”。

单元测试用例详解

在实际工作中,你想做好单元测试,就必须对单元测试的用例设计有深入的理解。

通常来讲,单元测试的用例是一个“输入数据”和“预计输出”的集合。你需要针对确定的输入,根据逻辑功能推算出预期正确的输出,并且以执行被测试代码的方式进行验证,用一句话概括就是“在明确了代码需要实现的逻辑功能的基础上,什么输入,应该产生什么输出”。

但是,对于单元测试来讲,测试用例的“输入数据”和“预计输出”可能远比你想得要复杂得多。

首先,让我来解释一下单元测试用例“输入数据”都有哪些种类,如果你想当然的认为只有被测试函数的输入参数是“输入数据”的话,那就大错特错了。这里我总结了几种“输入数据”,希望可以帮助你理解什么才是完整的单元测试“输入数据”:

被测试函数的输入参数;

被测试函数内部需要读取的全局静态变量;

被测试函数内部需要读取的成员变量;

函数内部调用子函数获得的数据;

函数内部调用子函数改写的数据;

嵌入式系统中,在中断调用时改写的数据;

后续,这篇文章的作者茹炳晟老师也深入分析了“预计输出”的几大分类,驱动代码,桩代码和 Mock 代码三者之间的异同点及不同功能,真的值得一读。但由于篇幅的限制,我就不分享太多了,大家可以扫描下方的二维码进入专栏,可试读《软件测试 52 讲》的前三篇文章。即使不购买,前三篇文章也值得你去看一看。

驱动代码,桩代码和 Mock 代码三者的逻辑关系免责声明:本文转载仅作分享,版权归原作者所有。如侵权请联系我们,必予以整改或删除,谢谢您!

相关下载

玩家评论

致命追逐外服测试开启致命追逐外服测试参与方法分享

网易代理的致命追逐在外服开启了测试,那么如何才能参加致命追逐外服测试呢?外服测试参与方法是什么呢?下面就为大家分享一下网易致命追逐外服测试的参与方法,希望对小伙伴们有所详情>>

阅读: 3
日期: 2019-12-11
《Nostos》12月6日STEAM不删档不付费限量测试开启

近日,夺得第四届金陀螺“年度人气VR游戏奖”的网易自研VR开放世界游戏《Nostos(故土)》,声称于12月6日将开启STEAM不删档不付费限量测试,其上线版本同时支持PC和VR双平详情>>

阅读: 19
日期: 2019-12-07
《阴阳师妖怪屋》安卓付费删档测试什么时候结束 限时测试结束时间

导 读 阴阳师妖怪屋安卓付费删档测试限时开启,11月20日也就是今天下午2点开放了下载渠道,玩家可以开始下载游戏,一起来看看本次测试相关情况吧。 阴阳师:妖怪屋 限时营业(安卓付详情>>

阅读: 1
日期: 2019-11-21
《足球经理FM2020》BETA测试版已经发布 档案可继承

  在公布 Beta 版消息后的几周中,开发方不断获得来自广大玩家朋友们的宝贵意见。终于,由Sports Interactive™及 SEGA® Europe Ltd.推出的 Football Manager 2020( PC/Mac)详情>>

阅读: 4
日期: 2019-11-11
Steam原版游戏库小模式回归:玩家可以加入测试版

Steam平台的新版游戏库正式上线,为玩家提供了更具观赏性与互动性的方式来整理自己的游戏收藏,但如果对目前的游戏库列表感到不满意。Steam在更新公详情>>

阅读: 8
日期: 2019-11-09
Steam原版游戏库小模式将回归 现已加入测试版

10月31日 Steam 平台的新版游戏库正式上线,为玩家提供了更具观赏性与互动性的方式来整理自己的游戏收藏,不过也有玩家似乎对目前的游戏库列表感到了不适应。近日Steam在更新详情>>

阅读: 7
日期: 2019-11-09
LOL11月8日测试服更新内容一览

本文给大家带来LOL11月8日测试服更新内容一览,本次更新内容为9.22后版本相关调整,一起来看看吧。 装备改动 幽梦之灵 唯一主动: [新增]持续期间,无视单位的碰撞体积 血色之刃 唯详情>>

阅读: 5
日期: 2019-11-08
魔兽争霸3重制版国服测试版开放下载

《魔兽争霸3:重制版》国服现在已经开启了测试版的下载,预购了豪华版游戏的玩家可通过战网下载测试版,感兴趣的玩家不要错过了。 所有获得资格的玩家都可以在《魔兽争霸3:重制版详情>>

阅读: 3
日期: 2019-11-07
《魔兽争霸3:重制版》国服测试版下载已经开放

之前我们报道过“暴雪嘉年华:《魔兽争霸3:重制版》访谈 4天后测试开启”这则新闻。近日《魔兽争霸3:重制版》国服开放了测试版下载,预购了豪华版游戏的玩家可通详情>>

阅读: 77
日期: 2019-11-06
暴雪战网客户端Beta测试版更新用户界面:新设计,新体验_玩家

原标题:暴雪战网客户端Beta测试版更新用户界面:新设计,新体验 IT之家11月4日消息 据外媒WoWhead报道,暴雪近日对战网客户端进行更新,Beta测试版用户界详情>>

阅读: 6
日期: 2019-11-04
暴雪更新战网客户端Beta测试版新界面更加简洁明了_进行

原标题:暴雪更新战网客户端Beta测试版 新界面更加简洁明了 据外媒WoWhead报道,暴雪在近日对战网客户端进行了一次更新,Beta测试版用户界面获得了全面详情>>

阅读: 8
日期: 2019-11-04
暴雪战网客户端Beta测试版更新用户界面全新体验_进行

原标题:暴雪战网客户端Beta测试版更新用户界面 全新体验 近日据外媒WoWhead报道,暴雪对战网客户端进行了一次更新,Beta测试版用户界面获得了全面升级详情>>

阅读: 4
日期: 2019-11-04
暴雪战网客户端Beta测试版更新用户界面 全新体验

近日据外媒WoWhead报道,暴雪对战网客户端进行了一次更新,Beta测试版用户界面获得了全面升级。一起来看看吧! 全新界面将原本排列在左侧的游戏图标放置到了上方,各游戏详情>>

阅读: 6
日期: 2019-11-04
暴雪战网客户端测试版更新:界面大方整洁

点击进入暴雪嘉年华专题,海量情报一网打尽   今天,暴雪战网客户端悄悄更新了,界面整体发生了非常大的变化,下面给大家介绍一下如何使详情>>

阅读: 7
日期: 2019-11-03
暴雪战网客户端测试版更新!拥有全新的界面和布局

【导读】今天暴雪举行了暴雪嘉年华,同时也把暴雪战网客户端悄悄地进行了更新,整个界面发生了变化,测试版拥有全新的界面和布局。   详情>>

阅读: 7
日期: 2019-11-02
暴雪战网客户端测试版更新:界面大改变,更加简洁大方

今天,暴雪战网客户端悄悄进行了更新,整个界面发生了相当大的变化,游戏图标从左边换到了页面顶端,下面给大家介绍一下如何使用。 更新测试版步骤: 1.点详情>>

阅读: 17
日期: 2019-11-02
仁王2测试版内容有哪些仁王2测试版试玩视频分享

  仁王2测试版内容有哪些?试玩版已经放出,不少获得测试资格的玩家都有体验过,这里给大家带来了一段超长的仁王2测试版试玩视频分享,一起来看下吧。推荐阅读:  仁王2预购特典详情>>

阅读: 12
日期: 2019-11-02
仁王2测试版剧情与画面效果评价试玩版评测心得分享

  仁王2测试版剧情怎么样?不少玩家体验了这个测试版本,对游戏整体有不同的感受,小编这里给大家带来了仁王2测试版剧情与画面效果评价,一起来看下吧。推荐阅读:  仁王2测试版详情>>

阅读: 12
日期: 2019-11-02
提前五天!《足球经理2020》现已推出公开测试版

原标题:提前五天!《足球经理2020》现已推出公开测试版 今日,《足球经理2020》官方发布了一则新公告。官方表示《足球经理2020》公开测试版已在PC和M详情>>

阅读: 9
日期: 2019-11-01
足球经理2020测试版在哪玩足球经理2020测试版入手方法介绍

  足球经理2020测试版在哪玩?想必大家都十分期待这款FM2020,本次小编带来了足球经理2020测试版入手方法介绍,喜欢这款游戏的玩家不妨进来看看。推荐阅读:足球经理2020发布时间详情>>

阅读: 10
日期: 2019-11-01
《足球经理2020》测试版在哪玩 测试版入手方法介绍

《足球经理2020》测试版在哪玩测试版入手方法介绍 2019-11-0109:06:51 模拟经营SIM 人气值:加载中...      足球经理2020测试版在哪玩?想必大家都十分期待这款详情>>

阅读: 28
日期: 2019-11-01
Steam新版库正式推出,“远程同乐测试版”向所有用户开放

原标题:Steam新版库正式推出,“远程同乐测试版”向所有用户开放 IT之家10月31日消息 据Steam官方消息,全新的Steam库功能对所有人推出,“远程同乐测试版详情>>

阅读: 7
日期: 2019-10-31
Steam新版库正式推出,“远程同乐测试版”向所有用户开放_游戏

原标题:Steam新版库正式推出,“远程同乐测试版”向所有用户开放 IT之家10月31日消息 据Steam官方消息,全新的Steam库功能对所有人推出,“远程同乐测试详情>>

阅读: 2
日期: 2019-10-31
《魔兽争霸3:重制版》多人模式测试即将开启,目前可申请测试_资格

原标题:《魔兽争霸3:重制版》多人模式测试即将开启,目前可申请测试 IT之家10月30日消息 据《魔兽争霸3:重制版》官方网站消息,国服《魔兽争霸III:重制版详情>>

阅读: 6
日期: 2019-10-30
《超激斗梦境》共研服测试还未结束,玩家纷纷要求加开测试_游戏

原标题:《超激斗梦境》共研服测试还未结束,玩家纷纷要求加开测试 网易无限流动作游戏《超激斗梦境》共研服测试正在火热进行中!游戏的背景故事由一个详情>>

阅读: 2
日期: 2019-10-28
《超激斗梦境》共研服测试还未结束玩家纷纷要求加开测试

  网易无限流动作游戏《超激斗梦境》共研服测试正在火热进行中!游戏的背景故事由一个拥有梦能力的女孩“玛雅”展开,将带领所有玩家们进入一个由无数梦境嵌套而成的梦中大详情>>

阅读: 8
日期: 2019-10-28
《超激斗梦境》共研服测试还未结束,玩家纷纷要求加开测试

网易无限流动作游戏《超激斗梦境》共研服测试正在火热进行中!游戏的背景故事由一个拥有梦能力的女孩“玛雅”展开,将带领所有玩家们进入一个由无数梦境嵌套而成的梦中详情>>

阅读: 12
日期: 2019-10-28
《LOL》测试服元素龙改动测试风龙大招零CD画风鬼畜_进行

原标题:《LOL》测试服元素龙改动测试 风龙大招零CD画风鬼畜 在《英雄联盟》10周年庆典上,官方公布了“元素崛起”版本改动,包括召唤师峡谷中的元素龙详情>>

阅读: 4
日期: 2019-10-24
渗透测试公司对JAVA架构安全漏洞测试

原标题:渗透测试公司对JAVA架构安全漏洞测试 近期对平台安全渗透测试中遇到有JAVA+mysql架构的网站,针对此架构我们Sine安全渗透工程师整理了下具详情>>

阅读: 6
日期: 2019-10-24
《云顶之弈》测试服更新了什么?9.22测试服更新一览

《云顶之弈》测试服更新了什么?9.22测试服更新一览 2019-10-2315:03:41 即时战略RTS 人气值:加载中...   标签:更新改动|常见问题   云顶之弈测试服更新了什么?详情>>

阅读: 7
日期: 2019-10-23
VGAME消零世界安卓不删档计费测试FAQVGAME消零世界安卓不删档计费测试相关问题一览

《VGAME消零世界》安卓不删档计费测试即将开始,那么大家一定很关心一些比如名额是多少?是否限量?等等问题,下面小编就为大家带来了一个FAQ,希望能帮助到大家。VGAME消零世界安详情>>

阅读: 8
日期: 2019-10-23
六问北京冬奥测试赛:20场测试赛要比什么?

原标题:六问北京冬奥测试赛:20场测试赛要比什么? 新京报讯(记者 吴为 黄哲程)10月22日,记者从“相约北京系列冬季体育赛事组织委员会全体会议暨动员部署详情>>

阅读: 6
日期: 2019-10-22
阴阳师特邀测试服下载地址分享10月23日测试资格名单一览

《阴阳师》在近期为了上线新式神而在一次开启了特邀测试。那么最后成功获取测试资格的玩家都是谁呢?小伙伴们是否获取了测试资格呢?接下来就让我们一起来看一看名单吧。特邀测详情>>

阅读: 12
日期: 2019-10-22
Steam新功能“远程同乐”测试版上线,远程“白嫖”启动

IT之家10月22日消息 据Steam官方介绍,今日隆重推出Steam“远程同乐”功能,测试版现已对所有人开放。据了解,Steam“远程同乐”功能可以让大家可以通过详情>>

阅读: 33
日期: 2019-10-22
Steam新功能“远程同乐”测试版上线,远程“白嫖”启动

原标题:Steam新功能“远程同乐”测试版上线,远程“白嫖”启动 IT之家10月22日消息 据Steam官方介绍,今日隆重推出Steam“远程同乐”功能,测试版现已对详情>>

阅读: 40
日期: 2019-10-22
LOL10月16日pbe测试服更新了什么-LOL10月16日pbe测试服更新内容一览

《LOL》10月16日pbe测试服更新内容汇总。英雄联盟的PBE测试服在10月16日进行了版本更新,本次版本更新之中,主要对大量英雄进行了平衡性微调,同时对于后续的详情>>

阅读: 10
日期: 2019-10-17
恙化装甲测试测几天恙化装甲测试相关内容一览

恙化装甲即将开始测试,那么大家是不是很关心比如游戏多大,这次可以氪金吗等等问题呢,下面小编就为大家解答一下吧。恙化装甲测试相关内容一览Q:本次测试详情>>

阅读: 8
日期: 2019-10-17
《魔兽争霸3重制版》BETA 测试版相关新鲜玩意

原标题:《魔兽争霸3重制版》BETA 测试版相关新鲜玩意 作者:NGA-丢你拉姆 近期魔兽争霸3重制版的BETA测试部分放出,一些魔兽争霸职业选手也开始纷纷直详情>>

阅读: 2
日期: 2019-10-15
《魔兽争霸3重制版》BETA测试版相关新鲜玩意

原标题:《魔兽争霸3重制版》BETA 测试版相关新鲜玩意 作者:NGA-丢你拉姆 近期魔兽争霸3重制版的BETA测试部分放出,一些魔兽争霸职业选手也开始纷纷直详情>>

阅读: 4
日期: 2019-10-15
因变砖问题苹果已撤回iPadOS13.2第二测试版

原标题:因变砖问题 苹果已撤回iPadOS 13.2第二测试版 在发现iPadOS 13.2开发者Beta版本导致部分2018年款iPad Pro变砖需要通过DFU手动恢复之后,苹果详情>>

阅读: 4
日期: 2019-10-13
Facebook证实在测试隐藏点赞数

原标题:Facebook 证实在测试隐藏点赞数 据 Android Police 报道,为减轻社交媒体的竞争压力,Facebook 正在考虑一项测试,停止显示用户发表内容获得的详情>>

阅读: 5
日期: 2019-09-03
《Subverse》9月28日开启限量封闭测试没有抢先体验

原标题:《Subverse》9月28日开启限量封闭测试 没有抢先体验 科幻射击游戏《Subverse》开发商Studio FOW最近更新了他们在Kickstarters的众筹页详情>>

阅读: 25
日期: 2019-09-02
精彩推荐