我们都知道,测试从测试类型上分成白盒测试、灰盒测试、黑盒测试,分别对应于开发V模型中的单元测试、集成测试和系统测试。测试从执行手段上分成两类:手工测试和自动化测试。

业界通用的系统测试方法主要是黑盒测试,也就是搭建模拟环境,分析设计和开发出对应的用例及自动化测试脚本进行测试,包括配置、功能、性能、压力、组合、一致性、异常功能测试等。黑盒测试在保障系统基本功能方面发挥了重要的作用,但是随着测试的进一步深入,我们逐渐面临了一些新的问题,具体表现在以下几个方面:

 部分模块外在表现很少(比如路由算法模块等),通过纯黑盒测试可测试的内容不多,测试覆盖不全;

 部分测试项目内容虽然变化不大、修改不多(比如性能优化项目、底层模块内部整改项目等),但是从功能测试的角度上讲涉及的范围很广,黑盒测试投入大;

 测试结果观察手段有限,一般从用户接口(通过业务流量、表项错误、断言、DA)观察,但有时候内部模块间调用出错不一定能够马上表现出错误来,而要到后面的操作才能发现问题,从而导致定位和复现时间较长;

 异常测试的条件、特定的时序事件触发条件不方便构造。

这些问题将会导致部分模块及项目的测试效率不高,以及测试覆盖不全面。针对这些问题,H3C创新性的提出TCL嵌入式测试技术,并将其应用在Comware V7(以下简称:V7)系统的测试中。TCL嵌入式测试技术打破了黑盒测试只能从外部观察的局限性,它从系统内部直接对模块和消息进行测试,并取得了较好的实际测试效果,解决了上述的四个方面问题。

TCL (Tool Command Language)是一种解释执行的脚本语言(Scripting Language),是业界主流自动化测试语言,修改后不需重新编译,TCL解释器直接执行。在传统的黑盒测试中,TCL也有大量应用,测试模型如图1所示.

图1 传统黑盒测试自动化模型

原有自动化测试模型,是在PC上运行自动化测试脚本,通过TCL解析器,向设备发送命令行配置、控制仪器打入流量验证等测试手段完成自动化测试。

TCL嵌入式测试是将TCL语言解释器植入Comware V7系统中,并且通过TCL扩展命令调用cOmware V7系统模块内部接口,以构成测试条件达到测试的目的。从测试类型看,它属于灰盒测试。从测试阶段看,它类似集成测试,介于单元测试和系统测试之间。从测试手段看,利用TCL语言编写测试脚本进行更为细致的模块接口功能、子模块功能测试。测试脚本开发出来后,可以用于自动化测试。

V7系统的测试在继承原有软件系统的自动化测试技术基础上,通过TCL嵌入式测试技术,把TCL解析器植入到V7系统中,并根据测试需求封装了一系列的模块接口扩展函数。开发的TCL嵌入式测试脚本可以调用命令行配置命令和扩展函数进行更为细致的功能测试,并自动获取运行结果,自动解析功能是否正常,从而实现了很多模块功能点的自动化测试,提升了V7系统的自动化测试比例。

TCL嵌入式测试技术作为一种灰盒测试技术,在V7测试实践过程中,有如下的几个典型的测试模型及应用。

模型一:模块接口测试

系统由各大组件组合而成,组件特性一般包括路由组件、MPLS组件、组播组件等(如图2 所示),其中组件又是由各大模块组成(比如路由组件一般包括OSPF模块、BGP模块等),每个模块又是由一系列的函数组合实现其功能。

通用的业务模块的测试,比如OSPF模块、BGP模块等,都有提供给用户的命令行接口,黑盒测试通过这些命令行能够去测试这些模块的功能。系统中也有些模块,比如路由管理模块(RM模块),这些模块完全是厂商自己实现的内部的模块,其对用户来说,基本上是不可见的,但是他们又是连接OSPF模块和其它模块的桥梁。这些模块之间通过模块对外提供的接口函数进行交互。也就是说,如果通过黑盒测试,将无法直接测试到RM模块,只能通过BGP模块这些有用户接口的模块间接的去测试RM模块。这样会导致有些功能无法覆盖到,或者说覆盖到这些功能的条件很难构造。

