Wrk 文件夹是 wrksuite 的总目录。其中有三个主要的子文件夹 central、common 和 notes。
- central 文件夹。这个文件夹包含自动测试脚本 tapi.ksh、kshell 脚本以及其他需要的文件。tapi.ksh 是自动测试框架的核心,控制着所有测试用例的 build/run 和日志记录。下一节我们将详细讨论。
- common 文件夹。这个文件夹包含所有 wrksuite 测试用例的公用文件。
- notes 文件夹。包含所有的 Lotus C API 工具箱自动测试用例。用户可以向这个文件夹增加新的用例。
|
自动测试框架
Lotus C API 工具箱包括 700 多个测试用例,并且随着 Lotus Notes 和 Domino 新版本的推出不断增加。逐个进行测试是不可能的,于是我们设计和开发了一个自动测试框架以提高效率。该框架包含所有的自动测试用例,测试人员可以方便地向这个框架增加新的用例。
自动测试框架如图 3 所示。进行集中控制的是一个 kshell 脚本,称为 tapi.ksh。您仅需启动脚本 tapi.ksh,然后等待测试结果。tapi.ksh 通过下列步骤来实现自动测试:
- 搜索测试目录下的所有测试用例,并创建用例列表文件 tapi.lst。测试目录包括 notes(测试所有用例)或者它的子目录(测试部分用例)。清单 1 显示了 tapi.ksh 的部分代码,用于搜索测试用例和创建列表文件。
清单 1. tapi.ksh,搜索测试用例和创建列表文件
if [ "$Included" = '' ] ; then $ECHO "Searching for tests." find . -type d -print | grep $grepsw '[/\\][Uu][Ii]' > $tt else $ECHO "Running tests from $Included" cp $Included $tt fi sort $tt > $caselist if [ "$Exclude" != '' ] ; then $ECHO "Tests in $Exclude will not be run" sort $Exclude | comm -23 $caselist - > $tt mv $tt $caselist fi rm -f $tt |
- 找到测试平台相应的 make 文件(和源文件在同一个目录下),按照列表文件构建每个测试用例。
- 运行每个测试用例。
- 记录测试结果。在 test 目录下生成两个主要的日志文件。一个是 suite.log,记录了所有用例的运行状态。另一个是 failed.log,记录所有失败的用例。清单 2 显示了用于构建和执行用例记录测试结果的 tapi.ksh 代码。
清单 2. tapi.ksf,构建和运行测试用例并记录其状态
while [ $(cat $caselist | wc -l) -gt 0 ]do i = $(head -n 1 $caselist) case_path = "$suite_path/$i" cd $case_path case_log = "$case_path/$c_log" if [ -f $MAKEFILE ] ; then $ECHO "$i...\c" | tee -a $log total=`expr $total + 1` if [ "$TARGET" = '' ]; then status = $? if [ $status -ne 0 ] ; then $ECHO "...BUILD failed" | tee -a $log $ECHO "$i......BUILD failed" >> $f_log if [ -f $k_log ] ; then pr -t -o 5 $k_log | tee -a $log | tee -a $f_log i buildfailures = `expr $buildfailures + 1` else $ECHO "...BUILD ok\c" | tee -a $log rm -f $case_log $Make -f $MAKEFILE TEST > $case_log 2>&1 Status = $? if [ $status -ne 0 ] ; then $ECHO "...TEST failed" | tee -a $log $ECHO "$i......BUILD ok...TEST failed" >> $f_log if [ -f $k_log ] ; then pr -t -o 5 $k_log | tee -a $log | tee -a $f_log fi testfailures = `expr $testfailures + 1` else $ECHO "...TEST passed" | tee -a $log $Make -f $MAKEFILE CLEAN > $case_log 2>&1 Status = $? if [ $status -ne 0 ] ; then ECHO "...CLEAN failed" | tee -a $log else rm -f $case_log fi if [ -f $k_log ] ; then $ECHO "$i......BUILD ok...TEST passed" >> $f_log pr -t -o 5 $k_log | tee -a $log | tee -a $f_log fi fi fi else $Make -f $MAKEFILE $TARGET > $case_log 2>&1 status=$? if [ $status -ne 0 ] ; then ECHO "...$TARGET failed" | tee -a $log else ECHO "...$TARGET ok" | tee -a $log rm -f $case_log fi fi fi tail -n $(($(cat $caselist | wc -l) - 1)) $caselist > tapi.tmp mv tapi.tmp $caselistdone |
使用这个框架进行自动测试,测试人员只需要将目录修改为 test 目录执行 tapi.ksh 脚本即可。所有测试用例都会自动运行,测试结果记录到日志文件中。测试人员可以检查日志文件中的运行结果并决定如何处理。
图 3. 自动测试框架
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/