用于操作系统的功能自动化测试工具的制作方法

文档序号:32442428发布日期:2022-12-06 22:35阅读:60来源:国知局
1.本发明是关于一种系统的测试工具,尤其是一种用于操作系统的功能自动化测试工具。
背景技术
::2.操作系统用于控制和整理整个计算机系统的硬件和软件资源,并合理的组织调度计算机工作和资源分配,以提供给用户和其他软件方便的接口和环境,它是计算机系统的最基本的系统软件。操作系统的功能测试是操作系统测试的一个重要方面,主要包括文件系统、虚拟化、网络、内核等方面的测试。3.目前,针对操作系统的功能测试主要是依靠人工完成,费时费力,不仅人工成本太高,并且对于一些复杂的功能,人工执行起来也较为麻烦,过多配置文件的修改,会导致测试遇到阻塞的问题,严重阻碍了测试进度,所以开始考虑将操作系统的测试用例进行自动化。然而对于linux系统,进行自动化的大多是性能自动化,功能自动化做的非常少,现有的功能自动化也大多数是针对一个功能用例进行脚本实现,因此自动化测试适用的范围狭窄,一旦参数有所变动,就需要重新设计,灵活性差。4.并且只针对操作系统的某一功能进行单一脚本的开发,开发难度大,代码冗余程度太高,适用性太差,不能针对多架构进行测试,测试工具搭建起来较为麻烦,执行过程不清晰,日志记录不完善,测试失败原因难以分析,脚本维护性差。技术实现要素:5.为解决上述问题,本发明提供一种用于操作系统的功能自动化测试工具,测试的执行过程不需要人为干涉,提高了测试效率、降低了人工成本。6.为达到上述目的,本发明所采用的技术手段为:7.一种用于操作系统的功能自动化测试工具,该功能自动化测试工具主要执行以下步骤:8.安装依赖软件,执行功能自动化测试前,提前运行dep_install.sh脚本安装需要的软件包;9.配置环境变量,安装依赖软件的同时,运行run.sh,记录测试机的信息;10.执行测试用例,安装依赖软件和配置环境变量均完成后,执行功能自动化测试的测试用例,包括获取测试用例列表和用例执行;11.添加测试用例,选择shell脚本或者python脚本根据预定的模板添加测试用例;12.编写json文件,将执行测试用例和添加测试用例的结果写入json文件中;以及13.生成结果日志文件,所述功能自动化测试工具在执行测试用例完成后,得到结果日志文件。14.其中,所述记录测试机的信息包括记录测试机的ip、测试机的登录用户、测试机的登陆密码、测试机的ssh登录端口。15.其中,所述测试机为本地机器或者远程机器。16.其中,所述获取测试用例列表包括:17.通过shell脚本对用户输入的参数组合进行判断;18.调用load_conf函数加载配置文件;19.调用run_all_cases函数查找suit2cases目录下是否存在测试用例名称的json文件;20.调用run_test_suite函数获取测试套件中的测试用例列表。21.其中,所述用例执行包括:22.执行全部测试用例,bashrun.sh-a;23.执行测试套件,bashrun.sh-ftestsuite;24.执行单条测试用例,bashrun.sh-ftestsuite-rtestcase;以及25.日志输出shell脚本的执行过程。26.其中,所述添加测试用例包括确定测试用例和导入公共函数。27.其中,所述公共函数的功能结构包括:日志打印、结果查询、用例结果查询、远程连接、远端命令执行、文件传输、测试设备名获取、软件包安装卸载、查找空闲端口、远端重启。28.其中,所述功能自动化测试工具在执行完测试用例后,在主目录下面生成结果日志文件。29.本发明的有益效果在于:30.本发明实现了一条命令对测试环境进行搭建、一条命令开始执行测试、生成测试结果、生成测试日志、测试环境恢复的功能。本发明的功能自动化测试工具执行过程不需要人为干涉,能够自动进行依赖软件的安装和卸载、测试用例逐个自动运作、自动生成执行日志和测试结果,提高了测试效率、降低了人工成本。31.本发明的功能自动化测试工具平台执行多样化;不但能够对本地机器进行测试,还能对远程机器进行测试;日志输出详细,便于后续分析;可以单条测试用例执行、同类别测试套件执行、全部测试用例执行;提供了较多的公共函数,降低了维护成本;添加新的测试用例较为简单,易于维护。附图说明32.图1:本发明的功能自动化测试工具的框架结构示意图;33.图2:本发明的功能自动化测试工具的测试功能分类图;34.图3:本发明的功能自动化测试工具的总体测试流程图;35.图4:本发明的功能自动化测试工具配置测试套件环境变量流程图;36.图5:本发明的功能自动化测试工具判断测试机类型流程图;37.图6:本发明的功能自动化测试工具获取测试用例列表流程图;38.图7:本发明的功能自动化测试工具执行测试用例流程图;39.图8:本发明的功能自动化测试工具公共函数功能结构图;40.图9:本发明的功能自动化测试工具连通性检测流程图。具体实施方式41.本发明提供了一种用于操作系统的功能自动化测试工具,所述功能自动化测试工具的框架如图1所示。42.测试入口为run.sh,功能模块主要包括:安装依赖软件、配置环境变量、用例执行、日志记录、用例添加、编写json文件、公共函数、调试用例、结果查询。43.安装依赖软件:由于不同操作系统默认的安装软件包数量不同,如果不对依赖软件包进行安装的话,会导致测试用例在执行的时候一些库函数不能加载,测试用例就不能执行,为保证各个平台都能够完整的执行测试,在执行测试前要提前运行dep_install.sh脚本安装一些软件包,以解决测试工具适用性差的问题。44.配置环境变量:执行测试前要运行run.sh来记录一些测试机的相关信息,比如测试机的ip、测试机的登录用户、测试机的登陆密码、测试机的ssh登录端口等等,这里可以是本地机器,也可以是远程的机器,以解决测试工具适用范围狭窄的问题,使得测试工具不仅能测试本工具所在机器,还能对内网其它操作系统进行测试。45.用例执行:用户在执行测试用例的时候可以选择全部测试用例都执行、指定测试同类型的测试套件或者执行单条的测试用例;也即,所提供的测试用例为操作系统测试用例的集合(下文“bashrun.sh-a–x”中,a参数即表示执行的测试用例的集合),用户可以对测试用例列表上的任意用例去执行,以解决只针对操作系统某一单一脚本的开发的问题。46.日志记录:在用例执行测试完成后,记录shell脚本的执行过程,得到结果日志文件,以解决执行过程不清晰,日志记录不完善,测试失败原因难以分析的问题,当测试用例执行失败的时候,用户可以通过日志去分析在哪个步骤失败的,从而轻易找到失败的原因。47.添加测试用例:伴随着操作系统的迭代更新,开发者在开发测试用例的时候所需测试的功能项已无法涵盖当下实际需要测试的功能项,此时需要对测试用例进行添加,由于用户对工具脚本逻辑不清晰,如果不提供用例模板,会造成用户不知道如何添加测试用例,因此,本发明可以根据提供的模板(下文“(4)添加测试用例”部分即为本发明所提供的模板)进行测试用例的添加,在这里用户可以根据需要选择脚本,例如shell脚本或者python脚本;基于此,用户只需要对新功能添加测试用例即可,对于工具的其余代码不用做修改,工具脚本维护性好,用户可以针对技术的更新对测试用例进行维护,以便对操作系统进行更加全面的测试,解决了脚本维护性差的问题。48.编写json文件:所述功能自动化测试工具run.sh获取的测试用例名称都需要写入json文件中,文件名为测试套件名,文件名后缀为.json;其中包括测试套件路径、执行整个测试套件需要的环境信息、测试用例、执行当前用例需要的测试环境。49.公共函数:公共函数中提供了丰富多彩的函数供用户调用。其中包括:日志打印函数、控制远程机器重启的函数、连接远程机器的函数、查找空闲端口或者检查端口是否空闲的函数、软甲包操作的函数、读取框架环境变量的函数、文件传输的函数等等。50.调试用例:所述功能自动化测试工具提供了用户能够调试用例的功能,在设置框架路径环境变量之后,就可以在用例所在目录直接执行用例脚本。51.结果查询:所述功能自动化测试工具在执行完测试用例后,会在主目录下面生成结果日志文件,每个测试套件目录下都有对应的测试用例结果。52.本发明的功能自动化测试工具主要实现五个功能:安装依赖软件、配置环境变量、执行测试、添加测试用例和生成结果日志文件。其测试功能分类如图2所示,其中核心功能为对系统核心功能进行测试,主要包括:文件系统、进程管理、基础命令行工具、存储设备支持、运行库支持;其中管理功能为对系统管理功能进行测试,主要包括:软件包管理(yum、dnf)、逻辑卷管理、磁盘管理、日志管理、用户和组群;其中虚拟化功能为对虚拟化功能进行测试,主要包括:libvirtd服务、虚拟化日志、虚拟网络、虚拟机存储池、虚拟化加密、guestos的启停;其中网络服务功能为对网络服务功能进行测试,主要包括:vsftpd、mariadb、tftp、samba、nfs、dns、dhcp、apache、ssh、ntp、snmp、tomcat、ldap、vnc;其中容器功能为对系统容器功能进行测试,主要包括:docker-engine服务、k8s、podman;其中开发功能为对系统开发功能进行测试,主要包括:gcc、qt、c++、python、java、lua、c语言、php、ruby;其中安全功能为对系统安全功能进行测试,主要包括:强制访问控制、自主访问控制、防火墙(firewalld、iptables)、密码强度、数据加密、身份鉴别。53.本发明的功能自动化测试工具的流程如图3所示,具体来说包括:54.(1)安装依赖软件55.bashdep_install.sh56.安装expect、psmisc、paramiko、python3-paramiko软件。57.(2)配置环境变量58.命令执行:bashrun.sh-c–ip$ip–password$passwd–user$user–port$port59.其中,ip:测试机器的ip地址60.user:测试机的登录用户,默认为root61.password:测试机的登陆密码62.port:测试机ssh登录端口,默认不填为22。63.运行完成后在当前目录下会生成env.json文件。64.{65."node":[[0066]{[0067]"id":1,[0068]"localtion":"local",[0069]"machine":"physical",[0070]"frame":"aarch64",[0071]"nic":"enp11s0f0",[0072]"mac":"00:07:3e:9a:d1:ef",[0073]"ipv4":"10.1.160.159",[0074]"user":"root",[0075]"password":"qwer!234",[0076]"ssh_port":22,[0077]"bmc_ip":"",[0078]"bmc_user":"",[0079]"bmc_password":""[0080]}[0081]][0082]}[0083](3)执行测试用例[0084]执行所有的测试用例bashrun.sh-a[0085]执行指定的测试套件bashrun.sh-ftestsuite[0086]执行单条测试用例bashrun.sh-ftestsuite-rtestcase[0087]日志输出shell脚本的执行过程:[0088]bashrun.sh-a-x[0089]bashrun.sh-ftestsuite-x[0090]bashrun.sh-ftestsuite-rtestcase-x[0091]其中,[0092]-c:测试框架的配置环境[0093]-a:执行所有用例[0094]-f:指定测试套件[0095]-r:指定测试用例[0096]-x:shell脚本在调试模式下执行。[0097](4)添加测试用例[0098]source${oet_path}/libs/locallibs/common_lib.sh[0099]#需要预加载的数据、参数配置[0100]functionconfig_params(){[0101]log_info"starttoconfigparamsofthecase."[0102]log_info"noparamsneedtoconfig."[0103]log_info"endtoconfigparamsofthecase."[0104]}[0105]#测试对象、测试需要的工具等安装准备[0106]functionpre_test(){[0107]log_info"starttopreparethetestenvironment."[0108]log_info"nopkgsneedtoinstall."[0109]log_info"endtopreparethetestenvironment."[0110]}[0111]#测试点的执行[0112]functionrun_test(){[0113]log_info"starttoruntest."[0114]#测试命令:ls[0115]ls-czl-all[0116]check_result0[0117]#测试/目录下是否存在proc|usr|roor|var|sys|etc|boot|dev目录[0118]check_result"$(ls/|grep-ce'proc|usr|roor|var|sys|etc|boot|dev')"7[0119]log_info"endtoruntest."[0120]}[0121]#后置处理,恢复测试环境[0122]functionpost_test(){[0123]log_info"starttorestorethetestenvironment."[0124]log_info"nothingtodo."[0125]log_info"endtorestorethetestenvironment."[0126]}[0127]main"$@"[0128](5)suite2cases中json文件的写法[0129]{[0130]“path”:”$oet_path/testcases/testsuite”ꢀꢀꢀꢀꢀꢀ测试套件路径[0131]“machinenum”:2,[0132]“machinetype”:”physical”,ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ执行整个测试需要的环境信息[0133]“addnetworkinterface”:1,[0134]“adddisk”:[50,100],[0135]“cases”:[[0136]{[0137]“name”:”oe_test_casename_01”,ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ测试用例[0138]“addnetworkinterface”:1,ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ执行当前用例需要的测试环境[0139]“adddisk”:[50][0140]},[0141]][0142]}[0143](6)公共函数[0144]日志打印[0145]#bash[0146]log_info"$message"[0147]log_warn"$message"[0148]log_debug"$message"[0149]log_error"$message"[0150]#python[0151]importrun_log[0152]run_log.logging(level,message)#[0153]level:info,warn,debug,error;message:日志输出[0154](7)生成结果日志文件,查询结果[0155]结果检查[0156]#bash[0157]check_result$1$2$3$4[0158]#$1:测试点的返回结果[0159]#$2:预期结果[0160]#$3:对比模式,0:返回结果和预期结果相对;1:返回结果和预期结果不等[0161]#$4:发现问题,日志输出[0162]rpm包安装卸载[0163]#bash[0164]##func1[0165]dnf_install"vimbc""$node_id"[0166]dnf_remove"$node_id""jq""$mode"[0167]#mode:默认为0,会删除用例中安装的包,当为非0时,则只卸载当软件包[0168]#python[0169]importrpm_manage[0170]tpmfile=rpm_manage.rpm_install(pkgs,node,tmpfile)[0171]rpm_manage.rpm_remove(node,pkgs,tmpfile)[0172]远程命令执行[0173]#bash[0174]##func1[0175]ssh_cmd"$cmd"$remote_ip$remote_password$remote_user$time_out$remote_port`[0176]##func2[0177]p_ssh_cmd‑‑cmd$cmd‑‑node$node(远端节点号)[0178]p_ssh_cmd‑‑cmd$cmd‑‑ip$remote_ip‑‑password$remote_password‑‑port$remote_port‑‑user$remote_user‑‑timeout$timeout[0179]#python[0180]conn=ssh_cmd.pssh_conn(remote_ip,remote_password,remote_port,remote_user,remote_timeout)[0181]exitcode,output=ssh_cmd.pssh_cmd(conn,cmd)[0182]#port:默认为22[0183]#user:默认为root[0184]#timeout:默认不限制[0185]目录文件传输[0186]#bash[0187]##func1[0188]###本地文件传输到远端[0189]`ssh_scp$local_path/$file$remote_user@$remote_ip:$remote_path"$remote_passwd"`[0190]###远端文件传输到本地[0191]`ssh_scp$remote_user@$remote_ip:$remote_path/$file$local_path"$remote_passwd"`[0192]##func2[0193]###目录传输[0194]sftpget/put‑‑localdir$localdir‑‑remotedir$remotedir[0195]###文件传输[0196]sftpget/put‑‑localdir$localdir‑‑remotedir$remotedir‑‑localfile/remotefile$localfile/$remotefile[0197]#python[0198]###目录传输[0199]importssh_cmd,sftp[0200]conn=ssh_cmd.pssh_conn(remote_ip,remote_password,remote_port,remote_user,remote_timeout)[0201]psftp_get(conn,remote_dir,local_dir)[0202]psftp_put(local_dir=local_dir,remote_dir=remote_dir)[0203]###文件传输[0204]importssh_cmd,sftp[0205]psftp_get(remote_dir,remote_file,local_dir)[0206]psftp_put(local_dir=local_dir,local_file=local_file,remote_dir=remote_dir)[0207]#get:从远端获取[0208]#put:传输到远端[0209]#localdir:默认为当前目录[0210]#remotedir:默认为远端根目录[0211]获取空闲端口[0212]#bash[0213]get_free_port$ip[0214]#python[0215]importfree_port[0216]free_port.find_free_port(ip)[0217]检查端口是否被占用[0218]#bash[0219]is_free_port$port$ip[0220]#python[0221]importfree_port[0222]free_port.is_free_port(port,ip)[0223]获取测试网卡[0224]#bash[0225]test_nic$node_id[0226]#python[0227]importget_test_device[0228]get_test_nic(node_id)[0229]#node_id:默认为1号节点[0230]获取测试磁盘[0231]#bash[0232]test_disk$node_id[0233]#python[0234]importget_test_device[0235]get_test_disk(node_id)[0236]#node_id:默认为1号节点[0237]睡眠等待[0238]#bash[0239]sleep_wait$wait_time$cmd[0240]#python[0241]importsleep_wait[0242]sleep_wait.sleep_wait(wait_time,cmd)[0243]远端重启等待[0244]#bash[0245]remote_reboot_wait$node_id$wait_time[0246]本发明所述的用于操作系统的功能自动化测试工具针对操作系统的核心功能、管理功能、虚拟化功能、网络服务功能、docker容器、开发功能、系统安全功能等进行全方位的测试,还能在操作系统发布时对操作系统进行冒烟测试。本发明的功能自动化测试工具使用灵活、可扩展性强,提高了测试效率,降低了人工成本。[0247]本发明所述功能自动化测试工具能够通过脚本解决所有平台依赖的软件;通过配置文件能够非常简单的配置整个测试需要的环境变量;用例执行情况多样化:可以执行所有的测试用例、执行指定的同类型的测试套件、执行单条测试用例;日志输出非常详细,能够很清晰的看到用例执行的过程,对于失败的用例,能够很清晰的看到在某个过程失败了,容易对结果进行分析;用例维护性非常好,所述功能自动化测试工具提供了非常多的公共函数,能够让用户直接引用,用户可根据自己测试需求任意添加新的用例,容易上手;能够对测试过的环境进行后置处理,完完全全把环境恢复到测试之前的状态;用例的调试简便,开发者能够很清晰的看到自己写的用例出错的地方,从而进行修改;用例超时处理默认为30分钟,当某条用例执行时间超过30分钟,将自动跳过本条用例,执行下一个用例,用户也可以自定义超时等待时间。[0248]实施例1[0249]配置测试套件环境变量[0250]配置测试套件环境变量的流程如图4所示,包括:[0251](1)获取测试套件所在的上一级目录,这个oet_path变量在整个测试活动中都频繁用到。[0252](2)导入公共函数库并且调用deploy_conf和write_conf.py函数来进行配置文件写入的操作。[0253](3)功能自动化测试工具处理用户选项参数使用了python内置库函数argparse,对用户输入的选项参数进行判断和处理。[0254](4)使用python内置库函数subprocess来判断配置文件是否已经写入了测试机的相关信息。[0255]实施例2[0256]判断测试机类型[0257]判断测试机类型流程如图5所示,包括:[0258](1)使用pyhton内置函数subprocess判断测试机为远程测试机还是本地测试机。[0259](2)如果为远程测试机器的话,使用paramiko的ssh方法通过ip、用户名、密码连接远程测试机,获取远程测试网卡及其机器的基本信息与写入配置文件的机器信息进行二次对比。[0260](3)记录机器的基本信息:机器类型(物理机或虚拟机)、mac地址、内核信息等等。[0261]实施例3[0262]获取测试用例列表[0263]获取测试用例列表流程如图6所示,包括:[0264](1)通过shell脚本对用户输入的参数组合进行判断:’‑a*-x*$’‘‑x*-a*$’‘‑ax*$’‘‑xa*$’,将这些参数定义为有效参数,其他输入的参数都被定义为无效参数,如果输入的参数是包括上述提及的,脚本将能够有效识别,否则退出测试。[0265](2)调用load_conf函数来加载配置文件,执行命令python3${oet_path}/libs/locallibs/read_conf.pyenv-var,使用argparse内置函数对输入的env-var或者node-num进行参数判断,这里如果是env-var参数,就执行read_conf函数来读取配置文件内容,对配置文件做简单的查询,比如一些关键字”kvm”、”bmc”、”physical”就认为配置文件为有效的,此时配置文件就加载成功。[0266](3)调用run_all_cases函数查找suit2cases目录下是否存在测试用例名称的json文件,如果不存在退出,提示用户“找不到测试用例json文件“。[0267](4)调用run_test_suite函数:python3[0268]${oet_path}/libs/locallibs/suite_case.py‑‑suite$test_suite‑‑keycases-name,这个函数将获取测试套件中的测试用例列表,返回一个python的列表类型的list。[0269]实施例4:[0270]执行测试用例[0271]如图7所示,为执行测试用例流程,具体来说包括:[0272](1)为防止测试用例名称书写错误和丢失,特地对测试用例名称的正确性做了判断,防止报错的时候,不容易分析错误原因。[0273](2)上次测试的结果文件,用户一般不会删除,对上次测试结果目录做了存在性判断,如果存在就删除,以免对本次测试结果造成分析上的障碍。[0274](3)python3${oet_path}/libs/locallibs/suite_case.py‑‑suite$test_suite‑‑keypath使用suite_case.py脚本的另一个参数path获取测试套件的路径和path值。[0275](4)在不同的测试套件中为了防止测试用例过多,开发者会产生脚本名称的重复问题,特地对测试用例的名称做了唯一性判断。[0276](5)使用exec_case公共函数运行测试用例。[0277](6)创建日志目录,里面用来存放脚本运行的详细过程。[0278]实施例5:[0279]公共函数功能结构[0280]具体结构如图8所示,包括:[0281](1)日志打印:单独写了一个方法函数run_log.py来处理日志打印,同样使用argparse内置模块来处理参数,日志级别有一般(log_info)、警告(log_warn)、调试(log_debug)、错误(log_error)。[0282](2)结果查询:分别将用例的预期结果和真实结果做对比,从而判断测试用例执行成功还是失败。[0283](3)用例结果查询:将失败和成功的用例分别集中管控。[0284](4)远程连接和远端命令执行:传入远端机器参数包括需要执行的命令、远端机器ip、密码、用户、超时时间、端口。每个参数都做了空值判断,如果传入的任何一个值为空,都将异常抛出错误信息,并提示哪个参数未传入。先使用ping命令判断远程机器是否能够正常进行网络通信,不通抛出101信息,然后再使用spawn方法ssh连接远程机器,并传入需要执行的命令。sshcmd.sh-c\"command\"-i\"remotemachinetip\"[-ulogin_user][-plogin_password][-oport][-ttimeout]。[0285](5)文件传输:传入远端机器参数包括被传入文件路径、存放文件的远程文件路径、远程机器ip、密码。每个参数都做了空值判断,如果传入的任何一个值为空,都将异常抛出错误信息,并提示哪个参数未传入。使用spawn方法向远程机器传入文件。sshscp.sh-ssrc(user@ip:path)-ddestination((user@ip:path))[-plogin_password][-oport]-r-ttimeout。[0286](6)测试设备名获取:能够获取可测试使用的网卡和磁盘。先对测试机进行判断,如果为local的话,就为本地机器,直接进行网卡和磁盘的获取即可,如果为remote,需要调用公共函数ssh_cmd方法先进行远程连接,然后进行远程执行命令,获取网卡和磁盘。[0287](7)软件包安装和卸载:先对测试机进行判断,如果为local的话,就为本地机器,直接进行软件包的安装和卸载,如果为remote,需要调用公共函数ssh_cmd方法先进行远程连接,然后进行远程执行命令,再进行软件包的安装和卸载。[0288](8)查找空闲端口:同样进行本地远程的机器判断后,相对应进行端口逐个查询,脚本设置默认查询端口为1000-10000端口,也可以进行修改。[0289](9)远端重启:对远程机器重启,即向远端机器发送reboot命令,在远程机器重启后对远程机器进行连通性检测,判断测试机是否重启成功。连通性检测流程如图9所示。调用socket模块来创建套接字,af_inet默认为ipv4连接,socket.sock_raw为原始套接字,普通的套接字无法处理icmp、igmp等网络报文,而sock_raw可以;其次,sock_raw也可以处理特殊的ipv4报文;sock_stream为流式socket,针对于tcp传输。socket.connect从配置文件获取测试机的ip、端口、用户名、密码,默认的timeout为10s,在这里我们写了一个循环,因为测试机的性能不通,所以重启的时间也长短不一,设置100次循环,如果在1000s内能够连接上测试机则继续进行测试,1000s之外的话,判定测试机重启失败,抛出异常。[0290]实施例6:[0291]添加新的测试用例[0292](1)确定测试用例所属的类别(套件)。[0293](2)新建测试用例名称(脚本名),注意尽量不要跟已有的脚本名重复。[0294](3)导入公共函数,在写测试脚本的时候,如果公共函数库中有能用到的方法可以直接调用,对于复杂的脚本逻辑,尽量写入公共函数库中,让脚本尽量方法化。[0295](4)使用config_params函数进行数据、参数的预加载配置。[0296](5)使用pre_test函数安装测试需要的工具准备。[0297](6)写测试用例的主体测试脚本。[0298](7)在suitecases目录中添加新的json文件。[0299](8)调试测试用例,单脚本能够跑通。[0300](9)使用run.sh脚本整体跑通。[0301]本发明的先进性在于:[0302]本发明可兼容的平台多样化,不管是x86、arm还是mips架构都不需要做特殊处理。[0303]本发明将测试环境的搭建脚本化,给用户提供了便捷,其他测试工具测试环境需要手动搭建,容易出错,而本功能自动化测试工具消除了这个问题。[0304]本发明运行参数丰富,用户可以根据自己的需要选择性进行测试,增大了功能自动化测试工具的灵活性。[0305]本发明用例超时处理默认为30分钟,当某条用例执行时间超过30分钟,将自动跳过本条用例,执行下一个用例,用户也可以自定义超时等待时间。[0306]本发明不仅能对本地机器进行测试,还能对远程的机器进行测试。[0307]本发明能够自动生成测试日志,而且提供了不同级别的日志信息,便于定位问题。[0308]本发明对用户可能输入的错误参数进行了异常处理。避免功能自动化测试工具执行过程中报错。[0309]本发明提供了很好的维护性,便于用户添加新的测试用例,可扩展性强。[0310]本发明提供了较多的公共函数库,包括日志打印函数、控制远程机器重启的函数、连接远程机器的函数、查找空闲端口或者检查端口是否空闲的函数、软件包操作的函数、读取框架环境变量的函数、文件传输的函数等提高了开发效率。[0311]本发明针对操作系统的核心功能、管理功能、虚拟化功能、网络服务功能、docker容器、开发功能、系统安全功能等进行全方位的测试。[0312]本发明提供了环境清理方法,使得重复多次测试的时候,能够保证测试的真实性。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1