图2 系统架构图

而TCL嵌入式测试技术,把RM模块对外的接口函数通过TCL语言全部封装出来,使得测试人员可以通过TCL语言测试脚本调用这些接口函数,并利用内部集成的TCL解析器运行TCL测试脚本去完成这些模块的功能测试。通过TCL嵌入式测试脚本,我们就很容易遍历模块对外接口的各种参数情况(包括边界值),特别是一些参数的异常值情况,这是黑盒测试的盲点。

一般来说BGP模块和路由管理模块都是不同的开发人员开发,他们之间有个契约,就是BGP模块调用RM外部接口时候,不会传入错误的参数。正常情况下,别的组件也的确不会传入一些异常参数,但是特殊情况下,上层模块也可能传入了错误的参数,这样情况RM模块需要做容错性处理,才能使整个系统更加的稳健。这种接口测试是黑盒测试的盲点,TCL嵌入式测试技术可以保障V7系统的各个模块提供的对外接口函数的健壮性和子模块功能的正确性。如图3所示。

图3 嵌入式测试函数接口

模型二:测试各模块之间的交互过程细节

V7系统的各大组件模块在同一个系统下工作,他们之间不可避免的要传递一些数据和消息,这些消息和数据里面会携带一些模块之间约定的参数,这些参数必须是按照事先约定的内容和数据,整个系统的功能才能正确。但是如果在开发过程中,部分开发人员的出错,某些消息和数据没有遵循事先设计约定的内容,这样肯定会导致功能性错误。

但是并不是所有这些bug都立即能够表现出功能性错误来,就好像人中了某些毒,并不一定马上能表现出症状来一样,这些症状可能要有某些条件才能触发。这也是黑盒测试的一个困境。而TCL嵌入式脚本能够截获模块之间交互的消息和数据详细信息,并能够打印和解析出来,就如同在模块交互间打开了一扇观察的窗户,测试人员能够很方便的观察其参数是否携带正确;并及时发现这种bug。如图4所示。

图4 嵌入式测试模块交互

模型三:方便构造难以切入的点

在黑盒测试中,异常情况(特别是一些时序问题)的构造很不方便,但是这些在接口级别则很容易构造。还有一些状态机的中间状态,黑盒测试方式很难把握时机,用TCL嵌入式测试技术就很容易实现。

比如临界资源的保护,OSPF模块和BGP模块都要更新核心路由表,如果他们同时访问,肯定会有冲突,因此代码开发过程中,都会对路由表进行加锁保护,也就是OSPF模块要通过RM的接口函数更新路由表时,先在路由表上加一把锁,告诉其他模块在这个时间不能再更新路由表,当OSPF模块访问完成后,再释放这个锁,BGP模块才能通过RM的接口函数去访问路由表。

这个加解锁的程序代码是否正确,如果通过黑盒测试,只能构造条件让BGP和OSPF模块同时去访问路由表的情况,但是在代码中,这种加锁和释放锁是毫秒级的时间,也就是说路由表加锁了然后BGP模块再去更新路由表这样的情况很难构造出来。然而通过TCL嵌入式测试脚本就可以很方便了实现:用一个脚本先调用RM的接口函数更新路由表,给路由表加锁,然后暂停运行这个脚本,使路由表一直处于加锁状态;再通过BGP更新路由,BGP就自动通过RM再去更新路由表。TCL嵌入式之所以能够实现这样特殊时间的测试,是因为我们可以随时控制脚本的运行进度,使其在某个特殊的时机停下来,从而实现一些时序问题的测试,如图5所示。

同时对于某些接口函数执行返回失败的错误情况,也是黑盒测试不方便构造的,而TCL嵌入式测试技术则可以方便的模拟出各种失败的异常情况。

