光电 · 技术与产业
文章库关于本站

产业观察

区块链 测试技术有哪些常见误区:覆盖率、测试环境与安全边界

摘要

区块链测试的常见误区包括把测试通过视为安全保证、只验证正常输入、用单元测试替代集成测试,以及把测试网络视为主网的完整替身。理解各类测试的适用范围,才能正确判断测试结果能够证明什么、还遗漏什么。

区块链价格波动率的科技主题配图

适用范围:先明确测试对象

区块链测试涉及不同对象。以太坊开发文档讨论智能合约的功能验证与安全检查;比特币开发文档介绍应用测试所用的测试网络和回归测试环境。两者分别回答如何检查代码、如何控制实验条件,不能直接互相替代。以下误区主要适用于智能合约及区块链应用测试。

误区一:测试全部通过就代表安全

以太坊开发文档介绍了单元测试、集成测试及自动化与人工检查的互补关系,也强调部署前测试的重要性。测试通过说明实际检查的行为符合预期,结论受输入、断言和执行路径限制。

区块链价格预警的科技主题配图

例如,仅验证一次正常调用成功,无法说明非法输入一定被拒绝。设计用例时,需要同时明确成功条件、失败条件,以及失败后应保持不变的状态。

区块链行情数据api的科技主题配图

误区二:覆盖率高就意味着检查充分

覆盖率用于观察哪些代码在测试中执行过,但执行过某条语句,与验证其结果正确是两件事。如果测试调用了状态更新函数,却没有核对更新后的数据,相关代码可能已被覆盖,错误仍可能遗漏。

覆盖率适合寻找未触及的路径;判断测试质量,还需要检查断言是否对应业务规则,以及边界条件是否得到验证。

误区三:单元测试可以替代完整流程测试

单元测试适合定位独立函数的问题,集成测试适合检查函数之间或合约之间的交互。组件分别通过检查,不足以证明组合后的流程正确。

对于包含多个步骤的业务,应验证前一步产生的状态能否被后一步正确使用。只测合法输入也会留下缺口,异常输入、重复调用和时间边界同样需要对应的预期结果。

误区四:自动化工具可以取代人工判断

自动化适合重复执行明确的检查,但工具可能漏报,也可能产生误报。人工检查能够结合业务含义审视假设,同样受到经验与精力限制。

适用方式是让自动化持续验证已明确的规则,再由人工分析异常结果和规则遗漏。工具没有报警,不能单独构成安全结论。

误区五:测试网络表现等同于主网表现

比特币开发文档区分公共测试网络与regtest:前者用于测试网络交互,后者允许开发者控制出块时机,便于建立可重复的实验环境。环境可控程度不同,适用问题也不同。

常见问题是是否选一种环境就够了。需要稳定复现状态变化时,可控环境更合适;需要观察公共网络交互时,则应补充相应测试。在某个环境中成功,只能支持该环境及其条件下的结论,不能自动推导为主网运行保证。

← 返回全部文章

延伸阅读 · 相关栏目

光电技术产业观察研究资料资料与核验