让它简单吗?

2plus2 Make it simple? 规范是重要的 - 这句话是大家都清楚。 一种广泛使用的产品,没有一个规范的技术或语言是没有用的。 一个没有一个TestSuite规范是危险的。 一个没有标记的TestSuite和考验是不可能的。 这个过程相当复杂。 不过有一些方法可以简化的标记阶段。

至于Java语言规范 (JLS的)和 Java虚拟机规范 (JVM中)他们在FrameMaker中写的。 后来规范是出口到HTML和PDF。 标记嵌入到HTML版本。 我的看法是,标记信息应该被置于(或连接)的起源文字。 在我们的情况下,它是FrameMaker中的文件。 我不知道这是有可能的话,但我猜它是。 如果没有,也许FrameMaker中是不是最好的解决办法。 因此,我们将大大减少时间和转移旧标记和标记了新的案文需要努力争取。 而且在写作的规范下一次修订与TCK的团队撰文标记连同所有chenged和新论断。 我想说的最佳途径是写作的规范和标记过程是在同一时间内完成。 这是合理的撰文指出测试应该测试什么报表开发。




  • 分享/书签
Print This Post 打印此职位

断言和标记

book Assertions and markup

这是非常重要的是有一个好的过程,同时编写测试套件。 我会谈谈JLS的使用,这对于一个。

正如前面提到的最终产品是考验。 之间有一个测试和规范的关系。 断言驱动的过程给出了一个不知是什么,其实每个组的测试检查,规范。 开发利用这一关系可以计算的覆盖范围,获得关于该试验不写,等断言名单

断言是从一个可以测试规范的声明。 和第一个步骤是确定在规范的所有断言。 之后,开发人员可以编写测试。

断言为例从爪哇语言规范: smt Assertions and markup

  • 一个编译时错误,如果同样的修饰符出现不止一次在接口声明。
  • 一个可执行文件名成员的类型包括其立即封闭类型,其次是$,其次是各成员的简单名称的二进制名称。
  • 阿continue语句只能出现在一段时间,这样做,或声明。

有可能是是非可测试的不确定性或涉及许多发言。 有时候,这些陈述包括像“可能”或“可能”。 这不是真的,如果一个句子有“可以”一词是不检验的,但通常是这样。

举例非可验证的发言:

  • 我们不推荐这种“混合符号”的数组声明。
  • 情况下一个对象的类不是静态已知可能导致运行时类型错误。
  • 但是,如果一个表达式的评价抛出一个异常,那么该表达式完成突然说。

有许多讨论和争议的断言。 有人说,不应作为例子断言对待。 也有人说,每个语句是一个主张和他们有两种类型:可测试和非测试的。 我个人的看法是,一种说法是肯定的东西可测试。 而且在大多数情况下的例子只是因为测试可以书面检查的具体例子断言。

查明在规范的过程称为断言标记。 有许多方法。 但在任何情况下,用户必须能够获得这一声明是否是一个声明,并以某种方式区别不同的说法信息。 可以有一个单独的映射与断言库和他们的ID的的声明。 我喜欢纳入规范的标记的想法。 这种方法被选中,是因为语言方面的Java SE的测试套件。 JLS的是书面的FrameMaker中。 随着出口机制的PDF和HTML版本创建的。 HTML的版本是使用了测试套件的创建。

在JLS和一些特殊的锚JLS的2所确定的开始和结束的说法。 其他信息是assertionID和声明的简短摘要。 最终锚图像和对测试环节。 HTML视图和代码视图显示在相应的插图。 断言ID的是arr033,arr034,arr020等

JLC2 html1 Assertions and markup

JLC2 html code1 Assertions and markup

总的想法可以被描述为:

的<a name=assertionID> <! - HTML注释shord描述为- >
在这里断言声明
<img src="pics/assert.gif">的<a href="path到test">测试ID,这是相同的说法编号</一>

如果规格不同地区分别发表的声明是一个测试测试第一个标记会像arr033_0,arr033_1,arr033_2东西。

这种建筑形式被用于JLS和JLS的2。 这是轻微JLS3修改,但主要的想法得到了维护。 我知道与非静态断言在一个单独的仓库,其中编号是一些哈希值计算,并根据内容的ID保存方法的一些例子。 有几个原因显示了它是不是一个非常好的解决方案。 总有一个艰难的过程迁移到新版本的规格。 但在我看来,这是很大的问题,静态ID的更容易嵌入到规范。




  • 分享/书签
Print This Post 打印此职位

规范,一致性,兼容性,测试...它们是什么一回事呢?

有时候这一切条件似乎很混乱。 或者它不如说他们通常甚至总是这样。 abstract Specification, conformance, compatibility, tests... What are they all about? 特别是当不同的个人和公司以不同的方式了解他们周围的情况。 因此,让我们从头开始。

有大量的标准规格或我们身边。 韦伯斯特字典描述标准, 例如设立的机关或某事,自定义一个模型,或一般的同意 所以基本上这是规则,其他人在使用清单必须服从。

让我们创建一个计算机语言。 所有规范首先是必要的,这将描述整个概念模型,告诉什么可以作为程序开发人员编写,将如何表现,将是什么编制,执行和在创建所有必需的文件,等等 - 就是这样,人都阻挡不了那里。 如果这个想法是不够好几个其他公司可能希望创建自己的实现:菲编译器和执行环境。 但他们必须遵守的规范。 否则,相同的程序将运行在一个并运行不同,甚至失败的其他执行。 规定由指定的专递执行所有被称为一致性

为什么会这样重要? money coins Specification, conformance, compatibility, tests... What are they all about? 那么,让我们说,这门新的语言是用于创建股票交换计划。 想象一下,这是写在美国,在纽约证券交易所以及测试和使用。 它是那么好,这在世界各地购买了许可证,并开始使用自己的语言实现这一新计划的其他国家。 如果执行不服从的规范,同样的程序可能与客户的钱不同的事情。 基本上这可能出售股票交流计划时,商业代理,推行“购买”按钮,或购买钢材代替水果。

良好的问题可以是:“为什么不同的实现? 让我们创建一个并使用它。“。 有不同的答案。 有几家公司可能想使用此不同的平台(Solaris操作系统,Linux,Windows)和设备(台式电脑,移动电话,掌上电脑,学生计算器等语言)。 其他人想要他们的需要优化算法,铁执行这些大型数据库程序等将是10倍的速度。

关键的一点是,几个不同的实现必须完全相同的工作,并根据该规范。 如果他们这样做,他们被称为兼容 坏的部分是,没有人可以肯定的。 这就是为什么核查机制是必要的。 通常它是一个测试套件,验证一致性和兼容性。 而在这种情况下,说是错误的东西几乎是兼容或99%兼容。 有可能是或否。

no bug2 Specification, conformance, compatibility, tests... What are they all about? 让我们走向一个例子。 Sun微系统发明Java语言。 为了更精确的几个不同版本的Java市场创建。 最有名的是 Java ME的 Java SE中 Java EE的 并为他们每个人是一个单独的规范。 Sun微系统有其自己的实现,这是最常用的。 然而,语言是那么好,有不少其他公司和它们的实现。 出于兼容性和一致性的目的有TCKs( 测试一致性工具包 )。 TCK的是一种产品,其中包括多项测试,这是正确的,如果按一个实现从规范的规则检查。

我的打算是让一个什么样的规格,一致性,兼容性和TCK的是,为什么他们是如此的重要思想。




  • 分享/书签
Print This Post 打印此职位