【24h】

Random testing for higher-order, stateful programs

机译:对高阶,有状态计划的随机测试

获取原文
获取原文并翻译 | 示例
           

摘要

Testing is among the most effective tools available for finding bugs. Still, we know of no automatic technique for generating test cases that expose bugs involving a combination of mutable state and callbacks, even though objects and method overriding set up exactly that combination. For such cases, a test generator must create callbacks or subclasses that aggressively exercise side-effecting operations using combinations of generated objects. This paper presents a new algorithm for randomly testing programs that use state and callbacks. Our algorithm exploits a combination of contracts and environment bindings to guide the test-case generator toward interesting inputs. Our prototype implementation for Racket (formerly PLT Scheme)—which has a Java-like class system, but with firstclass classes as well as gbeta-like augmentable methods—uncovered dozens of bugs in a well-tested and widely used text-editor library. We describe our approach in a precise, formal notation, borrowing the techniques used to describe operational semantics and type systems. The formalism enables us to provide a compact and self-contained explanation of the core of our technique without the ambiguity usually present in pseudo-code descriptions.
机译:测试是用于查找错误的最有效的工具之一。尽管如此,我们仍然知道没有用于生成测试用例的自动技术,该测试案例暴露涉及可变状态和回调的组合的错误,即使对象和方法覆盖了该组合的准确设置。对于这种情况,测试发生器必须使用生成对象的组合创建激发侧面实现操作的回调或子类。本文介绍了一种用于随机测试使用状态和回调的程序的新算法。我们的算法利用合同和环境绑定的组合来指导测试壳发生器对有趣的输入。我们的球拍(以前是PLT方案)的原型实施 - 具有类似Java类的类系统,但使用FirstClass类以及类似Gbeta的增强方法 - 在经过良好测试和广泛使用的文本编辑库中未发现数十个错误。我们在精确,正式的符号中描述了我们的方法,借用用于描述操作语义和型系统的技术。形式主义使我们能够提供对我们技术的核心的紧凑和独立的解释,而没有伪代码描述通常存在的歧义。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号