图5 TCL嵌入式测试特殊的时序点

模型四:内部性能规格压力测试

性能规格测试的对象一般是用户能够看见的性能规格,实际系统内部也是有设计规格的,比如消息队列的最大长度,LIPC通信的最大能力,内部计数的最大值等。这些内部规格测试是黑盒测试的盲点,黑盒测试不能完全的构造出消息队列满的时机,或者说有些内部计数要到达最大值可能需要系统运行一年的时间等,而这些都是TCL嵌入式测试技术的强项,通过一个测试脚本可以轻松的让内部消息队列的消息达到最大值,可以调用接口函数直接把内部计数写到接近最大值。

如果把系统比作一个人,测试就是给这个人做一个健康评估。黑盒测试的评估好比是中医看病,只能通过望闻问切及这个人的身体症状下结论。TCL嵌入式测试则不但继承了中医的外在评估,更能够进行深入细致的内部检查,好比西医的各种检查仪器,能够把人内部的器官状态直接展示出来。TCL嵌入式测试脚本能够深入测试V7系统的各个模块的内部之间的交互流程。

结束语

目前,V7系统的测试自动化率已经超过了30%这个业界平均水平,达到了40%的领先水准。同时由于TCL解析器在V7系统内部,自动化脚本执行效率大大提高,整个TCL嵌入式脚本完整执行一遍只需要1个小时左右时间,相比于传统自动化测试方式,节省了90%的时间。这使得TCL嵌入式脚本得到了充分了利用,每个版本发布,每个模块代码改动超过10%时,都会应用相应的TCL嵌入式脚本测试,保障不引入新的问题,使得保证软件版本的质量更加可靠和稳定。

分享: 

