在 Symbian S60 平台进行单元测试
2010-03-16 17:18:00 来源:WEB开发网* 有效: [-5 ? 15]
* 无效: [-n ? -6]
* 无效: [16 ? n]
特殊值是错误产生的一个重要原因,它们需要函数额外注意,比如以下例子:
* 0和1的算术运算和函数使用
* 90度和多重复合
* 空字符串
* NULL值
经验和直觉能指引开发者预测代码错误的可能性。因为程序经常产生相似错误,通过错误猜想能使测试用例的创建更加实际有效。特别是当软件和开发组有进展时这是个很实际的方法,而且测试套件随之逐渐运行。如果有改动,这样的测试能标记出软件代码中充斥的bug。
相关错误猜想包括:
* 不适当或缺失的错误操作,例如,用RFile.Open()代替User::LeaveIfError(RFile.Open()).
* 不适当的异常操作,例如,捕获异常而忽略问题(当产品中存在异常时,它将使软件死掉)。(堆或其他资源)代码泄露,正确使用 cleanup stack 是一种为自动变量及类变量的构造和析构提供的很好的方法。当在指针后面删除对象时,这些指针在进行任何(可能产生退出的)操作时都应被置NULL直到在析构函数里被删除。
* 不恰当的语义转换。例如,在函数里被分片写在文件里的数据首先是调用而不是集合所有所需数据,然后将其写在一个原子操作里。如果操作中发生异常则第一种方法很容易破坏该文件。
* 不恰当地使用CleanUpStack和CActive。
* 无效的事件处理,例如,当事件按不同顺序发生时会有什么结果?通常的办法是设计一个有限状态机,然后简单地实现这个状态机。
* 对象的生命周期由其所处的状态不同而存在差异,例如,当参考对象不期望时(如果没有正确考虑或引证,调用返回值以及产生这种状况的活动对象)参对象被删除。
* 多线程, 并行执行和死锁。
● 结构法
代码覆盖 [14]的过程如下:
* 在程序中寻找不被测试实例测试过的区域;
* 创建附加测试实例以增加覆盖范围;
* 为代码覆盖确定一个定量测量,即一种非直接方式的质量。
理解代码覆盖分析不能识别缺失代码是很重要的。例如,缺失的功能函数。这就是为什么结构测试函数绝不能用作唯一的测试技术。结构测试是行为测试的一种补充,而非取代。
结构覆盖方式有很多,包括:
更多精彩
赞助商链接