欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    使用shell脚本进行功能测试.docx

    • 资源ID:6352876       资源大小:24.46KB        全文页数:16页
    • 资源格式: DOCX        下载积分:12金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要12金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    使用shell脚本进行功能测试.docx

    1、使用shell脚本进行功能测试使用 Bash shell脚本进行功能测试功能测试是软件开发的一个关键部分 - 而已经装入 Linux 的 Bash 可以帮您轻而易举地完成功能测试。在本文中,Angel Rivera 将说明如何运用 Bash shell 脚本通过行命令来执行 Linux 应用程序的功能测试。由于此脚本依赖于命令行的返回码,因而您不能将这种方法运用于 GUI 应用程序功能测试是开发周期的一个阶段,在这个阶段中将测试软件应用程序以确保软件的函数如预期的那样,同时能正确处理代码中错误。此项工作通常在单个模块的单元测试结束之后,在负载重压条件下整个产品的系统测试之前进行的。市场上有许多

    2、测试工具提供了有助于功能测试的功能。然而,首先要获取它们,然后再安装、配置,这将占用您宝贵的时间和精力。Bash 可以帮您免去这些烦琐的事从而可以加快测试的进程。使用 Bash shell 脚本进行功能测试的优点在于:Bash shell 脚本已经在 Linux 系统中安装和配置好了。不必再花时间准备它。可以使用由 Linux 提供的文本编辑器如 vi 创建和修改 Bash shell 脚本。不需要再为创建测试程序而获取专门的工具。如果已经知道了如何开发 Bourne 或 Korn shell 脚本,那对于如何运用 Bash shell 脚本已经足够了。对您来说,学习曲线已不存在了。Bash

    3、shell 提供了大量的编程构造用于开发从非常简单到中等复杂的脚本。将脚本从 Korn 移植到 Bash 时的建议如果已有现成的 Korn shell 脚本,而想要将它们移植到 Bash,就需要考虑下列情况:Korn 的 print 命令在 Bash 中不能使用;而是改为使用 echo 命令。需要将脚本的第一行: #!/usr/bin/ksh 修改成: #!/bin/bash 创建 Bash shell 脚本进行功能测试这些基本的步骤和建议适用于许多在 Linux 上运行的客户机服务器应用程序。记录运行脚本的先决条件和主要步骤将操作分成若干个逻辑组基于一般方案制定执行步骤在每个 shell 脚

    4、本中提供注释和说明做一个初始备份以创建基准线检查输入参数和环境变量尝试提供 usuage 反馈尝试提供一个安静的运行模式当出现错误时,提供一个函数终止脚本如可能,提供可以执行单个任务的函数当显示正在生成的输出时,捕获每个脚本的输出在每个脚本内,捕获每个行命令的返回码计算失败事务的次数在输出文件中,突出显示错误消息,以便于标识如有可能,实时生成文件在执行脚本的过程中提供反馈提供脚本执行的摘要提供一个容易解释的输出文件如有可能,提供清除脚本及返回基准线的方法下面详细讲述了每一条建议以及用于说明问题的脚本。若要下载此脚本,请参阅本文后面的 参考资料部分。 1. 记录运行脚本的先决条件和主要步骤 记录

    5、,尤其是以有自述标题的单个文件(例如 README-testing.txt)记录功能测试的主要想法是很重要的,包括,如先决条件、服务器和客户机的设置、脚本遵循的整个(或详细的)步骤、如何检查脚本的成功失败、如何执行清除和重新启动测试。 2. 将操作分成若干个逻辑组 如果仅仅执行数量非常少的操作,可以将它们全部放在一个简单的 shell 脚本中。 但是,如果需要执行一些数量很多的操作,那最好是将它们分成若干个逻辑集合,例如将一些服务器操作放在一个文件而将客户机操作放在在另一个文件中。通过这种方法,划分适当的颗粒度来执行测试和维护测试。3. 基于一般方案制定执行步骤 一旦决定对操作进行分组,需要根

    6、据一般方案考虑执行操作的步骤。此想法是模拟实际生活中最终用户的情形。作为一个总体原则,只需集中测试 80% 最常调用函数的 20% 用法即可。 例如,假设应用程序要求 3 个测试组以某个特定的顺序排列。每个测试组可以放在一个带有自我描述文件名(如果可能)的文件中,并用号码来帮助识别每个文件的顺序,例如:1. fvt-setup-1: To perform initial setup.2. fvt-server-2: To perform server commands.3. fvt-client-3: To perform client commands.4. fvt-cleanup: To

    7、cleanup the temporary files, in order to prepare for the repetition of the above test cases.4. 在每个 shell 脚本中提供注释和说明 在每个 shell 脚本的头文件中提供相关的注释和说明是一个良好的编码习惯。这样的话,当另一个测试者运行该脚本时,测试者就能清楚地了解每个脚本中测试的范围、所有先决条件和警告。 下面是一个 Bash 脚本 test-bucket-1 的示例 。#!/bin/bash# Name: test-bucket-1# Purpose:# Performs the test-

    8、bucket number 1 for Product X.# (Actually, this is a sample shell script, # which invokes some system commands # to illustrate how to construct a Bash script) # Notes:# 1) The environment variable TEST_VAR must be set # (as an example).# 2) To invoke this shell script and redirect standard # output

    9、and standard error to a file (such as # test-bucket-1.out) do the following (the -s flag # is silent mode to avoid prompts to the user):# ./test-bucket-1 -s 2&1 | tee test-bucket-1.out# Return codes:# 0 = All commands were successful# 1 = At least one command failed, see the output file # and search

    10、 for the keyword ERROR.#5. 做一个初始备份以创建基准线 您可能需要多次执行功能测试。第一次运行它时,也许会找到脚本或进程中的一些错误。因而,为了避免因从头重新创建服务器环境而浪费大量时间 - 特别是如果涉及到数据库 - 您在测试之前或许想做个备份。 在运行完功能测试之后,就可以从备份中恢复服务器了,同时也为下一轮测试做好了准备。6. 检查输入参数和环境变量 最好校验一下输入参数,并检查环境变量是否设置正确。如果有问题,显示问题的原因及其修复方法,然后终止脚本。 当测试者准备运行脚本,而此时如果没有正确设置脚本所调用的环境变量,但由于发现及时,终止了脚本,那测试者会相当

    11、感谢。没有人喜欢等待脚本执行了很久却发现没有正确设置变量。# -# Main routine for performing the test bucket# -CALLER=basename $0 # The Caller nameSILENT=no # User wants promptslet errorCounter = 0# -# Handle keyword parameters (flags).# -# For more sophisticated usage of getopt in Linux, # see the samples file: /usr/lib/getopt/p

    12、arse.bashTEMP=getopt hs $*if $? != 0 then echo $CALLER: Unknown flag(s) usagefi # Note quotes around $TEMP: they are essential! eval set - $TEMPwhile true do case $1 in -h) usage HELP; shift; # Help requested -s) SILENT=yes; shift; # Prompt not needed -) shift ; break ; *) echo Internal error! ; exi

    13、t 1 ; esac done# -# The following environment variables must be set# -if -z $TEST_VAR then echo Environment variable TEST_VAR is not set. usagefi 关于此脚本的说明如下:使用语句 CALLER=basename $0 可以得到正在运行的脚本名称。这样的话,无须在脚本中硬编码脚本名称。因此当复制脚本时,采用新派生的脚本可以减少工作量。 调用脚本时,语句 TEMP=getopt hs $* 用于得到输入变量(例如 -h 代表帮助,-s 代表安静模式)。 语

    14、句 -z $X 和 echo The environment variable X is not set. 以及 usage 都是用于检测字符串是否为空 (-z),如果为空,随后就执行 echo 语句以显示未设置字符串并调用下面要讨论的 usage 函数。 若脚本未使用标志,可以使用变量 $#,它可以返回正在传递到脚本的变量数量。7. 尝试提供usage反馈 脚本中使用 usage 语句是个好主意,它用来说明如何使用脚本。 # -# Subroutine to echo the usage# -usage() echo USAGE: $CALLER -h -s echo WHERE: -h =

    15、 help echo -s = silent (no prompts) echo PREREQUISITES: echo * The environment variable TEST_VAR must be set, echo * such as: echo export TEST_VAR=1 echo $CALLER: exiting now with rc=1. exit 1调用脚本时,使用-h标志可以调用 usage 语句,如下所示: ./test-bucket-1 -h 8. 尝试使用安静的运行模式 您或许想让脚本有两种运行模式: 在 verbose 模式(您也许想将此作为缺省值)中

    16、提示用户输入值,或者只需按下 Enter 继续运行。在 silent 模式中将不提示用户输入数据。下列摘录说明了在安静模式下运用所调用标志 -s 来运行脚本:# -# Everything seems OK, prompt for confirmation# -if $SILENT = yes then RESPONSE=yelse echo The $CALLER will be performed. echo Do you wish to proceed y or n? read RESPONSE # Wait for response -z $RESPONSE & RESPONSE=nf

    17、i case $RESPONSE in yY|yYeE|yYeEsS) ; *) echo $CALLER terminated with rc=1. exit 1 ;esac9. 当出现错误时,提供一个函数终止脚本 遇到严重错误时,提供一个中心函数以终止运行的脚本不失为一个好主意。此函数还可提供附加的说明,用于指导在此情况下应做些什么: # -# Subroutine to terminate abnormally# -terminate() echo The execution of $CALLER was not successful. echo $CALLER terminated,

    18、exiting now with rc=1. dateTest=date echo End of testing at: $dateTest echo exit 110. 如有可能,提供可以执行简单任务的函数 例如,不使用许多很长的行命令,如: # -echo echo Creating Access lists.# - Access -create -component Development -login ted -authority plead -verbose if $? -ne 0 then echo ERROR found in Access -create -component

    19、Development -login ted -authority plead let errorCounter = errorCounter + 1 fi Access -create -component Development -login pat -authority general -verbose if $? -ne 0 then echo ERROR found in Access -create -component Development -login pat -authority general let errorCounter = errorCounter + 1 fi

    20、Access -create -component Development -login jim -authority general -verbose if $? -ne 0 then echo ERROR found in Access -create -component Development -login jim -authority general let errorCounter = errorCounter + 1 fi.而是创建一个如下所示的函数,此函数也可以处理返回码,如果有必要,还可以增加错误计数器:CreateAccess() Access -create -compo

    21、nent $1 -login $2 -authority $3 -verbose if $? -ne 0 then echo ERROR found in Access -create -component $1 -login $2 -authority $3 let errorCounter = errorCounter + 1 fi.然后,以易读和易扩展的方式调用此函数:# - echo echo Creating Access lists.# - CreateAccess Development ted projectleadCreateAccess Development pat ge

    22、neralCreateAccess Development jim general11. 当显示正在生成的输出时,捕获每个脚本的输出 如果脚本不能自动地将输出发送到文件的话,可以利用 Bash shell 的一些函数来捕获所执行脚本的输出,如: ./test-bucket-1 -s 2&1 | tee test-bucket-1.out让我们来分析上面的命令:2&1 命令: 使用 2&1 将标准错误重定向到标准输出。字符串 2&1 表明任何错误都应送到标准输出,即 UNIX/Linux 下 2 的文件标识代表标准错误,而 1 的文件标识代表标准输出。如果不用此字符串,那么所捕捉到的仅仅是正确的

    23、信息,错误信息会被忽略。管道 | 和 tee 命令: UNIX/Linux 进程和简单的管道概念很相似。既然这样,可以做一个管道将期望脚本的输出作为管道的输入。下一个要决定的是如何处理管道所输出的内容。在这种情况下,我们会将它捕获到输出文件中,在此示例中将之称为 test-bucket-1.out。但是,除了要捕获到输出结果外,我们还想监视脚本运行时产生的输出。为达到此目的,我们连接允许两件事同时进行的 tee (T- 形管道):将输出结果放在文件中同时将输出结果显示在屏幕上。 其管道类似于:process - T - output file | V screen如果 只 想捕获输出结果而不想

    24、在屏幕上看到输出结果,那可以忽略多余的管道: ./test-bucket-1 -s 2&1 test-bucket-1.out 假若这样,相类似的管道如下:process - output file12. 在每个脚本内,捕获每个行命令所返回码 决定功能测试成功还是失败的一种方法是计算已失败行命令的数量,即返回码不是 0。变量 $? 提供最近所调用命令的返回码;在下面的示例中,它提供了执行 ls 命令的返回码。 # -# The commands are called in a subroutine # so that return code can be# checked for possib

    25、le errors.# -ListFile() echo ls -al $1 ls -al $1 if $? -ne 0 then echo ERROR found in: ls -al $1 let errorCounter = errorCounter + 1 fi 13. 记录失败事务的次数 在功能测试中决定其成功或失败的一个方法是计算返回值不是 0 的行命令数量。但是,从我个人的经验而言,我习惯于在我的 Bash shell 脚本中仅使用字符串而不是整数。在我所参考的手册中没有清楚地说明如何使用整数,这就是我为什么想在此就关于如何使用整数和计算错误(行命令失败)数量的方面多展开讲的原因

    26、: 首先,需要按如下方式对计数器变量进行初始化:let errorCounter = 0然后,发出行命令并使用 $? 变量捕获返回码。如果返回码不是 0,那么计数器增加 1(见蓝色粗体语句):ListFile() echo ls -al $1 ls -al $1 if $? -ne 0 then echo ERROR found in: ls -al $1 let errorCounter = errorCounter + 1 fi 顺便说一下,与其它变量一样,可以使用 echo 显示整数变量。14. 在输出文件中,为了容易标识,突出显示错误消息 当遇到错误(或失败的事务)时,除了错误计数器的

    27、数量会增加外,最好标识出此处有错。较理想的做法是,字符串有一个如 ERROR 或与之相似的子串(见蓝色粗体的语句),这个子串允许测试者很快地在输出文件中查找到错误。此输出文件可能很大,而且它对于迅速找到错误非常重要。 ListFile() echo ls -al $1 ls -al $1 if $? -ne 0 then echo ERROR found in: ls -al $1 let errorCounter = errorCounter + 1 fi 15. 如有可能,实时生成文件 在某些情况下,有必要处理应用程序使用的文件。可以使用现有文件,也可以在脚本中添加语句来创建文件。如果要使用的文件很长,那最好将其作为独立的实体。如果文件很小而且内容简单或不相关(重要的一点是文本文件而不考虑它的内容),那就可以决定实时创建这些临时文件。 下面几行代码显示如何实时创建临时文件:cd $HOME/fvtecho Creating file softtar.cecho S


    注意事项

    本文(使用shell脚本进行功能测试.docx)为本站会员主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

    经营许可证编号:鄂ICP备2022015515号-1

    收起
    展开