欢迎来到天天文库
浏览记录
ID:46234621
大小:369.66 KB
页数:17页
时间:2019-11-21
《开发者测试指导书-公开版本》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、开发者测试指导书基本概念21什么是开发者测试?22为什么要进行开发者测试23开发者测试的基本思路34开发者测试的Anti-pattern35开发者测试的分类56开发者测试的测试手段7如何对现有代码进行开发者测试71辨识可测试目标72标识风险并定义开发者测试策略83找到测试入口84重构94.1重构过程中的其他注意事项125编写测试用例126测试执行覆盖率分析14技术保证错误!未定义书签。流程保证错误!未定义书签。Coverage错误!未定义书签。常见问题错误!未定义书签。常见问题161JMock和JUnit的类库顺序问题161基本概念1.1什么是开发者测试?
2、开发者测试是由开发者进行测试,其H标是检验开发者编写的代码是否达成了其原始H标。1.2为什么要进行开发者测试让我们看看下面的示意图,假设开发一个故事时,需要修改3个模块ABC。兔子团队会分头开发模块,不做开发者测试,然后马上进行验收测试;而乌龟团队会在开发模块完成后先进性开发者测试,再进行验收测试。
3、模块B开发T模块C开发模块A纠错集成驱扇集咖I模块A开发、一
4、模块B开发、——模块C开发、测试、纠错结果如何呢,这是软件开发过程中的“龟兔赛跑”,兔了团队在验收测试过程中往往会不断发现问题,修改问题,而乌龟团队往往在验收测试过程中发现较少的问题后来居上。这是因
5、为对模块内部的问题,兔子团队基木上是串行发现的,而乌龟团队基本上是并行发现的。乌龟团队和兔子团队的差距与模块的规模和负责性相关。1.3开发者测试的基本思路开发者测试的基本思路其实很简单,针对一个被测对象,模拟不同的输入值,检查输出值是否符合预期。属性测试用例的基木形式是:>构造测试输入值;>驱动被测对象执行;>对比返回值和期望返回值1.4开发者测试的Anti-pattern在讨论开发者测试的步骤之前,我们先看一看开发者测试失败的常见原因。Anti-pattern1:测试用例没有检查所有的输出值是否符合预期开发者测试不成功可能有很多,但是,最普遍的原因是没有
6、检查所有的输出值是否符合预期。Anti-pattern2:测试用例没有能够控制所有输入值值得注意的是,开发人员放弃某些输出值检查的一•种理由是”不知道某些输出项期望输出值应该是什么?”。其实,程序是不会有随机行为的(很多看起来随机的行为其实依赖于伪随机数,而伪随机数往往依赖于时钟),不知道期望输岀值的原因应该是什么的原因往往是由于开发人员在编写测试用例是也不知道输入值会是什么。也就是说,问题的原因是测试用例没有能够控制所有输入值。如何更好地设计开发者测试用例我们将在第二章中讨论。Anti-pattern3:被测对象粒度太小从上面两个Anti-pattern
7、可以看出,开发者测试的成木和被测对象的输入输出值个数有很人的关系,因此,被测对象粒度不易太小,因为往往这意味着人量的输入输出。然而不幸的是,在这一点上,往往存在错误认识,例如,在Wikipedia上被测单元就是这样被定义的:Aunitisthesmallesttestablepartofanapplication.Tnproceduralprogrammingaunitmaybeanindividualfunctionorprocedure.Anti-pattern4:开发者测试与架构脱节开发者测试的测试Fl标的一个理想來源是系统架构。冃前,许多项H开发者
8、测试效果不好的深层原因是开发者测试目标与系统架构脱节。至于什么才是好的被测冃标粒度,我们将在2.1里面继续讨论Anti-pattern5:开发者测试与开发脱节虽然在“龟兔赛跑”的例子里面已经论述了开发者测试的效果,但是在实际项H中,开发者测试常常与开发活动脱节,开发者测试变成了一个在功能开发测试完成之后的一个补充测试(往往是为了达成代码覆盖率指标)。如何在流程上保证开发者测试和开发同步执行将在第四章里讨论。Anti-pattern6:作弊开发者测试开发考测试应该遵循一个基本原则:就是在测试过程屮不应人为影响被测冃标的执行。这里我们指出两种作弊方式,定义_I
9、F_TEST_开关,用调试工具人为修改变量取值。这些作弊方式都将导致我们测试的口标和实际执行时的口标的偏离,导致开发者测试无效。1.5开发者测试的分类任何测试都应该是风险驱动的,我们首先对开发过程屮的风险进行一下分类:1.模块设计编码失误:a)开发人员对模块口标理解正确,但是设计编码失误造成模块未完成预定功能;b)架构设计正确,开发人员对模块目标理解不正确;2.架构设计失误a)架构设计错误使系统无法完成预定功能;3.外部接口失误a)与外部软硬件系统接口运义错误使系统无法完成预定功能;4.支撑技术应用失误a)对实现支撑技术应用失误(如中间件、数据库等)使系统
10、无法完成预定功能;5.需求理解失误a)开发团队内部或与客户之间就需
此文档下载收益归作者所有