首页> 外文会议>Annual Pacific Northwest Software Quality Conference >Dynamic Design Analysis: Testing Without Code
【24h】

Dynamic Design Analysis: Testing Without Code

机译:动态设计分析:没有代码的测试

获取原文

摘要

This paper presents a technique for representing and analyzing the dynamic behavior of a design before time and effort is spent to build it. The technique is based on a mathematical model of objects, software, and software designs and provides operations and inference rules to manipulate not only the objects in a design, but the design itself (see Whitmire, 1997). The technique involves defining an initial state for a scenario and seeding that state with an event that takes the form of a message that originates outside the design. We follow the messages generated as side effects in a breadth-first order until we reach a new steady state, one in which no object changes state without another external event. Working through various scenarios, it is fairly easy to determine which messages will succeed and which will not. The difference between testing a design in this way and testing a design that we've put into code is the time spent writing the code. The schemas above are very easy to modify, especially when compared to the effort to modify any code. For example, I added the feature to send AddEntry an object reference and have the operation create the ListEntry object in a couple of minutes while editing this paper. Modifying code to the same extent would have taken many hours. One additional, if unobvious, benefit of dynamic design analysis is that that you've analyzed a large part of the design, you have complete design contracts for all of the methods you have to build. The specific implementation of each method still needs to be determined, but the rest of the design's view of that method has been fixed and verified. Using this technique does not guarantee that you will find all of the errors in your design. You still have to imagine the combinations of external events and starting states that can cause your design to fail, and it is likely that you'll miss one or two. It will, however, provide you with documented results of the combinations you did analyze, giving you a good start on your set of test cases, including the expected results. This works for combinations that lead to errors, as well as those that succeed in passing a message. The technique also encourages you to state explicitly all of your assumptions. Hidden assumptions, such as which objects are actually in scope, are a leading cause of design errors. Like those who build bridges, machines, and electronic circuits, we can be more confident in our approach to solving a problem if we can show that our approach will indeed work before we build it. Testing a design before building it should lead to more accurate estimates because it eliminates the time required to rework code due to an error in the design, something not included in any estimate. Like steel, concrete, and electronic components, software code is very expensive to modify, so expensive, in fact, that we can no longer afford to build large, complex systems several times while trying to deliver it the first time.
机译:本文提出了一种在时间和努力建立它之前代表和分析设计动态行为的技术。该技术基于对象,软件和软件设计的数学模型,并提供操作和推理规则,不仅可以操作设计中的对象,而是设计本身(参见Whitmire,1997)。该技术涉及定义具有该状态的场景和播种的初始状态,该事件采用源自设计之外的消息的形式。我们遵循以广度一阶的副作用生成的消息,直到我们达到新的稳态,其中没有对象而没有其他外部事件的状态。通过各种场景工作,确定哪些消息将成功并且不会。以这种方式测试设计与测试我们投入代码的设计之间的差异是写作代码的时间。上面的模式非常易于修改,特别是与修改任何代码的努力相比时。例如,我添加了要发送的AddEntry一个对象引用的功能,并且在编辑本文时,将在几分钟内创建ListEntry对象。修改代码在相同的程度上会花费很多时间。另外一个,如果不可吸收的动态设计分析的好处是您已经分析了大部分设计,您可以为您要构建的所有方法都有完整的设计合同。每个方法的具体实现仍然需要确定,但是该方法的其余设计视图已经修复并验证。使用此技术并不能保证您将找到您设计中的所有错误。您仍然必须想象外部事件的组合和启动状态可能导致您的设计失败,并且很可能会错过一两个。但是,它将向您提供所记录的组合结果,您对分析的组合,在您的一组测试用例中发出良好的开始,包括预期结果。这适用于导致错误的组合,以及那些成功传递消息的组合。该技术还鼓励您明确陈述您的所有假设。隐藏的假设,例如哪个对象实际在范围内,是设计错误的主要原因。就像那些建立桥梁,机器和电子电路的人一样,我们可以更有信心的是解决问题的方法,如果我们能证明我们的方法确实在我们建立之前确实有效。在构建之前测试设计应该导致更准确的估计,因为它消除了由于设计中的错误而返回代码所需的时间,不包括在任何估计中。像钢,混凝土和电子元器件一样,软件代码非常昂贵,可以修改,如此昂贵,实际上,我们不能再建立大型复杂的系统,同时试图第一次交付它。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号