- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
软件自动化测试技术与工具
前言
软件测试是程序的一种执行过程,目的是尽可能发现并改正被测试软件中的错误, 提高软件的可靠性,它是软件生命周期中一项非常重要的非常复杂的工作。在目前的情况下对软件可靠性保证具有极其重要意义的,仍然是软件测试。但如何进行测试,如何提高测试的质量和效率,从而确保软件产品的质量和可靠性,仍是令人深感困惑的问题。本文根据笔者的一些粗浅的体会,简要介绍软件测试的基本过程,以及一些常用的技术手段、测试策略和准则,并介绍一个在工作中用到的Rational(现已被IBM收购)自动化软件测试工具Visual Test。
运用这种自动化测试工具可以省去很多手工运行的麻烦,而且准确获得测试数据和结果。通过本文介绍,以期使愈来愈多的人在认识到软件测试重要性的同时,能够更进一步了解应如何正确地选择和有效地运用各种各样的测试方法、技术以及自动化测试工具提高软件的质量和可靠性。
软件测试的基本过程
软件测试是一个极为复杂的过程。一个规范化的软件测试过程通常须包括以下基本的测试活动:①拟定软件测试计划 ,②编制软件测试大纲 ,③设计和生成测试用例 ,④实施测试 ,⑤生成软件问题报告。
实际上,软件测试过程与整个软件开发过程基本上是平行进行的。测试计划早在需求分析阶段即应开始制定,其他相关工作,包括测试大纲的制定、测试数据的生成、测试工具的选择和开发等也应在测试阶段之前进行。充分的准备工作可以有效地克服测试的盲目性,缩短测试周期,提高测试效率,并且起到测试文档与开发文档互查的作用。
此外,软件测试在每个测试周期中,测试工程师将依据预先编制好的测试大纲和准备好的测试用例,对被测软件进行完整的测试。测试与纠错通常是反复交替进行的。
软件测试工具
软件测试的目的是用尽可能少的时间和人力发现并改正软件中潜在的各种故障及缺陷,并能以更快的速度和更低的成本开发出高质量的应用程序,这就使测试人员的工作比以往任何时候都更加困难。在很多项目中,测试人员的所有任务大多是由手动处理的,而实际上有很大一部分重复性强的测试工作是可以独立开来,自动实现的。在大型项目中测试团队和其他团队之间没有足够的合作,无法促进彼此的交流。实施测试自动化可以提高测试工作效率,使用工具的目的只是为了减少部分手工测试,将更多人力资源投入到更有价值的工作中。
一些受软件开发人员欢迎的软件测试工具为软件测试提供了强有力的支持。本文将介绍美国Rational 公司(现已被IBM收购)的著名套装软件Rational Visual Test。它的一个重要特点是可以自动驱动被测程序的运行。并且可以自动记录和重放程序执行过程,从而实现了对测试进行“复查”的自动化。由于测试是一个需要反复进行的过程,常常要数十次甚至数百次地重复。因此,这一特性大大地提高了软件“再测试”(Re-Test)和“回归测试”(Regression)的自动化程度,把测试人员从繁杂的、重复性的手工测试中解脱出来,从而显著地提高软件测试效率。除了这个最基本的自动录放功能外,它还提供了一系列的辅助支持功能,比如被录制的程序执行过程可以被自动转换成具有良好可读性的高级语言程序,从而使这个测试驱动程序可以由测试人员根据测试需要进行必要的修改,甚至完全用手工方式编制。自动记录和分析比较测试的执行结果。
测试实例介绍
接下来以实际工作中的一个测试项目为例,结合Visual Test这个自动测试工具对所要测试的内容进行介绍。为了方便介绍,下文都以VT作为Visual Test的简称,QT作为工具QuickTest Professional的简称。
Visual Test的软件界面,与Visual Stadio相似,所以很容易上手,左面是建立的项目名,右面是代码,最下面是信息输出窗口。
接下来介绍所要测试的软件ispLEVER,它是Lattice公司的CPLD/FPGA集成设计工具。现在所要测试的就是在ispLEVER环境下运行一批FPGA器件的设计例子,产生最后的下载文件(.bit或者.jed),并提取一些例如最大频率,所用资源等参数,将这些参数与之前版本运行后的结果相比较,这样就能分析出当前所测试软件版本的优劣之处。
运行Rational Visual test测试主要分为两步,先运行所有的设计的case,然后提取参数。
运行所有case
首先读取runlist文件,runlist是一个包括了所有运行例子的文件名的文件,每一行对应一个例子的文件名,程序逐行读入,参考图1示的代码。
接下来整个代码运行的流程可以表示为:最小化VT窗口->在桌面上找到ispLEVER的图标并运行->进入工作目录->处理一些弹出的窗口信息->打开需要运行的例子->清除项目以前运行的信息 ->保存项目->运行布线->保存当前的项目->把运行完的例子复制到统一的备份目录中->关闭当前运行的项目 ->运行下一个例子 ……,直至运行完所有的测试例子。
以上所有的菜单和窗口操作都是由VT执行代码完成操作。接着测试工具将会按照代码包含的子程序运行。
图2所示的打开项目程序所进行的操作依次为,选中ispLEVER为当前窗口,定义窗口的尺寸,打开File下拉菜单的第二行命令,也就是open project命令,接着用play命令输入工作目录和项目名,接着点击open来打开项目。
此外VT中还有例如点击窗口中的关键字操作,在当前窗口中寻找关键字,坐标定位等指令,灵活运用这些命令极大的丰富了VT自动化测试的内容。
运行完所有的例子后,所要进行的就是提取所需的各种参数,也就是重要的测试数据。
运行完的例子都会备份在一个统一的目录中,现在VT所要做的就是在这些对应的目录中找到.log和.twr文件,这两个文件是最后运行完case的输出信息文件,里面包含了测试所要提取的一些参数信息。
图3是在.log文件中的一段信息,红圈指示的内容是需要提取的信息之一,log文件是运行完后软件所生成的日志,里面包括了布线完后的一些资源信息,在这里VT所要做的提取的是PIOs信息,也就是输入输出端口数量的信息,可以用下面的代码实现。
图4实现的是把log文件中逐行输入到tempstring中,在这些输入的信息中找到所需信息并处理,则需要在VT中用以下代码实现。
图5实现的是在字符串tempstring中寻找关键字"Number of external PIOs:”,也就是I/O口端口数量信息的那行。如果找到的话,用LTRIM$实现从这行第29个字符开始的内容放入tempstring2中。由于所要的有用信息只包括”out of”之前的数字,所以还需要用LEFT$来提取左面的信息,也就是158,这就是使用的I/O端口数量的信息,最后再用TRIM$ 去掉空格即可得到。
类似的可以在特定的时序文件中得到最大频率,所用综合工具,器件封装,所用到的资源等等信息,把这些参数信息提取出来与之前版本的ispLEVE软件所运行得出的结果相比较,得出测试的结果。
从上可看出,对于测试所要运行的例子比较多,如果采用手工的话,工作量相当大,而且极不精确,容易出错。现在采用自动化测试工具将简化测试的繁琐程度,所有操作由自动化测试工具完成,而且代码可以移植,只要稍微改动几个参数,代码适用于每个版本的测试,给测试工作带来极大方便与准确性。
自动化测试工具的比较
目前同类的主流自动化测试软件还有Mucury公司的QuickTest Professional。
它也是一款测试自动化软件,与Visual Test有类似之处,都是用于创建功能和回归测试,能自动捕获、验证和重放用户的交互行为。QuickTest Professional的特点是易于操作,可以通过软件中所集成的录制能力来捕获测试步骤,产品用简单的英语以文档形式记录每个步骤,并通过活动屏幕将文档与一个集成截屏相结合。传统的脚本记录工具所生产的脚本不易修改,不同的是,在QuickTest中的关键词驱动方式能便捷地插入、修改数据驱动和移除测试步骤,灵活性较强。
下面的数据表格是在PC上运行VT和QT这两个工具,分别关于内存占用以及打开ispLEVER工具的时间,两者对比之下的结果。其中Open project ,Fit Design是指打开设计和最后生成下载文件,Simulation是仿真,Design Planner、EPIC、IPexpress、ispVM、Power Calculator等都是ispLEVER开发环境下的工具,主要用于底层的交互式编辑,调用ip以及下载程序,分析功率等功能(表1,表2)。
根据上面两个对比结果,从内存占用情况来看VT占用的资源要远小于QT,从打开工具所用时间来看,VT打开绝大多数ispLEVER的工具的时间也要小于QT。虽然QT具有较强的录制修改脚本的特点,但从实际应用来看,运行的速度和占用资源对于软件测试更为重要,所以自动测试工具VT要优于QT。
结论
随着软硬件协同应用复杂性日益增加,软件测试工作越来越受到重视。 随着软件技术的发展,程序的规模逐渐增大,复杂度也逐渐增加,使用软件测试工具可以增强软件测试的自动化程度。在两个主流软件的比较中,Visual Test相对较高的效率和速度在软硬件设计的实际应用中得到验证,有助于软件开发和测试人员进一步提高测试效率和软件的质量。这可以反映出在软硬件设计的过程中,工具的选择必须用实际应用来作选择,来保障整体的开发效率的提高。
上一篇:感应式指针手表电池测试器
下一篇:CS21354在手持式2M误码测试仪中的应用