
创造一种标记和开发测试整个过程非常耗时。 当它似乎工作完成后,一个新版本的规范发布。 接下来会发生什么? 当然有一个测试套件的新版本的需要。 必须编写新的考验和更新旧的,甚至删除。
最好的办法就是做标记。 这个任务可以分为两个子任务:
转移的标记非常简单手工做它:
查找在旧规格标记标记。
在寻找新的规范版本的最好的地方插入的标记。
插入的标记。
如果只有10个说法 - 这工作是小菜一碟。 但如果有成千上万这是一个艰苦的工作,应该是自动的。 最难的是找到一个新的标记标签的适当场所。 很难仅仅因为该规范已更改。 对于JLS2到JLS3迁移过程中flollowing alrorithm被使用:
每个断言是圆的HTML锚。 他们都应该被转移使用这种算法。
轩的1T:如果某些标签被转移,有一个很大的可能性,在旧规范的下个标签将被转让后的一个位置。
提示2:算法应该检查,第二锚应在第一个,而不是从它的位置太远。
- 看文字前,后在旧规格的标签。 找到它的新规范。 如果其中一
没有改变 - 找到答案。 通常长度应1-2 sentances,至少60个字符长。 如果没有找到或几个sentances - 跳过此步骤。 - 尝试做相同的(1),但不久的文本中删除从周围的所有HTML标签的标签。 如果没有找到 - 跳过此步骤。
- 尝试采用算法,试图找到新的规格类似的文本。
1。 使用步骤(1)及(2),但desrease在循环中的搜索文本的长度,直到森泰斯发现或长度太短。 实际工作表明,这个数字应不小于20。
万桶 。 如果步骤(1)及(2)或(3A)发现了几个sentances增加文本的长度,以搜索,直到该文本是在新的规范或上限(铁140字)达到发现。 使用提示,找到最佳匹配的文字。
采用算法可以同时用于忽略的HTML标签和利用它们的优势。 算法的纯文本书面规格,HTML或XML有效。
该算法实施JLS2 -> JLS3标记传输工具。 84%的标记标签自动转移。 其余的人手工完成。
标签: 锚 , 断言 , JLS的 , 标记 , 标记转移 , 规格 , 测试 
这是非常重要的是有一个好的过程,同时编写测试套件。 我会谈谈JLS的使用,这对于一个。
正如前面提到的最终产品是考验。 之间有一个测试和规范的关系。 断言驱动的过程给出了一个不知是什么,其实每个组的测试检查,规范。 开发利用这一关系可以计算的覆盖范围,获得关于该试验不写,等断言名单
断言是从一个可以测试规范的声明。 和第一个步骤是确定在规范的所有断言。 之后,开发人员可以编写测试。
断言为例从爪哇语言规范: 
- 一个编译时错误,如果同样的修饰符出现不止一次在接口声明。
- 一个可执行文件名成员的类型包括其立即封闭类型,其次是$,其次是各成员的简单名称的二进制名称。
- 阿continue语句只能出现在一段时间,这样做,或声明。
有可能是是非可测试的不确定性或涉及许多发言。 有时候,这些陈述包括像“可能”或“可能”。 这不是真的,如果一个句子有“可以”一词是不检验的,但通常是这样。
举例非可验证的发言:
- 我们不推荐这种“混合符号”的数组声明。
- 情况下一个对象的类不是静态已知可能导致运行时类型错误。
- 但是,如果一个表达式的评价抛出一个异常,那么该表达式完成突然说。
有许多讨论和争议的断言。 有人说,不应作为例子断言对待。 也有人说,每个语句是一个主张和他们有两种类型:可测试和非测试的。 我个人的看法是,一种说法是肯定的东西可测试。 而且在大多数情况下的例子只是因为测试可以书面检查的具体例子断言。
查明在规范的过程称为断言标记。 有许多方法。 但在任何情况下,用户必须能够获得这一声明是否是一个声明,并以某种方式区别不同的说法信息。 可以有一个单独的映射与断言库和他们的ID的的声明。 我喜欢纳入规范的标记的想法。 这种方法被选中,是因为语言方面的Java SE的测试套件。 JLS的是书面的FrameMaker中。 随着出口机制的PDF和HTML版本创建的。 HTML的版本是使用了测试套件的创建。
在JLS和一些特殊的锚JLS的2所确定的开始和结束的说法。 其他信息是assertionID和声明的简短摘要。 最终锚图像和对测试环节。 HTML视图和代码视图显示在相应的插图。 断言ID的是arr033,arr034,arr020等
总的想法可以被描述为:
的<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的更容易嵌入到规范。
标签: 锚 , 断言 , assertionID , FrameMaker中 , 爪哇 , Java语言 , Java语言规范 , Java SE中 , JDK的 , JDK6 , JDK7 , JLS的 , 语言 , 标记 , PDF格式 , 规格 , 规范 , 语句 , 测试