(本文为原创,转载请说明出处:http://www.cnblogs.com/xiaocheng)
在当前的软件开发领域,测试语言有很多的选择,对于不同的行业、不同的开发阶段都可以选择不同的测试语言。即使在同一个项目的不同开发阶段,我们的测试语言也可能不同。当然每个阶段或者每个领域到底应该选择什么样的测试,其实是无解的问题。我们应该根据实际的情况做灵活的决策。通常情况下,UT或者低级别的测试尽量选择和被测测试实现语言相同的测试语言。而高级别的测试可能更趋向选择更加抽象的测试语言。本文不涉及如何选择测试语言,而是给大家介绍一种国际标准的测试语言TTCN-3。当然如果大家对在什么领域、什么阶段到底应该怎么去选择测试语言,也可以留言一起交流。
什么是TTCN-3
TTCN-3即Testing and Test Control Notation Version 3:是ETSI专门为测试领域制定的通用测试语言。目前在很多领域以及不同的软件开发阶段都有运用,下面简单的描述了TTCN-3当前的一个使用领域以及被用在软件开发哪些阶段。
关于更多的TTCN-3知识可以参考官方网站:http://www.ttcn-3.org
TTCN-3有哪些优点
新事物的产生肯定会招来一部分的质疑,他们经常会说和现在相比有什么区别?有什么好处等等疑问。。这里对于TTCN-3这门ETSI专门为测试领域制定的标准测试语言给出我自己的认识,如果有不对,大家可以一起讨论交流。
1、从架构上将抽象的测试套与底层适配层分析,这样可以使同一测试套可以在不同的平台运行,而且明确各组件的接口,可以让不同的角色聚焦自己的工作(测试人员和工具开发人员)
2、 内置非常强的匹配机制
3、支持并发测试以及动态的配置测试系统
。。。。。。
下图给出TTCN-3完整的测试系统的架构图,供大家参考。
TTCN-3核心语言理解
TTCN-3既然是专门为测试领域打造的语言,自然它的核心语言也应该是按照测试的思维去架构设计的。下面我们一起看看TTCN-3的核心语言的构成。
首先我们来看测试的步骤和需要什么?
从上图可以看出,实际上从高层抽象来看,测试行为是很简单的过程。就是激励出发被测系统,然后观察被测系统的行为表现是否正确而已(当然可能还包含环境的建立等等)。
1、激励、观察的组成
对于测试来说,激励和观察都需要数据和动作,而数据又需要描述它是什么样的,所以TTCN-3需要包含测试数据类型的定义、以及我们测试数据的描述。
对于动作,我们需要函数。而一系列的动作组成了我们的一个测试意图,这就是我们的一个测试用例。
通常情况下我们需要灵活的控制我们测试用例的执行,比如:在版本初验的时候,我想得到较快的质量反馈,所以我可能只需要控制执行基本功能验证的自动化脚本。
在大型测试系统中,我们可能需要根据功能划分功能模块,而且各个功能模块之间需要通信。
。。。。
经过上面对测试过程需要的内容,目前通用的语言都不能直接支持(当然你开发一个测试框架让其支持)。TTCN-3作为一个专门设计用于测试的语言怎么满足上面的要求了,下面是一个TTCN-3测试套的组成以及测试文件的组织结构。
A、测试数据类型:这里除了基本的编程语言所需要的类型外(integer、record等等),还包含了测试特有类型(component, port, verdicttype, default等等)
B、测试数据:这里和其他语言不同的是新增了模板,正是它提供给了TTCN-3更加灵活的匹配机制
C、测试系统配置:这里实现了测试各组件的关系connect或者map等
D、测试行为:实际上就是testcase以及相应的function、altstep等等
在TTCN-3中每个文件都是包含在module中,一个module包含了两部分,一个是定义部分,一个是控制部分(可选)。在控制部分你可以灵活的控制在和组装你的测试场景和行为。