利用WatiN进行自动化测试,并不仅仅的将代码堆放在一起就OK了,对于一个成熟的公司,有相对较为稳定的测试流程;那么对于我们来说,需要设计
一个较为清晰的结构才能应对测试流程和管理测试用例,如何设计测试用例的框架?比如测试一个用户注册然后登录,进入页面之后,再创建一条记录。因长的测试
流程中肯定有功能相似的代码部分,例如登录或者是新增一条记录。如何去编制cases?细分的原则又是什么呢?
1、TestCases和TestSuite关系
(1)TestSuite相当于Case的模块,大量的Case存放肯定是需要划分母块的,否则就难以查询和维护、和实时更新。
(2)TestSuite和TestCase关系图
2、定义测试用例基类TestCasesBase,其内容如下
public abstract class TestCasesBase
{
/// <summary>
/// 测试用例名称
/// </summary>
public string CaseDescription = string.Empty;
protected TestContext context;
//初始化TestCases级的环境
public virtual void SetUp()
{
}
//清除TestCases级产生的垃圾
public virtual void TearDown()
{
if (context.Browser != null)
{
context.Browser.Close();
context.Browser.Dispose();
context.Browser = null;
}
}
//这个方法必须在TC中实现
public virtual void TestBody()
{
}
//这个方法不需要在TC实现
public virtual void Run(TestContext tcContext)
{
context = tcContext;
SetUp();
TestBody();
TearDown();
}
}
3、定义测试用例基类模块TestSuiteBase,其内容如下
public abstract class TestSuiteBase : ILogger
{
//初始化testsuite级的环境
public virtual void SetUpTestCase(TestContext testContext)
{
}
//清除testsuite级产生的垃圾
public virtual void TearDownTestCase(TestContext testContext)
{
}
public abstract void RunTestCase(TestContext testContext);
}
TestCase中所包含的主要方法是:SetUp、TestBody、TearDown;
(1)SetUp是运行TestCase前所需要的参数和运行准备,例如有的Case可能需要配置一些文件,有的可能需要数据表等等
(2)TestBody是测试用例的主体部分,是操作网页中的元素
(3)TearDown是测试用例的清理工作,相当于TestBody打过仗,TearDown进行善后工作;例如经常自动化,那么数据库里的冗余数据非常的多,需要每次执行的以后进行清理工作
TestSuite中所包含的主要方法是:SetUpTestCase、RunTestCase、TearDownTestCase;
(1)SetUpTestCase是运行TestSuite前所需要的参数和运行准备
(2)RunTestCase是运行多测试用例
(3)TearDownTestCase是运行TestSuite后的清理工作
4、扩展
其实TestSuite和TestCase原本并非需要这样组织,完全可以合成一个测试用例进行执行,但是Case的颗粒度过大,无法有效合理的对Case进行管理。在大
的项目中,其实Case的颗粒度要远远的大于以上所涉及到的。一个测试用例可能包括很多个步骤。那又个如何进行分割呢?如何进行有效的管理和合理利用? 如下图:
当设计到的测试用例过于复杂时,我们则需要将测试用例进行level的划分,理论上可以无限极的划分下去,这样以便于我们更有效的管理和维护;更有效的
是代码的重用,例如:RegisterTC(注册测试用例)可能在不同的TestSuite都有可能用到,那么在其他的TestSuite下,可能只需要list.Add(RegisterTC())
将用例加入list中即可。这次写的比较混乱,也不知道说明白了没有,希望大家拍砖!