详尽的网站验证

时间:2010-02-22 14:29:51

标签: discrete-mathematics brute-force formal-verification

我有这个伟大的想法,基本上采用一些暴力攻击来测试/验证我的网络应用程序不会崩溃。

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

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

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

当发现问题时,我想尝试以尽可能少的努力激发该错误,以便能够提供明确的测试用例。

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

3 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

详尽的搜索对于有限的资源(内存,空间)来说可能是非常简单的任务,但是使用许多技术可以减少问题,例如抽象代码(例如:用存根替换数据库驱动程序类),体验在此呈现paper:使用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