51Testing软件测试论坛

标题: 对Linux 之 WC命令进行测试【要求实现自动化测试】 [打印本页]

作者: liufeng    时间: 2009-6-2 21:40
标题: 对Linux 之 WC命令进行测试【要求实现自动化测试】
wc命令是linux中自带命令,这里,我们假设这个命令是开发人员实现的一个程序。

这个程序在执行时,有如下四种执行情况

    wc –c  文件或者目录

    wc –C  文件或者目录

    wc  --help 文件或者目录

    wc  --version 文件或者目录

********************************************

【解决答案】

前期准备:
mv /etc/inittab /root/inittab.bak
cd /root
wc -c inittab>Case_001.res
wc -C inittab 2>Case_002.res
wc --help inittab>Case_003.res
wc --version inittab>Case_004.res
这样我们就准备了预期结果
*******************
准备要读取的测试用例文件TestCase.file
Case_ID         Option         directory
Case_001        -c             /root/inittab.bak
Case_002        -C             /root/inittab.bak
Case_003        --help         /root/inittab.bak
Case_004        --version      /root/inittab.bak
**************************************
编写的测试脚本如下:
【main.sh】
     1  #!/bin/sh
     2  . ./myGetResult.sh
     3  . ./myCallCmd.sh
     4  tc_file=$1
     5  [ -s $tc_file ]
     6  if [ $? -eq 0 ];then
     7    lineNO=0
     8    while read case_id option directory
     9    do
    10      lineNO=`expr $lineNO + 1`
    11      if [ "$lineNO" -gt 1 ];then
    12         CallCmd $case_id $option $directory;
    13         ret=$?
    14         if [ $ret -eq 0 ];then
    15            GetResult $case_id 0
    16         else
    17            GetResult $case_id 1
    18         fi
    19      else
    20         continue
    21      fi
    22    done<$tc_file
    23  else
    24    echo "The file you enter is empty!"
    25    exit 1
    26  fi
【myCallCmd】
     1  #!/bin/sh
     2  CallCmd()
     3  {
     4    case_id=$1
     5    ption=$2
     6    directory=$3
     7    wc $option $directory>$case_id.out 2>$case_id.err
     8    return $?
     9  }
【myGetResult】
     1  #!/bin/sh
     2  GetResult()
     3  {
     4    case_id=$1
     5    isnormal=$2
     6    if [ $isnormal -eq 0 ];then
     7       diff $case_id.out $case_id.res
     8    else
     9       diff $case_id.err $case_id.res
    10    fi
    11    ret=$?
    12    if [ $ret -eq 0 ];then
    13       echo "$1---->pass"
    14    else
    15       echo "$1---->fail"
    16    fi
    17  }
*******************************
执行结果./main.sh TestCase.file
Case_001---->pass
Case_002---->pass
Case_003---->pass
Case_004---->pass
因为我们准备的预期结果是正确的,
而且实际结果也是正确的[因为开发的WC是正确的]
所以都pass。

注意diff命令:
作者: june.diny    时间: 2009-6-3 13:08
写的不错,思路清晰,学习了
main.sh 中14-18行 可以直接写成GetResult $case_id $ret

    14         if [ $ret -eq 0 ];then
    15            GetResult $case_id 0
    16         else
    17            GetResult $case_id 1
    18         fi
作者: liufeng    时间: 2009-6-5 13:34
多谢指出




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2