JPF Application Goals and Types

JPF Application Goals and Types JPF应用程序目标和类型

  到目前为止,您已经知道在JPF上运行在编译的java程序,就像普通的java虚拟机。但是,使用JPF的目的是什么?而且基于这些目的,不同的JPF应用程序类型是什么。

Why to Use JPF?

  在我们对不同类型的jpf应用程序进行分类之前,值得一提的是为什么我们真的想应用它。忠告:如果你有一个严格的顺序程序,只有几个定义良好的输入值,你最好写几个测试用例 -- 使用JPF对你的帮助并不会太多。</br>
使用JPF的两大主要原因有:

  • Explore Execution Alternatives 可选择执行方案</br>
      毕竟,jpf最初是作为软件模型检查器开始的,所以它最初的领域是探索执行的选择,其中我们有四种不同的类型:</br>

    • scheduling sequences --- 并发应用仍然是JPF应用程序的主要领域,因为(a)死锁和数据竞争等缺陷是微妙的,通常是虚假的。 (b)调度程序通常无法从测试环境中控制。也就是说,这很难甚至不可能被检测。另一方面,JPF不仅“拥有”调度程序(它是虚拟机),而且可以开发所有的调度组合。<font color=red>它甚至可以让你自己定义调度的策略</font>。
    • input data variation --- JPF允许您探索通过启发式定义的输入值集(例如低于、等于或高于某个阈值的值),这在编写测试驱动程序时特别有用。
    • environment events --- 像Swing或Web应用程序之类的程序类型通常会对类似于用户输入的外部事件作出反应,这样的事件可以由JPF作为选择集来模拟。
    • control flow choices --- JPF不仅可以检查程序对具体输入的反应,它还可以回头,系统地探索程序控制结构(分支指令),以计算将执行代码某一部分的输入数据值。
  • Execution Inspection 执行检查</br>
      即使你的程序没有很多执行选项,你可以利用JPF的检验能力。作为一台可扩展的虚拟机,实现<font color=pink>coverage analyzers 覆盖分析器</font>或<font color=pink>non-invasive tests 非侵入性测试</font>相对容易,否则会忽略这些情况,因为它们很难或很乏味地实现(比如数字指令中的溢出)。

JPF Application Types JPF应用类型

  有三种基本的JPF应用类型,它们各有不同的优势和劣势:JPF- aware, unaware"enabled" programs

app-types.png

JPF unaware programs
这是通常的情况 --- 在应用程序中运行jpf,该应用程序通常不知道验证。它只在任何兼容java的vm上运行。使用JPF检查这种应用的典型原因是查找难以测试的所谓的违反非函数属性,例如死锁或竞争条件。JPF特别擅长发现和解释与并发相关的缺陷,但你得知道代价:JPF比java虚拟机慢得多(它比正常的字节代码解释器做的更多),它可能不支持受测试系统使用的所有Java库。

JPF dependent programs
我们有模型的应用程序 --- 他们存在唯一目的是验证通过JPF(例如,检查某个算法),所以java恰好是实现语言因为这是JPF的理解。通常,这些应用程序是基于特定于域的框架(例如状态扩展?)编写的,以便JPF能够验证模型。因此,模型应用程序本身通常较小,规模很好,并且不需要额外的特性规范。缺点是开发底层域框架非常昂贵。

JPF enabled programs
第三类的投资回报可能是最好的,可以在任何VM上运行的程序,但是包含表示无法用标准Java语言表示的属性的java注释。

For example, assume you have a class which instances are not thread safe, and hence are not supposed to be used as shared objects. You can just run JPF and see if it finds a defect (like a data race) which is caused by illegally using such an object in a multi-threaded context. But even if JPF out-of-the-box can handle the size of the state space and finds the defect, you probably still have to spend a significant effort to analyze a long trace to find the original cause (which might not even be visible in the program). It is not only more easy on the tool (means faster), but also better for understanding if you simply mark the non-threadsafe class with a @NonShared annotation. Now JPF only has to execute up to the point where the offending object reference escapes the creating thread, and can report an error that immediately shows you where and how to fix it.

There is an abundance of potential property-related annotations (such as @NonNull for a static analyzer and JPF), including support for more sophisticated, embedded languages to express pre- and post-conditions.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,393评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,790评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,391评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,703评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,613评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,003评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,507评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,158评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,300评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,256评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,274评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,984评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,569评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,662评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,899评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,268评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,840评论 2 339

推荐阅读更多精彩内容