TCL嵌入式测试技术在Comware V7系统中的应用相关推荐

  1. 将eFPGA应用于嵌入式360度视域视觉系统中

    引言 2018年4月11日,工业和信息化部.公安部和交通运输部联合发布"关于印发<智能网联汽车道路测试管理规范(试行)>的通知",为我国智能网联汽车道路测试提供了相关法 ...

  2. 地铁中计算机网络专业,计算机网络技术在地铁AFC系统中的应用原稿(全文完整版)...

    <计算机网络技术在地铁AFC系统中的应用(原稿).doc>由会员分享,可免费在线阅读全文,更多与<计算机网络技术在地铁AFC系统中的应用(原稿)>相关文档资源请在帮帮文库(ww ...

  3. 计算机技术在铁路中的应用,计算机容错技术在铁路信号系统中的应用

    计算机容错技术在铁路信号 系统中的应用 张仕雄 (武汉铁路职业技术学院,湖北武汉430063) 摘 要:着重介绍了计算机容错技术的概念及实现方法.阐述了硬件冗余的工作原理及其在铁路信号系统中的应用. ...

  4. 介绍数据库中的wal技术_门禁系统中RFID与ETC两种新兴技术介绍

    1.无线射频识别 RFID(Radio Frequency Identification,无线射频识别)是一种非接触式的自动识别技术,它通过射频信号自动识别目标对象并获取相关数据,可快速进行物品追踪和 ...

  5. 中国人工智能学会通讯——机器人组件技术在智能制造系统中的应用

    摘要:随着工业4.0时代的到来,如何将传统工厂改造成为个性化.网络化.柔性生产的智能制造系统成为了当前的研究热点.本文从智能制造系统和智能机器人系统的相似性出发,构建了基于机器人组件技术的智能制造系统 ...

  6. linux防止文件被复制,技术|如何在 Linux 系统中防止文件和目录被意外的删除或修改...

    有时,我会不小心的按下 SHIFT+DELETE来删除我的文件数据.是的,我是个笨蛋,没有再次确认下我实际准备要删除的东西.而且我太笨或者说太懒,没有备份我的文件数据.结果呢?数据丢失了!在一瞬间就丢 ...

  7. 计算机信息检索系统中常用的检索技术,在计算机信息检索系统中,常用的检索技术主要有哪些...

    满意答案 蒙奇奇.011703 推荐于 2018.05.21 采纳率:47%    等级:12 已帮助:8418人 在计算机信息检索系统中,常用的检索技术主要有以下六种: 1. 布尔逻辑检索 利用布尔 ...

  8. 蓝牙定位技术在智慧养老系统中的应用

    蓝牙耳机可能是我们对蓝牙应用比较熟悉的一个了,可是在现实生活中,蓝牙应从场景数不胜数,和我们的生活息息相关.利用蓝牙定位可以实现我们用人力无法做到的事情. XD-BLE-R9型高精度定位基站是物联网应 ...

  9. linux 辅助ip地址到文本,技术|如何在 Ubuntu 系统中添加一个辅助 IP 地址

    Linux 管理员应该意识到这一点,因为这是一项例行任务.很多人想知道为什么我们需要在服务器中添加多个 IP 地址,以及为什么我们需要将它添加到单块网卡中?我说的对吗? 你可能也会有类似的问题:在 L ...

  10. linux管理用户组,技术|如何在 Linux 系统中通过用户组来管理用户

    本教程可以了解如何通过用户组和访问控制表(ACL)来管理用户. 当你需要管理一台容纳多个用户的 Linux 机器时,比起一些基本的用户管理工具所提供的方法,有时候你需要对这些用户采取更多的用户权限管理 ...

最新文章

  1. Ubuntu 16.04 安装 CUDA、CUDNN 和 GPU 版本的 TensorFlow 一般步骤总结
  2. Java黑皮书课后题第8章:8.29(相同的数组)如果两个二维数组m1和m2具有相同的内容,则它们是相同的。编写一个方法,如果m1和m2相同的话,返回true
  3. tp3.2 mysql elt出错_ThinkPHP3.2.3 SQL注入漏洞分析
  4. skywalking搭建与使用
  5. 架构的坑系列:重构过程中的过度设计
  6. 安装Python3.5后,pip报错Fatal error in launcher: Unable to create process using ‘“‘解决方案
  7. android让图片旋转动画,利用RotateAnimation旋转图片的问题 - 移动平台 / Android
  8. 传智java答案_传智播客_Java基础入门习题答案
  9. 第四代计算机cpu采用的超大规模集成电路,计算机一级试题a.doc
  10. 【vulhub漏洞复现】ActiveMQ 反序列化漏洞 (CVE-2015-5254)-01
  11. matlab 打开立即窗口,《如何编程打开或关闭VBE界面中的立即窗口及其他窗口?》-- access911.net 文章...
  12. 题解 | Guessing ETT-2019牛客暑期多校训练营第三场C题
  13. 某程序员吐槽:刚过试用期就被辞退,理由竟是不转发朋友圈!
  14. 简图 新聚合图床源码自带鉴黄功能
  15. 更改电脑本地用户名,将中文用户名给为英文名称
  16. 计算机的集成显卡是什么意思,IGD、PEG、PCI的含义,我的电脑是集成显卡该选哪一项...
  17. easypoi导出excel不设置样式_EasyPOI 导出excel设置边框,背景颜色,字体样式
  18. php enc28j60,uip0.9+ENC28J60 缓存的读写发送
  19. HJ100 等差数列
  20. 来自千里之外祖国的关爱

热门文章

  1. bochs运行xp_bochs xp镜像完整版
  2. 字段计算器python教程_字段计算器综合(python-02)
  3. C# sqlhelper
  4. Lua游戏开发实践指南
  5. 没有学历可以学计算机编程吗,学电脑编程要什么学历?
  6. 最新彩虹DS仿小储云模板源码
  7. 千套多行业多样式单页多页中英文简历模板(自荐信,简历封面,求职),共630M
  8. mysql数据库丢失还原_MySQL数据库丢失后如何自动恢复呢?
  9. 污水处理施耐德TM218PLC程序
  10. 计算机上64位数和32位数,一不小心就蓝屏?安装win10系统和软件,你选32位还是64位?...