- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
软件测试之单元测试
试”,组件测试,系统测试,集成测试,压力测试 和验收测试。开发团队成员做的或者参与的是“单元测试”,集成测试。这里的单元测试我加了引号是因为看完下面的文章 ,我
试”,组件测试,系统测试,集成测试,
压力测试 和验收测试。开发团队成员做的或者参
与的是“单元测试”,集成测试。这里的单元测试我加了引号是因为看完下面的
文章 ,我
发现我们所做的单元测试并不是严格意义上的单元测试,叫
功能测试 比较恰当。下文所说
的功能测试遇到的问题在我们的实际项目中也遇到了。希望日后有机会改进。
1. 你做的是单元测试么?
我看到过至少 6 个公司因为他们有“单元测试
(unit test) ”而满脸自豪。而我们看到
的是这种“单元测试”结果会是一个麻烦。其他人讨论单元测试有多么伟大,但是它确实
变得让人痛苦不堪。这种测试需要
45 分钟才能跑完,还有你对代码只做了一点改动,但
却破坏了 7 个测试用例 ”。
这些家伙用的是一堆功能测试(
functional
test )。他们掉入了一个流行的思维陷阱,
认为只要是使用 Junit 来运行的测试用例,就必须是单元测试。你只需要一点点词汇量,
90% 的问题就都能解决。
2. 软件测试词汇表
单元测试( unit test ):
可测试代码的最小的一部分。通常是一个单一的方法,不会使用其它方法或者类。非
常快!上千个单元测试能够在
10 秒以内跑完!单元测试永远不会使用:
数据库
一个 app 服务器(或者任何类型的服务器) 文件 / 网络 I/O 或者文件系统
另外的应用
控制台( System.out,system.err 等等) 日志
大多数其他类(但不包括 DTO ‘ s, String,Integer,mock 和一些其他的类)
单元测试几乎总是回归测试套件( regression suite )的一部分。回归测试套件( Regression Suite ) :
能够立刻被运行的测试用例的集合。一个例子就是放在一个特定文件夹中的能够被
Junit 运行的所有测试用例。一个开发人员能够在一天中把一个单元测试回归套件运行 20
次或者他们可能一个月跑两次功能测试回归套件。功能测试( Functional Test ) :
比一个单元要大,比一个完整的组件测试要小。通常为工作在一起的的几个方法 / 函数
/ 类。上百的测试用例允许运行几个小时。大部分功能测试是功能测试回归套件的一部分。通常由 Junit 来运行。
集成测试( Integration Test ) :
测试两个或者更多的组件一起工作的情况。有时候是回归套件的一部分。组件测试( Component Test ) :
运行一个组件。经常由 QA ,经理, XP 客户等等来执行。这种类别的测试不是回归套
件的一部分,它不由 Junit 来执行。
组件验收测试( Component Acceptance Test C.A.T. ) :
作为正常流程的一部分,它是在众多人面前运行的一个组件测试。由大家共同决定这个组件是不是满足需求标准。
系统测试( system Test ): 所有的组件在一起运行。
系统验收测试( System Acceptance Test S.A.T. ):
作为正常流程的一部分,它是在众多人面前运行的一个系统测试,由大家来共同决定这个系统是不是满足需求标准。
压力测试( Stress Tests ) :
另外一个程序加载一个组件,一些组件或者整个系统。我曾经看到过把一些小的压力测试放到回归功能测试中来进行——这是测试并发代码的一个很聪明的做法。
Mock:
在单元测试或者功能测试中使用的一些代码,通过使用这些代码来确保你要测试的代
码不会去使用其它的产品代码( production code )。一个 mock 类覆盖了一个产品类中 的所有 public 方法,它们用来插入到尝试使用产品类的地方。有时候一个 mock 类用来实现一个接口,它替换了用来实现同样接口的产品代码。
Shunt:
有点像继承( extends )产品代码的 mock 类,只是它的意图不是覆盖所有的方法, 而只是覆盖足够的代码,所以你能够测试一些产品方法,同时 mock 剩余的产品方法。如
果你想测试一个可能会使用 I/O 的类它会变得尤为有用,你的 shunt 能够重写 I/O 方法同时来测试非 I/O 方法。
使用太多功能测试( functional test )会有麻烦
不要误解我的意思。功能测试有很大的价值。我认为一个测试良好的 app 将会有一个功能测试的回归套件和一个非回归功能测试的集合。通常情况下对于一磅产品代码,我都
想看到两磅单元测试代码和两盎司(注: 1 磅=16 盎司)
文档评论(0)