单元测试与功能测试的区别
发布时间:2018-04-28 分享到:
单元测试
单元测试是从程序员的角度编写的。它确保类的某个特定方法成功执行一系列特定的任务。每个测试都确保只要给定输入,方法将输出预期的结果。
如果没有测试框架,编写一套可维护的自动化单元测试几乎是不可能的。在开始编写测试之前,请选择一个小组公认的框架。您将经常性地使用这个框架,因此您最好对它有点好感。极限编程网站提供了几个单元测试框架(请参阅参考资源)。我最熟悉的框架是 JUnit,它专门用来测试 Java 代码。
功能测试
功能测试是从用户的角度编写的。这种测试确保系统执行用户期望它执行的工作。
很多时候,系统开发好比建筑房屋。尽管这种类比不很恰当,但为了理解单元测试与功能测试的区别,我们可以扩充这种类比。单元测试好比房屋建筑现场的建筑监理员。他关心房屋的各个内部系统,如地基、构架、供电系统和管道设备等。他确保(测试)房屋每一部分的工作都安全、正常,即符合建筑说明。这种情况下,功能测试类似于视察同一建筑现场的房主。他假定内部系统将正常运作,并假定建筑监理员在执行其任务。房主关心的是住在这所房子里将会怎样。他关心房子的外观如何,各个房间的大小是否合适,房子能否满足家庭的需要,以及窗户的位置是否有利于采光。房主对房子执行功能测试。他从用户的角度考虑问题。建筑监理员对房子执行单元测试。他从建筑工人的角度考虑问题。
就像单元测试一样,如果没有测试框架,编写一套可维护的自动化功能测试实际上是不可能的。JUnit 非常适合编写单元测试;但是,当试图编写功能测试时,它就显得力不从心了。就功能测试而言,没有与 JUnit 相当的框架。也有几种用于功能测试的产品,但我从来没见过它们应用于生产环境。如果找不到满足您的需要的框架,您就必须创建一个。
无论我们多么擅长于构建手头的项目,也不管我们正在创建的系统多么灵活,如果我们的产品不合用,那我们就是白费时间。因此,功能测试是开发最重要的部分。
由于两种测试都必不可少,您就需要了解编写它们应遵循的原则。
单元测试是从开发人员的角度出发编写的,并且关注的是所测试的类的特定方法。当编写单元测试时,请使用以下这些原则:
●首先编写单元测试,然后再编写要测试的类代码
●在单元测试中捕获代码注释。
●测试所有执行“令人感兴趣的”功能(即,不是 getter 和 setter,除非它们以某种独特的方式执行获取和设置操作)的公共方法。
●将每个测试实例与它要测试的类放在同一个包内,以获得对包成员和保护成员的访问权。
●避免在单元测试中使用特定于域的对象。
●功能测试是从用户的角度出发编写的,并且关注用户感兴趣的系统行为。找一个优秀的功能测试框架,或者开发一个测试框架,并使用这些功能测试识别用户的真实需求。这样,功能测试人员即可获得一种自动化工具以及使用这一工具的着手点。
●使单元测试和功能测试成为您开发过程中的中心环节。如果您这样做了,您将对系统的运行及扩展充满信心。如果您没有这样做,您对系统就没有十足的把握。 测试可能不那么有趣,但在开发过程中进行单元测试和功能测试。
相关推荐
-
02-02
一
祝贺!博测空间检测评价技术服务有限公司在中国赛宝实
近日,中国赛宝实验室 的 CEPREI-SPT-2302软件信息安全性测试能力验证 比结果发布,博测空间检测评价技术服务有限公司在 能力考核中成绩优异,在参与能力验证的全国 156家实验室中名...
-
02-02
一
能力验证结果优秀实验室名单揭晓!我司在其中
2023年6月-11月,中国赛宝实验室策划实施了CEPREI-SPT-2302软件信息安全性测试能力验证计划,全国150余家实验室报名参加。2024年1月12日,相关工作总结会在中国赛宝增城总部成功举办。近...
-
04-02
一
国家智慧教育平台将上线“AI学习”专栏
在国家智慧教育平台上线两周年之际,数字教育集成化、智能化、国际化专项行动暨“扩优提质年”启动仪式日前在北京举行,会上,教育部正式启动人工智能赋能教育行动。 教育部党...
-
04-08
一
Claude发布函数调用工具:Tool use
允许模型与外部系统和数据进行交互 使用Tooluse(functioncalling)功能,Claude不仅能够生成文本或回答问题,还能实际调用外部定义的函数或工具来执行特定操作,如获取当前的天气信息、执...