Contents
1. WWWH About TCL    - 4 -
1.1 . What is TCL    - 4 -
1.2 . Why TCL    - 4 -
1.3 . When shall we use TCL    - 5 -
1.4 . How to program using TCL    - 5 -
2. TCL Basics    - 6 -
2.1 . Variables and Substitution    - 6 -
2.1.1 Command set and unset    - 6 -
2.1.2 Command append    - 6 -
2.1.3 Command incr    - 7 -
2.2 . Math Expressions    - 7 -
2.2.1 General Math Expressions    - 7 -
2.2.2 Math Functions    - 8 -
2.3 . String Manipulation    - 9 -
2.3.1 Command string    - 9 -
2.3.2 Command format    - 14 -
2.3.3 Regular Expression    - 16 -
2.4 . List Manipulation    - 20 -
2.4.1 Basic TCL List Commands    - 20 -
2.4.2 Advanced TCL List Commands    - 22 -
2.5 . File Operations    - 25 -
2.5.1 Command open    - 25 -
2.5.2 Command file    - 28 -
2.6 . Control Flow    - 31 -
2.6.1 The if command    - 31 -
2.6.2 Looping and Loop Control commands    - 32 -
3. TCL extensions    - 34 -
3.1 . TCL Package Expect    - 34 -
3.2 . TCL Package Tnm    - 35 -
4. Appendix    - 38 -
4.1 . Appendix A, String Commands    - 38 -
4.2 . Appendix B, List Commands    - 39 -
4.3 . Appendix C, Flow Control Commands    - 40 -
4.4 . Appendix D, Math Functions    - 40 -
4.5 . Appendix E, References    - 41 -
1. WWWH About TCL
本文是针对那些对TCL没有或者有一些基础认识的测试工程师,这个标题中的WWWH并不是一个英文单词,而是一个缩写,这个缩写所提出的问题也基本上是本文所要提出并解决的问题;他们分别是What—什么是TCL、Why—为什么要使用TCL、When—什么时候我们该使用TCL、How—如何使用TCL。如果您读到这里觉得这四个问题已经很清楚了,那么此文对您意义不大,不必再浪费时间阅读;如果您对其中的一个或者多个问题仍存有疑惑,也许本文能帮助你到一些您需要的答案。
正则匹配到第一个关键字就停止
1.1. What is TCL
在开始认识任何事物之前,我们首先要弄清楚的一件事情就是它到底是什么,做什么用的;学习TCL之前也一样,我先来了解一下TCL到底是什么。
TCL的缩写是Tool Command Language,它是一种解释性的脚本语言,TCL以及它的图形界面工具包Tk最早是由美国加州大学伯克利分校(University of California, Berkeley)的John K. Ousterhout教授设计完成的。需要注意的是TCL的两大定位:第一,它是脚本语言;第二,它是解释性的语言。那么什么又是脚本语言,什么又是解释性的脚本语言呢?
大多数有工科背景的读者应该知道,计算机是不能直接读懂或者执行高级计算机语言的,计算机只能识别机器码,CPU通过机器码从内存中读取并执行相应的指令。所以高级计算机语言要被计算机识别和运行必须进行一项翻译工作,将高级计算机语言翻译成为机器能读懂的机器语言。有的高级语言在完成编写之后,将翻译这个工作交给编译器来完成,编译器将高级的计算机语言根据预先约定好的规则翻译成机器码,并生成一个机器能识别的可执行文件,经典的程序语言C就是这样的一种高级计算机语言,我们称之为编译性语言。有的语言,在完成编写之后,省略掉翻译这个过程,它不需要编译器来帮助它完成转换。那么机器又是如何读懂这类语言的呢?这种语言,在执行的时候通过自身的解释器进行翻译,也就是说解释器在执行代码的时候才会将其逐行转换成为机器能识别的机器码,从而达到执行的目的。知道了前面的这些信息之后,相信大家会明白,原来这种语言的源文件和编译性语言的源文件是不同的。编译性语言的源文件在完成编译之后就没有用了,没有这个源文件,机器只需要编译后的可执行文件就能完成相应的操作;可解释性语言的源文件在执行过程中才被翻译,在执行过程中还是必须的,这也就是为什么我们称之为脚本(script)语言。
读到这里,相信您对解释性脚本语言以及TCL有了个大概的认知,知道了它是什么,那么接下来我就要去问,为什么要用TCL而不用别的解释性脚本语言呢?选择使用TCL有什么好处呢?
1.2. Why TCL
在这一小节我们将探讨一下为什么在我们的测试工作中使用解释性脚本语言,以及为什么我们要在测试中使用TCL的脚本而不是其他的解释性脚本语言。
本文假定读者对于通信设备的测试工作已经有了基本的认识,所以对于自动化测试的重要性以及自动化测试在测试方法学中的相关理论部分,在本文中不再冗叙。
在繁重枯燥的测试工作中,使用计算机语言来编写自动化脚本是提供工作效率、缩短测试周期的重要手段和途径。那么为什么我们要选择TCL这种语言而不选择其他的脚本语言呢?事实上,目前有多种流行的脚本语言,TCL只是其中的一种而已,例如VB、Python、Perl等等;脚本语言在很多行业有着广泛的应用,在通信设备行业中,TCL是众多厂商的共同选择,有很多世界级的通信设备制造商更是有着很高程度的脚本自动化测试;更为重要的是,通信设备测试仪器仪表厂商对于TCL的支持,是大部分通信设备厂商在测试中采用TCL作为自动化测试脚本语言的根本原因之一,例如Spirent Smartbits,IXIA等测试仪器都是支持TCL脚本
驱动的。当然脚本语言的无需编译,顺序可执行以及错误处理机制都是脚本语言适用于自动化测试的根本原因,由于这些属于脚本语言的共性,在此就无须冗叙了。
1.3. When shall we use TCL
前面花了一些篇幅来介绍TCL是什么以及为什么要使用TCL,那么您也许比较疑惑,既然脚本语言如此高效,那么是不是把测试工作全部由脚本来实现就好了呢?只要编写好测试脚本,测试工作就会自动完成,测试工程师们也就可以高枕无忧了。如果老板们也是这么想的,那么很不幸,大部分的测试工程师也许都要失业了。事实上,自动化在测试工作中只是多种测试方法和测试途径之一,自动化测试绝对不是万能的从而取代手工测试的。
那么作为一个测试工程师,到底该在什么时候使用TCL编写自动化脚本来实现自动化测试呢?总体来说,那些繁琐的机械化的且耗费很多人力的测试比较适合用脚本来实行自动化测试,把测试工程师从繁琐枯燥的重复劳动中解放出来从而能将精力放在一些更加复杂的测试中去。下面列举一些使用TCL开发自动化脚本之前需要考虑的因素,供读者参考:
1) 使用TCL开发的自动化脚本应该是由功能性测试(Function testing)阶段和回归测试(Regression test)阶段的需求而驱动编写的,在一些常用的应用场景测试中也可以开发一些重复利用率高的TCL脚本;
2) 开发的自动化脚本必须是有较高的重复利用率,如果花很多精力编写一个只会用一两次的脚本是得不偿失的;
3) 开发的自动化脚本必须是可读性高的,易于维护的,并且能提供信息收集能力的脚本,一个无法提供错误信息反馈的脚本对于测试是没有价值的;
4) 并不是所有的功能测试与回归测试都能通过自动化脚本来完成,当开发一个脚本所需要的精力大大超过手工测试的精力时,要避免使用脚本测试;
以上列举出来只是一些基本的需要考量的因素,读者可以根据自身的工作情况灵活决定脚本的开发。
有了上面的信息,我们可以开始了解TCL这个脚本语言了,也就是如何使用TCL。
1.4. How to program using TCL
在后续的几章节,会重点从变量、数学运算、字符串操作、正则表达式、列表操作、文件操作等几个方面来介绍TCL,通过阅读上述几个方面的内容能对TCL的编写规则以及内嵌命令有初步的了解并能动手编写出一些简单常用的TCL脚本。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。