有没有一款Linux通过字符串调用函数界面程序自动化调用的工具

Linux系统技术交流QQ群(3026356)验证问题答案:刘遄
如今,移动应用在企业的地位越来越重要,消费者对移动设备的要求也越来越高。为适应这一需求,测试团队必须在移动设备推出市场之前,对其性能进行一系列的评估和测试。然而,这是一个既耗时又耗资源的工作,尤其移动设备的自动化测试还非常复杂。
在现已出现的开源移动自动化测试工具中,我总结出5款最实用的,希望它们对你有帮助(部分可同时在iOS和Android设备上使用):
Appium是一款用于自动化本机、移动Web和混合应用程序的开源工具。可在iOS和Android上使用。
2、Calabash
Calabash是一款用于移动应用程序的自动验收测试框架,可媲美Selenium WebDriver。需要注意的是,桌面的网络应用程序的交互和触屏的本机应用程序交互是完全不同的。Calabash仅为在触屏设备上运行的应用程序提供API。可在iOS和Android上使用。
3、iOS UI Automation
通过使用自动化工具自动执行iOS应用程序的UI测试,再调用Javascript模拟用户操作,UI自动化界面会在应用程序运行时说明要执行的操作。在整个测试过程中,系统将日志返回给测试人员。一旦你开始了自动化UI交互测试,你可以利用其它资源进行其他工作。这样,测试人员可最大限度地减少程序错误,并缩短开发所需时间。仅在iOS上可用。
Frank可以编写结构化文本测试,要求以及验收测试,然后针对iOS应用程序进行执行。Frank有一个强大的应用程序检查工具Symbiote,用以获取运行应用程序的信息,仅在iOS上可用。
5、Robotium
Robotium支持混合和原生应用程序。它可轻松为Android应用程序编写自动化和black-box(黑盒)用户界面测试。在Robotium的支持下,测试人员可跨越多个Android活动系统编写应用、测试场景及功能。仅在Android上可用。
原文来自:
本文地址:编辑员:冯琪,审核员:张宏宇
为您推荐一些与本文相关的文章:
11月11日:首印出版15000册已售罄。
11月12日:已加印30000册,现在预购将在11月底或12月初发售。
12月份起:线上及线上渠道将有现货。
进阶课程目录
第24章 使用Xen与Kvm部署虚拟化服务环境。(即将公布)
Linux技术交流QQ群
向每个正在奋斗的Linuxer致敬.
Linux技术交流群A:560843
Linux技术交流群B:340829
Linux技术交流群C:463590
Linux技术交流群D:915246
Linux技术交流群E:1663106
Linux技术交流群F:1653851
Linux技术交流群G:2632018
Linux技术交流群H:2636170
Linux技术交流群I:2650582
全国Linux技术交流群(总):
1月0 篇文章12月0 篇文章CheungSSH国产自动化运维工具开源Web界面
CheungSSH web2.0 自动化运维
CheungSSH 简介
CheungSSH是一款国人自主研发的运维自动化管理服务器软件,秉着为企业降低运营成本,解放管理员双手和自动化生产的理念,创造的一套开源运维自动化。
ChuengSSH 特点
操作简单,全程Web界面,不需要特定的语法,不需要学习运作原理,即使不懂得Linux的人也能操作,界面全中文,点击鼠标就能指挥上千台服务器有序运作功能完备,支持网络设备,Linux服器,Windows服务器,命令执行、文件传输、批量部署程序、服务器资产信息收集、计划任务、开放的API等主要功能
易于二次开发,python语言,开源代码,使用完全免费 简易,无需安装任何插件,管理方便
安全无忧,通过Linux自带的SSH协议管理服务器,通信安全,无需开启额外的端口和启动额外的程序,所有的操作都在CheungSSH控制机上保留,不修改被管理服务器的任何配置数据
安全存储数据,采用Mysql
管理简单,无需额外创建任何管理账号,只需要CheungSSH业务账号即可,即平时登陆服务器的账户。做到无痕操作,不给服务器增加额外负担
效率更高,采用Redis缓存技术,所有的数据都缓存在Redis中,读取更快速
权限控制,只有授权的操作,才能对现网生产服务器做改动
权限审核,所有的操作, 均有操作记录
堡垒机,所有的行动,都由CheungSSH替您执行,安全无忧、更省心、省时
无人值守,基本解放运维人员的上手,解绑运维的生活时间
非法操拦截,如 rm 命令,在没有被授权情况下,会被拦截
CheungSSH功能
命令批量执行
脚本批量执行
文件自动上传
文件自动下载
入计划任务
自动部署软件
程序自动同步
服务器资产收集
服务器状态检查
代替Vi编辑器的在线文件编辑
前端技术:Angulars javascript jQuery ngfileupload scrollbar uigrid typeahead cors Bootstrap
后端 技术: Django Redis Mysql Oracle SSH paramiko websocket crontab SFTP Cache
CheungSSH架构
运行架构:
CheungSSH作为堡垒机角色,替代管理人员对众多服务器进行管理,解放运维管理员的双手,并且对所有的操作先授权,然后操作,并且操作后有记录。事前可控,事后可审计。
先自问一句:什么是自动化运维?
为什么需要自动化? 相信在IT运维的朋友都知道,运维自动化是这两年才大批的提起自动化?因为云计算时代来了,公司的服务器规模空前庞大,以前一两百个机器的时候, 在管理上还没有觉得有什么,如今, 上千台服务器,上万台服务器,出来了,如何有效的管理这些服务器?成为了每个老板必须面对的问题!因为服务器多了,公司人手不够,那么老板就不得不请更多的人,但是这样下来, 老板有一天发现了,这么请下去,不是办法啊,银子跟水一样哗哗流。所以目前,很多公司都在寻找第三方开发的自动化运维工具,比如puppet,ansible, saltstack等等。因为他们真的是想用这些工具的强大,来代替自己公司人力成本的支出。或者是自己公司请几个专业的运维开发自行开发一个运维系统。但是终究避不开一个问题---成本!
什么又是自动化呢?我发现,有不少人还在认为,找一个功能很发达的工具,来管理公司的上千台服务器,而且还能很灵活的管理,这样就实现了自动化。在此,我要泼一瓢冷水!那不叫自动化,因为即便选择某些功能很发的工具,但是也避不开一个问题----成本!因为学习某些工具,需要大量的时间,而且学习的人,还必须有一定的Linux基础,甚至是较好的Linux基础,所以他还是没能把成本降低到最低,所以,这样的情况, 依然不叫自动化!
因为我觉得请一个精通Linux的人,或者是一个比较熟悉Linux的人,成本都太高了,因为它不比请一个刚大学毕业的人成本更高!难道不是吗?但是,请一个大学刚刚毕业的人,有干不了这个事情啊,怎么办?
所以,我认为,在实现强大的功能管理的同事,还能最大限度的降低企业的营运成本,那才是我心目中的运维圣地---运维自动化!
CheungSSH为什么要存在? 就像当年为什么Docs不受欢迎?微软推出了图形操作界面后,比尔盖茨瞬间成为首富!这是为什么?因为用户需要的是简单,再次简单!不需要学习的系统,才能真正的受欢迎,所以,只需要通过点击鼠标就能完成操作,这就是CheungSSH追求的自动化与为工具!解放企业的生产力!让CheungSSH成为您的业务供应链的可靠后勤保障系统。
CheungSSH目的和带来的价值实现运维全自动化,降低企业运营成本!是降到最低!使用CheungSSH,不需要再次学习shell操作,功能却是完备的。
CheungSSH后续发展
做一个功能强大的系统,能结合监控,CMDB,自动化运维一体的系统,并且使用学习成本更低,真正做到运维自动化!
下载地址 /zhangqichuan/CheungSSH安装
[root@cheungssh tmp]#unzip CheungSSH-Master.zip
[root@cheungssh tmp]# cd CheungSSH-Master/bin/
[root@cheungssh bin]# sh install-CheungSSH.shinstall #这是一键自动化安装,无需人工解决依赖等头疼问题
温馨提示:建议您使用Yum联网安装依赖模块,速度更快
[root@cheungssh bin]#sh install-CheungSSH.sh update #用于更新安装
登录CheungSSH Web
添加被管理主机配置信息点击 &增加服务器&添加好以后,如下:普通配置
这里,我们考虑的是,不需要被管理服务器做任何的配置, 哪怕是需要SSH-key绑定, 在CheungSSH中, 完全不需要,因为我们要做的是简单,再简单!所以,在添加被管理服务器的时候,你只需要填写被管理服务器的登录密码, 或者是SSH-key,就是你平时登录服务器的方式,简单易懂!
所以, 我根本不需要多做介绍, 当你看到界面的时候,你一下就能明白!应该填写什么信息。请相信CheungSSH,我们要做的,就是让用户感觉简单!
您可以选择sudo为是; 表示执行命令的时候,是启用了sudo,并且在执行命令的时候不用输入sudo开头, 直接是命令, 比如原本是sudo ifconfig ,现在只需要 ifconfig,CheungSSH为您自动切换su - root
您可以选择su为是; 表示执行命令的时候,是启用了su - root,并且在执行命令的时候不用输入su - root开头, 直接是命令, 比如原本是su - root后,执行 ifconfig ,现在只需要 ifconfig,CheungSSH为您自动切换
应用场景:执行一个whoami的命令,请记得,这个命令是在被管理的远程服务器上执行
命令回显,功能区域介绍:
选择服务器
应用场景:假如您现网有一万台服务器,那么本次您只想对其中的一千台服务器进行操作,那么您可以挑选出要执行任务的主机
添加计划任务
假如今晚需要对一部分的主机在24:00的时候执行一些命令,用来收集服务器的信息,此时,您使用该功能就不用值夜了,交给CheungSSH的计划任务模块,那么您就可以安心睡大觉了
选择计划任务的时间 ,这里与Linux系统的 分 时 日 月 星期对应:
确认计划任务的时间,可以看到这个时间格式跟Linux系统的一模一样,没错,我们就是把它做成了操作系统的crontab功能:
在CheungSSH计划任务中查看当前有的计划任务列表
查看计划任务CheungSSH计划任务查看操作系统计划任务查看
提示: CheungSSH还是为了用户考虑,通过以上的计划任务, 您可能知道怎么用,但是对于计划任务的结果, 运行流程,是感觉不清晰的,在这里,我想我有必要向您解释一下,还是那句话, CheungSSH要做到的是,让用户感觉简单,并且要真正让用户使用起来简单,所以这个计划任务的原理上是:在CheungSSH控制机器上做的计划任务,并没有在被管理的服务器上做计划任务,这样,就能为您降低更多运营成本,重要的是,还不变动您的被管理机器,再一次做到稳定!降低复杂度!
文件下载文件传输记录应用场景:对于所有的上传 下载文件的记录 我们都做了记录,下面是传输的记录文件下载应用场景:在远程被管理的服务器上有一个文件,此时如果您需要获取文件内容,那么您可以使用我们的下载功能,把远程服务器上的文件下载到CheungSSH服务器上,然后从CheungSSH服务器再下载到您的本地电脑PC机器上,然后神奇的是,这一切过程,都是自动的!
从CheungSSH上下载刚才从远程服务器上下载的文件到您的本地电脑上:
应用场景:假如您需要更新或者上传一些文件到被管理服务器上,那么这里您可以使用上传功能:
文件上传和下载 都有进度显示的哦!
显示脚本的相关信息(脚本有权限控制,只有授权的用户才能操作)
更多功能...
还有堡垒机角色...
主机信息API
服务器运行日志API
服务器状态检查API
文件传输API
命令执行API
资产信息API
计划任务API
更多API .....
这里不做一一介绍,当您看见了CheungSSH Web界面的时候,不需要我多做介绍了,您一眼就能看明白,这个东西应该怎么用!在您犹豫的时候,您可以到GitHub上下载,一键安装,只需要2分钟,您就能体验这个系统的简单。因为我们坚持做到简约!更简约!目前有800个单位和用户,他们很少问我这个功能如何使用,都是一看就明白!
总设计师:张其川
CheungSSH官方QQ群:
支付宝捐助:
本文出自 &Linux的SSH登陆安全& 博客,请务必保留此出处http://keichuen./7559&&&&Python&Linux系统管理与自动化运维
自营订单满39元(含)免运费
不足金额订单收取运费5元起
邀请好友参加吧
版 次:1页 数:字 数:印刷时间:日开 本:16开纸 张:胶版纸包 装:平装-胶订是否套装:否国际标准书号ISBN:9所属分类:&&&
下载免费当当读书APP
品味海量优质电子书,尊享优雅的阅读体验,只差手机下载一个当当读书APP
本商品暂无详情。
当当价:为商品的销售价,具体的成交价可能因会员使用优惠券、积分等发生变化,最终以订单结算页价格为准。
划线价:划线价格可能是图书封底定价、商品吊牌价、品牌专柜价或由品牌供应商提供的正品零售价(如厂商指导价、建议零售价等)或该商品曾经展示过的销售价等,由于地区、时间的差异化和市场行情波动,商品吊牌价、品牌专柜价等可能会与您购物时展示的不一致,该价格仅供您参考。
折扣:折扣指在划线价(图书定价、商品吊牌价、品牌专柜价、厂商指导价等)某一价格基础上计算出的优惠比例或优惠金额。如有疑问,您可在购买前联系客服咨询。
异常问题:如您发现活动商品销售价或促销信息有异常,请立即联系我们补正,以便您能顺利购物。
当当购物客户端手机端1元秒
当当读书客户端万本电子书免费读中国领先的IT技术网站
51CTO旗下网站
工具推荐:三款自动化代码审计工具
在源代码的静态安全审计中,使用自动化工具代替人工漏洞挖掘,可以显著提高审计工作的效率。学会利用自动化代码审计工具,是每一个代码审计人员必备的能力。在学习PHP源代码审计的过程中,本人搜集使用了多款自动化工具。本文将简要介绍其中三款比较实用的工具:RIPS、VCG、Fortify SCA。
作者:佚名来源:FreeBuf| 10:18
工欲善其事,必先利其器。
在源代码的静态安全审计中,使用自动化工具代替人工漏洞挖掘,可以显著提高审计工作的效率。学会利用自动化代码审计工具,是每一个代码审计人员必备的能力。在学习PHP源代码审计的过程中,本人搜集使用了多款自动化工具。本文将简要介绍其中三款比较实用的工具:RIPS、VCG、Fortify
RIPS是一款开源的,具有较强漏洞挖掘能力的自动化代码审计工具。它使用PHP语言编写的,用于静态审计PHP代码的安全性。
VCG(VisualCodeGrepper),是一款支持C/C++、C#、VB、PHP、Java和PL/SQL的免费代码安全审计工具。它是一款基于字典的检测工具,功能简洁,易于使用。
Fortify SCA(Static Code
Analyzer)是由Fortify软件公司(已被惠普收购)开发的一款商业版源代码审计工具。它使用独特的数据流分析技术,跨层跨语言地分析代码的漏洞产生,目前支持所有的主流开发语言。
本文结合一个应用实例的分析,介绍三款工具的使用方法以及特性。
RIPS的主要功能特点如下:
1) 能够检测XSS、SQL注入、文件泄露、本地/远程文件包含、远程命令执行以及更多种类型的漏洞。
2) 有5种级别选项用于显示以及辅助调试扫描结果。
3) 标记存在漏洞的代码行。
4) 对变量高亮显示。
5) 在用户定义函数上悬停光标可以显示函数调用。
6) 在函数定义和调用之间灵活跳转。
7) 详细列出所有用户定义函数(包括定义和调用)、所有程序入口点(用户输入)和所有扫描过文件(包括include的文件)。
8) 以可视化的图表展示源代码文件、包含文件、函数及其调用。
9) 仅用几个鼠标点击就可以使用CURL创建针对检测到漏洞的EXP实例。
10) 详细列出每个漏洞的描述、举例、PoC、补丁和安全函数。
11) 7种不同的语法高亮显示模式。
12) 使用自顶向下或者自底向上的方式追溯显示扫描结果。
13) 一个支持PHP的本地服务器和浏览器即可满足使用需求。
14) 正则搜索功能。
最新版本的RIPS是0.55,下载链接如下:
https://sourceforge.net/projects/rips-scanner/
解压下载的zip文件到Web服务器网站目录下即可。在浏览器中输入Web服务器地址和对应目录,RIPS工具的用户使用界面如下:
最上方是所有功能按钮菜单。
扫描任务结束后,菜单中会出现4个新的按钮,分别用来显示/隐藏4个扫描结果窗口:被扫描文件、用户输入点、扫描状态信息和被扫描函数。
现在以一个简单的实例来说明RIPS的使用方法,下载链接如下:
http://jsdx./201603/webjoker_v2.2.0.zip
该PHP应用程序用来统计某网站的用户访问情况,登录到程序后台可以查看详细访问信息。将下载后的程序解压,在RIPS的&path/file&选项中填入程序解压目录,其它选项保持默认,点击&scan&按钮开始扫描任务。
扫描结束后,点击window菜单的4个按钮可以显示任务的详细情况。
正文部分显示扫描出漏洞的详细情况,点击&hide all&按钮可以查看/隐藏每个文件的详细漏洞结果列表。
让我们来看其中某一个漏洞详情,init.php源代码中存在SQL注入漏洞。
未过滤的$procookie参数直接被cheakcookie()函数调用。将光标悬停在cheakcookie()函数上方,即可显示cheakcookie()函数是如何定义的。
cheakcookie()函数在main.php文件中被定义,可以看出未被过滤的参数直接带入SQL语句被执行。
在漏洞的详细情况中显示$procookie参数由$_COOKIE[count_admin]传递,从init.php源代码的上下文可知,该参数是为了后台登录的cookie值校验。当count_admin值无法匹配数据库中的数据时,校验失败。
将POST包中Cookie中的count_admin改为&& or 1=1 #&,即可绕过cookie校验,直接进入后台。
VCG是一个基于字典的自动化源代码扫描工具,可以由用户自定义需要扫描的数据。它可以对源代码中所有可能存在风险的函数和文本做一个快速的定位。
VCG的下载链接如下:
http://sourceforge.net/projects/visualcodegrepp/
双击下载的msi文件进行安装即可。
在Settings-&Options-&ConfigFiles选项中可以对每种语言的扫描配置文件进行编辑。
点击Settings选项,选择扫描的目标语言类型。点击File-&New Target
Directory选项,选择需要扫描的源代码文件存放目录,我们选择上文提到的应用实例存放目录。点击Scan-&Full Scan选项,扫描开始。
扫描结果以图标的形式对被扫描文件的数据做一个统计,这个功能有点鸡肋。我们重点关注Results和Summary Table两个面板显示的内容。
Results面板显示所有存在安全风险的源码,右键点击可以对结果进行排序过滤。
Summary Table面板是对Results面板内容的总结展示。
VCG是通过匹配字典的方式查找可能存在风险的源代码片段。它的扫描原理较为简单,跟RIPS侧重点不同,并不深度发掘应用漏洞。VCG可以作为一个快速定位源代码风险函数的辅助工具使用。
0&04 Fortify SCA
SCA是一款商业软件,价格较为昂贵,因此我只找到了一个早期的版本进行试用。因为是商业软件,它有详细的使用文档,查阅非常方便。它支持一些IDE的插件功能,在安装的时候会有选项。
SCA的代码审计功能依赖于它的规则库文件,我们可以下载更新的规则库,然后放置在安装目录下相应的位置。bin文件放置在安装目录下Core\config\rules文件夹,xml文件放置在Core\config\ExternalMetadata文件夹(如果该文件夹没有则新建一个)。
打开AuditWorkbench,点击Start New Project-&Advanced
Scan选项就可以快速开始一个审计任务。选择需要审计的应用程序根目录,在Additional Options选项中选择使用的规则库,在Audit
Guide提出的四个问题中选择对应的选项,点击Run Scan即可。
审计的结果由5个面板来呈现。
我们来看跟RIPS审计结果同样的SQL注入问题。点击左侧问题,源代码面板自动定位到出现问题的源代码行。
分析跟踪面板显示了详细的数据走向。从COOKIE读入-&赋值给变量$procookie-&带入cheakCookie()函数-&赋值给变量$sql-&带入mysqli_query()函数执行。
左侧每一个图标的含义在使用手册上可以查到。点击其中每一行,自动定位到对应的源代码行。同时在问题审计面板的Diagram中,有更为形象的数据流向图,直观展示了漏洞产生的原因。
审计面板的其他标签详细说明了漏洞信息,相对于RIPS这种开源软件,Fortify SCA审计结果展示更为详细。Tools-&Generate
Report功能还可以根据用户的需求生成审计结果的报告。
VCG与其他两款工具不同,它是一个简洁的风险函数扫描定位工具,基于字典实现扫描功能。而RIPS和Fortify
SCA则是静态深度分析源代码漏洞的利器,它们使用各自的技术对应用程序执行过程进行了追踪分析,做了深层次的漏洞挖掘工作。RIPS易于部署和使用,可以作为简单应用功能的自动化审计分析工具。而Fortify
SCA功能更为强大,可以胜任较为复杂的应用自动化分析。在实际审计工作中可以结合使用两种工具,取长补短。
自动化的静态代码审计工具可以节省代码审计的人力成本,是提高代码审计效率的重要手段。然而需要注意的是,自动化工具并非是完全智能的,跟所有的漏洞扫描工具一样,误报率的存在仍然是一个现实的问题。因此,报表中显示的漏洞需要审计人员进一步确认是否真的存在。此外,自动化工具还有一个很大的局限性:它仅能够对常见的Web应用漏洞类型进行挖掘,对于Web
2.0时代兴起的业务逻辑漏洞挖掘可以说是束手无力。所以,对于有经验的代码审计人员来说,审计工具起到的仅仅是辅助作用,他们会在利用工具的基础上结合自己经验挖掘出更深层次的漏洞。【编辑推荐】【责任编辑: TEL:(010)】
大家都在看猜你喜欢
热点头条热点热点头条
24H热文一周话题本月最赞
讲师:1029人学习过
讲师:3864人学习过
讲师:2908人学习过
精选博文论坛热帖下载排行
本书专门根据SUN官方的SCSA for Solaris 9&10考试大纲撰写而成,全面覆盖了SCSA for Solaris 9/10的认证考点,除此之外本书还有大量的非考...
订阅51CTO邮刊Linux下SANE自动化测试工具的设计与实现
Linux下SANE自动化测试工具的设计与实现
& & SANE(SCANner ACCess Now Easy)是一个应用程序接口API(ApplICation Programming Interface)[1],提供了对光栅图像扫描硬件的标准访问[2]。Linux对扫描仪的支持就是通过SANE实现的。SANE标准中将实现SANE接口的驱动程序称为SANE Driver或者SANE后端程序;将调用SA
& & SANE(SCANner ACCess Now Easy)是一个应用程序接口API(ApplICation Programming Interface)[1],提供了对光栅图像扫描硬件的标准访问[2]。Linux对扫描仪的支持就是通过SANE实现的。SANE标准中将实现SANE接口的驱动程序称为SANE Driver或者SANE后端程序;将调用SANE接口的应用程序称为SANE前端程序;将对扫描设备的各种控制抽象为SANE选项,resolution就是其中一个SANE选项。 对扫描仪驱动程序进行测试主要包括功能测试和性能测试。功能测试主要指扫描质量、图像质量是否满足用户需求;性能测试主要指扫描效率,也就是扫描一幅图像所需的时间。严格地说,由于SANE前端程序与SANE后端程序均遵守SANE标准,任何一个SANE前端程序都可以用来测试SANE后端程序。但由于目前Linux下没有专门的SANE Driver测试工具,通常测试人员将扫描应用程序用于测试SANE Driver,而在Linux下常用XSANE作为测试工具。XSANE应用程序是基于GTK的sane图像处理软件,它可通过扫描仪和照相机等设备获得图像。 XSANE功能比较强大,但是由于其主要面向用户应用,作为测试工具则存在一些不足:(1)功能测试时效率低下,如果所要测试的选项数目比较多时,测试的工作量很大而且容易出错,而其所支持的批次扫描生成脚本很复杂,而且脚本很难维护;(2)性能测试时不能自动计算扫描时间,手工计算工作量大且误差也较大。此外,还存在一些其他问题:如不能显示选项的详细信息、不能动态更新可用的扫描设备以及不能选择其他可用设备等。 针对以上问题,本文通过引用脚本技术[3],采用一种高效的遍历算法工具,有效地解决了上述问题。该工具能够适用所有采用SANE标准的驱动程序,且能够自动遍历所有的选项及其取值。用户只需根据测试需要写好测试脚本,该工具就可以根据脚本进行多次扫描。因此可以较大程度地减少SANE Driver测试所需的人员及其时间。1 整体架构设计 针对XSANE用作测试工具存在的问题以及测试需求,通过如下设计能得到有效解决。将工具分成5个功能模块:更新设备、列出选项、手动扫描、脚本扫描以及产生脚本。 (1)更新设备:支持用户随时更新设备列表。 (2)列出选项:可以列出SANE后端所定义的所有选项,且只显示当前设备所支持选项的相关信息,还可以根据用户的选择相应地显示SANE后端的版本号及一些设置冲突的警告信息。 (3)手动扫描:类似一般的前端程序,主要实现单次扫描,只显示当前设备所支持的选项及其取值。 (4)脚本扫描:是自动化测试的关键。能够读入一个脚本文件,然后对脚本中各选项的组合值进行遍历,每取到一个组合,便扫描一次。 (5)产生脚本:可以将当前设备所支持的选项及其取值范围记录在脚本文档中。该脚本相当于一个脚本模板,以后的脚本可以只在此基础上稍作修改即可。2 工具的实现 基于以上架构设计在Linux系统下用GTK+和C语言来实现整个工具。2.1 更新设备 在用户扫描过程中,可能会有新的扫描设备打开,也可能现有的扫描设备关闭,因此,有必要让用户随时知道可用的设备列表。其设计思路是:在选择更新设备后,调用sane_get_devices来获得可用的设备列表。实现时,为了允许用户在更新设备时进行其他操作,可将更新的操作放至一个新的线程中去实现。当可用设备为0时,应给用户相应的提示。2.2 列出选项 根据测试需要,这里要求给出SANE后端的版本号,可用选项的详细信息以及警告信息。关于版本号,SANE标准中给出了5个宏,该工具主要直接调用后面的3个宏:即SANE_VERSION_MAJOR、SANE_VERSION_MINOR、SANE_VERSION_BUILD,分别获得SANE后端最大、最小以及编译版本号。对于选项的详细信息,SANE标准中有一个专门用来描述的结构即SANE_Option_ Descriptor。调用SANE标准中的sane_get_option_descriptor后便会返回这个结构体,记录这个选项的详细信息。 警告信息主要通过分析结构体SANE_Option_ Descriptor中的cap值。由SANE标准可知,当SANE_CAP_ SOFT_SELECT被设置时,SANE_CAP_SOFT_DETECT也会被设置,故cap值不能为5;SANE_CAP_SOFT_SELECT和SANE_CAP_HARD_SELECT不能同时被设置,故cap值不能为3。当某一个选项的cap值不为3或5时,可认为这个选项设置是正确的。 实现时,可以将版本信息、选项信息及警告信息分别写至三个文件中,然后根据用户的操作读入相应的文件。2.3 手动扫描 一次完整的扫描过程包括两个部分:配置设备和获取图像。配置设备主要通过sane_control_option来完成。sane_control_option可以用于获取选项的当前参数,也可以用于设置选项的参数。设置完参数后,先调用sane_start,然后一直调用sane_read读图像数据直至sane_read返回状态为SANE_STATUS_EOF,最后不管读图像是否成功均要调用sane_cancel。 实现时,当用户选择手动扫描后会创建一个新的线程去执行,配置设备和获取图像均包含在新的线程中。每进行一次用户扫描,都会新建一个线程。同时为了方便测试人员,工具在手动扫描和后面的脚本扫描中均会记录一些重要信息:如图像的原始大小及实际获得的大小、 sane_start和sane_read的时间、一些操作的返回信息及图片保存目录和名字等。2.4 脚本扫描 脚本扫描与手动扫描是相互独立的。用户可以只选择手动扫描,也可以只选择脚本扫描。不过,它们之间有着紧密的联系,其扫描流程都是一样的。手动扫描与脚本扫描的结构体系如图1所示。脚本扫描可以看作是多次的手动扫描,所不同的是,手动扫描是从界面获得选项值,而脚本扫描是从文本获得选项值。脚本扫描的流程是:首先检查脚本的语法正确性,然后分析脚本,遍历各个选项值的组合,每得到一个组合,便扫描一次,当扫描完成时,再取下一组合扫描直至遍历完所有的组合。
& &  实现时,每扫描一次,均创建一个新线程,下一次扫描要等上一线程结束后才开始。2.5 产生脚本 产生的脚本主要列出设备所支持的选项名字及其取值范围,然后以特定的格式写入脚本中[4]。由于结构体SANE_Option_Descriptor中包括选项的各种信息,因此结构体中的元素title可作为该选项的名字,而选项取值范围可从结构体中的联合体constraint得到。实现时,应允许用户选择保存路径。2.6 遍历算法研究 在对SANE Driver测试时,一般会选中一些选项进行全组合或部分组合进行测试。以两个选项为例:mode值为 Color和Gray,resolution值为75和100,测试时就用Color 75、Color 100, Gray 75、 Gray 100四种组合扫描4次。xsane中的批次扫描采用了类似的方法,它将所要扫描的每种组合记录在文本中,然后通过读文本进行扫描。当扫描次数较多时,文本就非常冗长而且很难维护。 测试工具中采用的脚本使用了键值对的形式: mode=Color,Gray,Binary resolution=75,100,150,200,300,400,500,600,1 200,2 400,4 800,9 600,19 200 对于上面的脚本,通常会采用直接循环法:用下面一个结构体:struct option {&
char names[15];&
char values[10][20];} options[MAXOPTIONSNUMBER];来存储每一种组合,用一个数组size保存各个选项值的个数。比如上例中,第一个选项mode有3个值,故size[0]=3;然后用一个数组index来存储选项的当前值,如mode第一个值为Color,则可表示为index[0]=Color。假如只有mode和resolution两个选项,那么只需2个for循环即可遍历选项的取值。其代码如下:for(index[0]=0;index[0]&size[0];index[0]++)& for(index[1]=0;index[1]&size[1];index[1]++)& {& & for(int i=0;i&2;i++)& & pass_option_setting_to_dev(options[i].names,options[i].values[indexs[i]] );&// pass_option_setting_to_dev为传递参数给设备的函数& ...&
} 本文介绍的算法思路简单,容易理解。针对上例中的两个选项,采用上述的方法可以很好地解决问题。但是上述的算法中有多少个选项就有多少个for循环,而且该方法只适用于选项个数一定的情况下。因为当选项个数有变动时,都要增加或删除相应的for循环数。而现实中的脚本其选项的个数是不定的,因此上述的算法可扩展性较差,不适合用于脚本扫描。但只要对上述算法稍作修改即可成为一种简单高效的遍历算法[5]。该算法的脚本仍采用键值对这种简洁的脚本格式,并且可以很好地适应选项个数或者选项值个数的变化。假设变量OPT_NUM代表选项的个数,其代码如下:&while(1){&
&for( int i=0;i&OPT_NUM;i++){& &
  pass_option_setting_to_dev(options[i].names,options[i].values[indexs[i]] );& & & ...}int k= OPT_NUM-1;while(1){& if(index[k]&size[k]-1) {& & index[k]++;break;&}&else{& index[k]=0; k--;&}}&if(k&0)& & &
break;}3 测试工具对比 XSANE与自动化测试工具对比如表1所示。& 本文以SANE标准为基础,针对xsane存在的不足,结合测试需求,实现了SANE Driver自动化测试工具。实际应用结果表明,与原有的测试工具相比,大大提高了测试效率,极大地减少了测试人员的工作量。参考文献[1] SANE home page[DB/OL].http://www.sane-project.org, 2001.[2] 张安清.基于SANE标准的光栅扫描设备应用程序的开发[J].小型微型计算机系统,):.[3] 凌永发,张云生,郭秀萍.软件自动化测试中的脚本技术[J].云南民族学院学报(自然科学版),):544-548.[4] 蒋云,赵佳宝.自动化测试脚本自动生成技术的研究[J].计算机技术与发展,):4-7.[5] 《编程之美》小组.编程之美:微软技术面试心得[M].北京:电子工业出版社,2008.
型号/产品名

我要回帖

更多关于 python字符串调用函数 的文章

 

随机推荐