提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:龚雪|2014-03-18 09:31:47.000|阅读 609 次
概述:单元测试在整个软件测试工程中非常重要,本文总结了单元测试需要注意的一些事项。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
11 只测试公有接口
单元测试可以被定义为 通过类的公有 API 对类进行进行测试。 一些测试工具允许测试一个类的私有成员, 但这种做法应该避免, 它让测试变得繁琐而且更难维护。 如果有私有成员确实需要进行直接测试, 可以考虑把它重构到工具类的公有方法中。 但要注意这么做是为了改善设计, 而不是帮助测试。
12 看成是黑盒
从在第三方使用者的角度, 测试类是否满足规定的需求。 并设法让它出问题 (译注: 原文 tear it apart, 本意 “将它撕碎”, 我的理解是崩溃, 出问题, 不能正确工作)。
13 看成是白盒
毕竟被测试类是程序员自写自测的, 应该在最复杂的逻辑部分多花些精力测试。
14 芝麻函数也要测试
通常建议所有重要的函数都应该被测试到, 一些芝麻方法, 如简单的 setter 和 getter 都可以忽略。 但是仍然有充分的理由支持测试芝麻函数:
芝麻 很难定义。 对于不同的人有不同的理解。
从黑盒测试的观点看, 是无法知道哪些代码是普通的。
即便是再芝麻的函数, 也可能包含错误, 通常是 “复制粘贴” 代码的后果:
private double weight_;
private double x_, y_;
public void setWeight(int weight)
{
weight = weight_; // error
}
public double getX()
{
return x_;
}
public double getY()
{
return x_; // error
}
因此建议测试所有方法。 毕竟芝麻函数也容易测试。
15 先关注执行覆盖率
区别对待 执行覆盖率 和 实际测试覆盖率。 测试的最初目标应该是确保较高的执行覆盖率。 这样能保证代码在 某些 参数输入时能有效执行。 一旦执行覆盖率就绪, 就应该开始改进测试覆盖率了。 注意, 实际的测试覆盖率很难衡量 (而且往往趋近于 0%)。
思考以下公有方法:
void setLength(double length);
调用 setLength(1。0) 你可能会得到 100% 的执行覆盖率。 要达到 100% 的实际测试覆盖率, 有多少个 double 浮点数这个方法就必须被调用多少次, 并且要一一验证行为的正确性。 这无疑是不可能的任务。
16 覆盖边界值
确保参数边界值均被覆盖。 对于数字, 测试负数, 0, 正数, 最小值, 最大值, NaN (非数字), 无穷大等。 对于字符串, 测试空字符串, 单字符, 非 ASCII 字符串, 多字节字符串等。 对于集合类型, 测试空, 1, 第一个, 最后一个等。 对于日期, 测试 1月1号, 2月29号, 12月31号等。 被测试的类本身也会暗示一些特定情况下的边界值。 基本要点是尽可能彻底的测试这些边界值, 因为它们都是主要 “疑犯”。
17 提供一个随机值生成器
当边界值都覆盖了, 另一个能进一步改善测试覆盖率的简单方法就是生成随机参数, 这样每次执行测试都会有不同的输入。
想要做到这点, 需要提供一个用来生成基本类型 (如: 浮点数, 整型, 字符串, 日期等) 随机值的工具类。 生成器应该覆盖各种类型的所有取值范围。
如果测试时间比较短, 可以考虑再裹上一层循环, 覆盖尽可能多的输入组合。 下面的例子是验证两次转换 little endian 和 big endian 字节序后是否返回原值。 由于测试过程很快, 可以让它跑上个一百万次。
void testByteSwapper()
{
for (int i = 0; i < 1000000; i++) {
double v0 = Random。getDouble();
double v1 = ByteSwapper。swap(v0);
double v2 = ByteSwapper。swap(v1);
assertEquals(v0, v2);
}
}
18 每个特性只测一次
在测试模式下, 有时会情不自禁的滥用断言。 这种做法会导致维护更困难, 需要极力避免。 仅对测试方法名指示的特性进行明确测试。
因为对于一般性代码而言, 保证测试代码尽可能少是一个重要目标。
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