SE_team

清华大学现代软件工程学生小组 指导老师:邹欣 组长:杜圆 组员:石礼昕,张远,郭华阳,高亦陶,贾志豪,李蔚

导航

【Homework8】小组测试计划与实现

Posted on 2011-04-24 14:41  SE_team  阅读(446)  评论(0编辑  收藏  举报

本文主要关于我们小组的工程focuslifer的测试计划和tester的当前进度。

测试计划

focuslifer主要分为3层,分别是数据、逻辑和UI层。基本上来说,我们的测试分为三部分:

-- 底层测试:对数据层和逻辑层的测试,这是我们第一阶段要进行的测试。它包含几个方面:一是对数据层和逻辑层的单独测试(Functional Test);在单层测过之后,进行集成测试(Integration Test),通过对逻辑层操作和对对数据库的检查来测试这两层的整体功能;最后可以进行场景测试,根据我们提出的场景编写测试脚本。对于底层测试,我已实现了一个读脚本的tester,并打算再写一个脚本生成器,这样基本上可以实现在LiferInterface上的自动测试。

--UI测试:这是第二阶段(还没开始),主要是为了测试UI和逻辑层的连接是否有问题,以及UI是否达到了用户的需求(简洁性、美观性、易用性)。关于测试UI与逻辑层的连接,目前还没想到有什么自动化的方法.....打算手工操作UI,然后监视逻辑层的调用和数据库的改变,以及UI是否按照希望的方式更新。关于间接性、美观性、易用性,这个大家多提一些意见,以及找一些其它人来调查。同时,在UI测试阶段的最后也要有场景测试。

--其它:有关其它,我想主要是负载、压力测试,比如我们可以生成一个非常大的测试脚本,然后看程序的效能,比如添加task的延时,搜寻的延时,等。或者手工在UI上狂点(。。。)看看会不会崩溃。

测试实现

这里主要说一下当前的进度和实现。当前是底层测试阶段,主要集中在对LiferInterface上的接口的测试。当前已实现一个tester,它读取一个测试脚本,也就是一个操作的序列,同时记录数据库和逻辑层数据结构的变化,和测试脚本的标准输出对比;通过这种方法,可以找到Bug的症状(Symptom),再进一步将症状报告给各模块的负责人。这样做的好处是:

-- 方便了大量的测试,以后底层测试只需要编写测试的脚本即可,当前打算编写几个脚本生成器。

-- 模块分的很清楚,可以很容易知道是逻辑层还是数据层出了问题。

因为tester是通过System.Reflection(反射)实现的,所以操作名称和参数排列和LiferInterface完全一样,用分号隔开,如下是一个操作序列脚本:

AddTask; 04/24/2011 24:00;NORMAL;finish test report;finish test report;0;0;0;

AddTask;04/24/2011 24:00;NORMAL;write blog;write blog;1;0;0

SetDoneTask;1;1

SetDoneTask;2;1

它分别调用了LiferInterface的两个函数       

ITask AddTask(DateTime dueDate, PriorityType priority, string title, string description, int parentID, int position, int tag);

void SetDoneTask(int taskID, bool isDone);

以上脚本的调用序列如下:

       AddTask(new DateTime(2011, 4, 24, 24, 0, 0), LiferInterface.PriorityType.NORMAL, "finish test report", "finish test report", 0, 0, 0);

       AddTask(new DateTime(2011, 4, 24, 24, 0, 0), LiferInterface.PriorityType.NORMAL, "write blog", "write blog", 1, 0, 0);

       SetDoneTask(1, 1);

       SetDoneTask(2, 1);

同时我们需要一个标准输出来监视逻辑层和数据层的数据,标准输出是xml文件,也是用System.Reflection实现,因此属性名和对应数据类型的域名是相同的,这个脚本的标准输出是

       <task ID = 0, DueDate = "04/24/2011 24:00", Title = "finish test report", Description = "finish test reprot", Priority = NORMAL, IsDone = 1, Tag = 0>

               <task ID = 1, DueDate = "04/24/2011 24:00", Title = "write blog", Description = "write blog", Priority = NORMAL, IsDone = 1, Tag = 0>

        </task>

通过Xml格式可以读取task的树形结构,再与内存中的task树对比。