1

我有一个宏伟的想法,即基本上采用一些蛮力攻击来测试/验证我的 Web 应用程序不会崩溃。

不要让我开始单元测试和 IoC 的东西,这完全是另一回事。

我正在做的,以及我正在寻求帮助的是创建一个智能详尽的搜索,探索程序状态的一部分。

我所拥有的是一个网页,其中包含我可以做的事情,单击是一回事,文本输入是另一回事,一些输入(如单选按钮和下拉列表)被限制为某些值。很基本的东西。我最终得到一组有限的事件和值,而我想要建模的是状态的进展。也许这在某种程度上是 FSM 优化,但目标是系统地检查事件和值的任意排列,看看会发生什么。

当发现问题时,我想尝试以尽可能少的努力引发该错误,以便能够呈现清晰的测试用例。

这与形式验证方法有关,我正在向有经验的人寻求帮助或见解。

4

3 回答 3

1

一方面,您想要做的听起来有点像模型检查,另一方面是自动测试用例生成(在后一类中检查Concolic 测试,这是一种避免在不可行的执行路径上浪费时间的技术)。

如果您假设您的 Web 应用程序是正确的并且想要证明它是正确的,那么模型检查将是首选方法。但在出现警告的情况下,您可能必须努力了解问题是否真实。测试用例生成面向错误发现:它不能证明您的应用程序是正确的,但如果它发现问题,它会为您提供一个输入向量来生成它,因此您无需怀疑问题是否真实。

我不知道任何现有的网络应用工具,但这并不意味着它们不存在。

于 2010-02-22T19:47:22.553 回答
1

听起来你想要一个模糊器。桃子就是这样一种工具。

于 2010-02-22T21:28:03.970 回答
0

对于有限的资源(内存、空间)来说,详尽的搜索可能不是一件容易的事,但是通过许多技术可以减少问题,比如抽象代码(例如:用存根替换数据库驱动程序类),本文介绍了一种经验:摘要使用 Java PathFinder 对 Web 应用程序进行模型检查(Vinh Cuong Tran,Yoshinori Tanabe,Masami Hagiya,东京大学)。

如果您希望对 FSM 之类的模型进行形式验证,Java PathFinder 有一个扩展来验证用 Java+注释编写的 UML 状态图(它取决于 Javapathfinder VM):

http://babelfish.arc.nasa.gov/trac/jpf/wiki/projects/jpf-statechart

于 2011-05-05T02:10:20.143 回答