利用脚本测试程序

前言:最近第一次作业,用残酷的事实告诉了我测试的重要性。平时测试的时候,经常自己一个个情况测,每测一次都要重新输入一次,费时费力效果差,所以下定决心学一下如何利用脚本进行简单的程序测试,下面记录一下一下用到的语法。

基本概念

以Mac为例,新建一个脚本的基本流程为

注意事项:

输出一段话

向控制台输出Hello World $\dArr$

echo Hello World

变量

利用一个变量,向控制台输出Hello World $\dArr$

a="Hello World"
echo $a

变量运算

修改一个变量的值(4种方法) $\dArr$

let i+=1;
((i++));
i=$[$i+1];
i=$(($i+1))

变量输出格式控制

# printf in binary
printf "%05d\n" `echo "obase=2;$var" | bc`
# printf in decimal
printf "%05d" "$var"
# store the result of printf into a variable
var=$(printf "%05d\n" `echo "obase=2;$var" | bc`);
echo $var

从命令行读入指令

从命令行读入一个字符串,并原样输出 $\dArr$

read readAll
echo you enter $readAll

循环(for)

循环向控制台输出 30 个 Hello World $\dArr$

for((i=0;i<30;i++));
do
    echo Hello World $i
done

数组

将整个数组输出到命令行 $\dArr$

story_list=(hello0 hello1 hello2)

for((i=0;i<3;i++));
do
    echo ${story_list[$i]}
done

for i in {0..3};
do
    echo ${story_list[$i]}
done

条件判断(if-else)

读入一个字符,并作出判断 $\dArr$

echo "do you...?(y/n):"
read readAll

if [[ $readAll = "y" ]]; then
    echo yes
else
    echo "no"
fi

读取文件

逐行读取并输出文件内容 $\dArr$

cat filename.txt | while read line
do
    echo $line
done

写入文件

打开一个文件,写入一个变量和一串字符$\dArr$

a="Hello world"
FILE="./filename.txt"
echo $a >> $FILE
echo "----------------------" >> $FILE

简单的运行一个可执行程序

运行程序rand_story $\dArr$

./rand_story story.txt words.txt 3

将可执行程序的输出写入到文件内

运行程序rand_story,并将程序输出写入到指定文件 $\dArr$

cmd=`./rand_story story.txt words.txt 3`
a=${cmd}
FILE="./output.txt"
echo "$a" >> $FILE

简易版自动化测试脚本

# file name
FILE="./output.txt"
# clear the file content
echo "" > $FILE
echo "-----------test start-----------" >> $FILE

# modify number parameter
for i in {0..30};
do
    echo =====testcase $i===== >> $FILE
    cmd=`./rand_story story.txt words.txt $i`
    a=${cmd}
    echo $a >> $FILE
done

story_list=(story.txt story1.txt story2.txt)

# modify string parameter
for i in {0..2};
do
    echo =====testcase $i===== >> $FILE
    cmd=`./rand_story ${story_list[$i]} words.txt 1`
    a=${cmd}
    echo $a >> $FILE
done