推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

Python 语言在自动化测试系统中的应用

更新时间:2019-12-25 17:42:01 大小:1M 上传用户:songhuahua查看TA发布的资源 标签:python 下载积分:1分 评价赚积分 (如何评价?) 打赏 收藏 评论(0) 举报

资料介绍

自动化测试系统在敏捷开发、持续集成和持续交付中起着非常重要的作用。它对加快新功能发布,缩短现场问题解决时间,提升用户感受度,乃至提高企业竞争力都至关重要。本文结合笔者在自动化测试系统建设中的实践,具体描述了利用Python语言设计完成的基于机器人框架,关键字驱动的案例。最后指出了这套系统进一步改进的方向。


部分文件列表

文件名 大小
Python_语言在自动化测试系统中的应用.pdf 1M

部分页面预览

(完整内容请下载后查看)
程序设计  
Program Design  
Python 语言在自动化测试系统中的应用  
文/华剑南  
自动化测试系统在敏捷开发、  
持续集成和持续交付中起着非常  
重要的作用。它对加快新功能发  
布,短现场问题解决时,提  
升用户感受,至提高企业竞  
争力都至关重要。本文结合笔者  
在自动化测试系统建设中的实践,  
具体描述了利Python言设计  
完成的基于机器人框,键字  
驱动的案例。最后指出了这套系  
统进一步改进的方向。  
【关键词自动化测试系统 机器人框Robot  
Framework,RF) 关键字驱动 Python  
图1  
化测试框架。  
在策略和任务定义好后,免予人工干预。为达  
到这一目标要实现 RF 和其他系统的配合。  
下文介绍在这套系统中开发的三个重要模块 :  
下载,定制测试报告,邮件分发模块。  
1 自动化测试系统实现简介  
2 Python语言在自动化测试系统中的应  
笔者参与开发的自动化测试系统,和编  
译服务器关联 , 由系统扫描侦测 , 实现基于某  
种策略的版本自动下载 ( 最大频度测试 , 最相  
关版本测试 , 如包含本测试组发现的软件缺陷  
版本优先 , 或指定版本测试等 ), 然后分发到相  
应设备 , 进行版本升级安装 , 触发测试用例的  
运行 , 生成测试报告 , 发送邮件给项目干系人 ,  
更新测试记录等。  
编译随时可能完成 , 系统需要有自动下载  
功能 ( 关键字 Auto_DL) 以免浪费时间 , 基本  
的过程如下 , 首先系统处于空闲状态 , 即还未  
开始测试或上次测试任务已完成 , Auto_DL 会  
定时登录到指定服务器 , 检测是否有新版本编  
译完成,并判断该版本是否可用 : 按上文提  
及的某种特定的策略选择新版本 , 判断该版本  
是否符合自动化测试的最低要求 , 例如已通过  
冒烟测试,通过则可下载该版本,退出 Auto_  
DL, 触发下一个环节,升级安装该版本。这  
个过程循环往复 , 以达到尽快测试符合策略的  
版本或尽可能多地测试各种版本等目的 . 本系  
统用 Python 自带的标准模块 urllib2, re 实现新  
版本侦测和判断是否为可用版本 , 发送 HTTP  
request, 在获取的返回信息中 , 利用正则表达  
式标准模块 re 中的搜索函数 findall 和符合指  
定特征的正则表达式判断是否需要下载新版  
; Python 自带的标准模块 ftplib 实现文件  
下载 , 直接导入 ftplib, 生成一个 FTP 对象 , 连  
接到 ftp 服务器 , 以写模式在本地打开接收文  
, 接收服务器上的文件并写入本地文件 , 最  
后关闭文件 , 完成下载工作。  
利用 RF 编写定制的测试用例,需要开发  
自己的关键字,编写自定义 python 库。下文  
通过一个实例来介绍这个过程。  
首 先, 在 python 安 装 目 录 c:\Python27\  
Lib\site-packages\ 下新建一个文件夹 NewUE,  
文件夹名就是库名 , 然后,在该文件夹内创建  
一个 python ueclass.py, 码中定义一个  
自动化测试系统 , 能实现在第一时间触发  
, 能更频繁地测试各个版, 能运行更多、  
更繁琐的测试 , 进而在缺陷出现时及时发现 ,  
帮助开发团队缩小缺陷出现的代码范围,便于  
定位问, 解决问, 这为敏捷开发持续集成,  
持续发布提供了强有力的支撑。  
UEClass中定义了一ue1Behavior方法,  
该方法即 RF 中的新关键字。  
NewUE 文 件 夹 内 再 创 建 文 件 名 __  
init__.py 文件,RF 通过这个初始化文件获取  
新关键字类。它的类名和库名相同 , 括号里的  
类是 ueclass.py 中定义的类:  
自动化测试系统,基于机器人框架(robot  
FrameworkRF,RF 有丰富的库,使用关键  
字驱动技术,可以实现循环,选择等逻辑,测  
试用例中支持变量的使用,测试人员可以创建  
自己需要的关键字 , 具有很大的灵活性和可扩  
展性,可以实现定制的复杂或特殊的功能。  
ride RF 的编辑工具,测试用例可以用表格  
输入,使得测试人员以类似于自然语言的方式  
( 关键字 ) 来描述测试用例 , 即使没有编程基  
础的测试人员也容易上手,而 RF 会将关键字  
转化为测试动作 ( 底层即 Python 类方法,函  
数的调用 )。  
fromueclass import UEClass  
classNewUE(UEClass):  
R O B O T _ L I B R A RY _ S C O P E =  
'GLOBAL'  
自 定 义 的 NewUE 库 就 创 建 好 了, 在  
RF 编辑器 ride 导入这个然后即可  
使用新创建的关键如果要新增关键字  
ue2Behavior只要在 UEClass 中增加名为  
ue2Behavior 的方法即可。  
下载完成后 , 系统自动安装并执行测试用  
例。RF 能产生测试报告 , 但是无法定制测试  
报告 , 新开发的定制测试报告模块就是根据测  
试管理团队的特殊要求 , 提供符合需求的报告 ,  
可以包括测试团队名字 , 测试时间 , 测试环境  
的硬件配置 , 软件版本信息 , 测试用例运行结  
果汇总情况 , 是否更新测试记录或需要进一步  
分析等。测试结果由网页和附件的形式发送给  
指定接收人。同时 , 除了测试结果文件 , 还提  
导入新库,若库名显示为黑色,表明导入  
成功,若红色则表明导入失败。可以通过在一  
python 文件中 import NewUE 来调试,通常  
可以根据出错消息提示框,排除源文件中的错  
误。修正错误后,把原来的 *.pyc 全删除 , 运  
行如下命令编译 , 然后重新导入 :  
Python 是一种面向对象、解释型、跨平  
台的高级程序设计语言,可以应用于自动化测  
试,数据分析等众多领域,Python 用代码缩  
进来代替花括号 , 表示语句块逻辑层次,既使  
得源程序风格接近,又提高了可读性;Python  
的类库齐全并且产出率高,实现相同的功能,  
Python 比很多其他语言代码量少,这意味着易  
维护,出现问题的概率也下降。RF 就是一种  
基于 Python 的可扩展关键字驱动的通用自动  
python -m compileallueclass.py  
python -m compileall __init__.py  
如图 1 所示。  
自动化测试系统的理想目标是全自动,  
<< 下转 253 页  
电子技术与软件工程ꢀꢀ  
Electronic Technology & Software Engineering  
252 •  
SCM Technology  
单片机技术  
基于单片机的天文时钟控制器的设计  
文/张锋  
1 总体设计  
设计一种实用的天文时钟控  
制器,硬件主要由电源单元、单  
片机单元、人机界面单元、实时  
时钟单元、光照度采集单元、继  
电器输出单元、以及通讯单元等  
组成制器STM32F103核心,  
通过设定的经纬度和当前的日期,  
计算出日出和日落时间,与模数  
转换器采集到的光照度相结合,  
来控制继电器的输出。控制器还  
可以接GPRS制指令,实现特  
殊控制。  
设计基于单片机的天文时钟控制器,系统  
框图如图 1 所示,电路由由电源单元、单片机  
单元、人机界面单元、实时时钟单元、光照度  
采集单元、继电器输出单元、以及通讯单元等  
组成。电源单元给其余单元提供电源,人机界  
面单元的按键与单片机的 IO 口相连 , 人机界  
面单元的 LCD 与单片机通过并行电平转换芯  
片相连,光照度采集单元与单片机的 AD 采集  
通道相连,实时时钟单元与单片机通过 I2C 总  
线相连讯单元与单片机的 UART 串口相连,  
继电器输出单元与单片机的 IO 口相连。  
1:系统框图  
2 硬件设计  
软件重新运与芯片内部看门狗相,  
MAX706S 在系统上电掉电情况下,系统电压  
尚未稳定时使芯片处于复位状态免误动作。  
人 机 界 面 单 元 包 括 按 键 和 LCD 两 部  
【关键词】天文时钟 STM32F103 光照度采集  
电源单元采用 TOP253 芯片为控制芯片,  
经反激式脉冲变压器把交流 220V 转化为系统  
芯片使用的电压+5V+3.3V离的 24V 等。  
单 片 机 单 元 以 STM32F103 为 核 心, 属  
实时时钟 日出日落  
分, 按 键 部 分 与 单 片 机 的 IO 直 接 相 连。  
STM32F103 工 作 电 压 为 +3.3VLCD 接  
口 电 压 则 是 +5V, 需 要 2 片 电 平 转 换 芯 片  
74LVC4245APW见图 2实时时钟单元主  
芯 片 为 RX8025SA, STM32F103 I2C 管  
脚相连。系统正常工作时,电源单元的 +3.3V  
RX8025SA 提供电源,系统未上电时,由  
随着社会的发展和节能降耗的要求,对  
道路交通照明的要求越来越高,需要根据日出  
日落时间和光照度、以及远程临时指令来开关  
照明灯具的供电电源实现照明的灵活控制。  
为此,设计了一款天文时钟控制器,并在实践  
中得到了应用。  
ARM Cortex-M3 系列,主频 72MHz,带有双  
12 ADC,带有 I2CUSART 等接口,内  
SRAM 和大容量 FLASH 等,集成度高。采  
3.3V8MHz 有源晶振,引出 SWD 接口作  
为调试口。使用外部硬件看门狗 MAX706S,  
在收外部干扰使程序跑飞时复位芯使  
<< 上接 252 页  
供超链接 , 可以查看测试日志等 , 特别是当测  
试用例失败后 , 测试人员可以进一步分析日志 ,  
确定是哪个领域出现了软件缺陷 , 对应的开发  
人员也可以根据日志 , 修正软件缺陷 , 提供新  
版本给测试人员再次验证。  
网页文件内容包含到 MIMEMultipart 对象中。  
Sendmail() 方法最终完成邮件发送。  
确保新功能加入后原有功能不受影响。同时,  
由于自动化系统很方便进行相同测试用例的大  
量重复,进而可能发现手工测试不易检出的偶  
发问题。  
改进方向:  
本测试系统主要是回归测试,不可能完全  
取代手工测试些情况下不适合自动化测试 ,  
例如探索性测试 , 软件版本很不稳定 , 测试仪  
表未提供脚本控制接口等。产品新的功能开发  
完成后,一般先经手工测试,所以通常自动测  
试比手工测试发现的缺陷要少些,但由于 RF  
的可扩展性,我们可以方便地将新测试用例加  
入到自动化测试系统里来,不断提高该系统的  
测试覆盖率。  
由于新关键字易于扩展,随着产品功能  
的不断增加试用例集合也可以不断地扩充。  
由于 RF 的可扩充性,可以在自动化测试系统  
中增加新的模块,进一步提高系统的智能,大  
大提高测试效率并降低测试工程师重复劳动的  
强度试人员把精力放在深入理解业务逻辑,  
设计新测试用例,再把新用例应用于自动化测  
试系统中,进而形成测试工作的良性循环。  
定制报告生成后 , 需要发送测试结果 , 邮  
件发送模块利用 Python 自带的标准库 ,smtplib,  
configparser, email 为把数据和业务逻辑  
分离 , 通常把邮件服务器地址 , 用户名 , 密码 ,  
发件人等写入配置文件 , 在主程序中这些信息  
configparser 来解析 , 可以把主机名传递给  
SMTP 构 造 函 数, 然 后 用 smtplib.SMTP() 创  
建一个 smtp 对象 , smtp.login() 进行登录操  
, 最后用 smtp.sendmail() 发送邮件 , smtp.  
quit() 方法关闭连接。  
另一方面,可以进一步提高自动化测试  
系统的智能,实现对日志文件的分析。测试专  
家了解预期测试结果,熟悉日志和缺陷的映射  
关系,根据日志可推断可能的错误分支,出错  
模块等。本系统拟增加日志分析模块,用于替  
代人工判断,利用 Python 强大的文本分析和  
正则表达式搜索功能,结合业务知识及测试专  
家的经验,对失败的测试用例日志进行分析,  
由系统给出日志分析结果。  
参考文献  
[1]Steven F. Lott.:,.责  
编:.Python向对象编程指南  
[M].民邮电出版,2016.  
Sendmail(senderrecipientsmessage)  
方 法 可 用 于 发 送 电 子 邮 件, 参 数 Sender,  
recipients 分别是邮件发送者和接收者地址列  
表,从配置文件中读取,参数 Message 是一个  
长字符串格式的消息,本模块中将网页形式  
的测试报告解析后作为邮件正文发送给接收  
方。创建 MIMEMultipart 对象,获取邮件主题  
等信息,创建 MIMEText 对象,读取网页文件  
内容,再用 MIMEMultipart 对象的 attach,把  
作者简介  
华剑南(1971-),工学硕,事通信测试  
及管理工作。  
3 结论  
作者单位  
上海贝尔软件有限公司 上海市 201206  
本测试系统主要用于发现已知的缺陷,  
电子技术与软件工程  
Electronic Technology & Software Engineering  
• 253  

全部评论(0)

暂无评论

上传资源 上传优质资源有赏金

  • 打赏
  • 30日榜单

推荐下载