liufeng 发表于 2009-6-2 21:40:25

对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
   4tc_file=$1
   5[ -s $tc_file ]
   6if [ $? -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
    23else
    24    echo "The file you enter is empty!"
    25    exit 1
    26fi
【myCallCmd】
   1#!/bin/sh
   2CallCmd()
   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
   2GetResult()
   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:58

写的不错,思路清晰,学习了:victory:
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:23

:) 多谢指出
页: [1]
查看完整版本: 对Linux 之 WC命令进行测试【要求实现自动化测试】