自动化测试工具
上传一个用.net开发的测试工具,里面有使用说明,希望对大家有帮助。也希望高手们能拓展它的功能,使它更加健壮。
整个的开发过程可以参考《高效软件测试自动化》电子工业出版社 "Effective Software Test Automation"。
它可以自动获得被测程序的信息,并列到Excel文件中,还会根据这些信息自动生成测试脚本,你要做的就是运行脚本就OK了,其他一切工作基本都可以由它自动完成,其中包含了.net的类反射和代码生成技术。
它生成的脚本是一个exe可执行文件,可用于单元测试、回归测试和集成测试。
5/17 我又改进了一点,现在是最新版
[ Last edited by developing_T on 2005-5-18 at 16:37 ] 源代码也发上来,大家可以添加一些新功能。
技术问题可以参考
.net调用Excel API
.net System.Reflection命名空间,类反射
.net System.CodeDom 命名空间,代码生成技术
5/17 我又改进了一点,现在是最新版
[ Last edited by developing_T on 2005-5-17 at 09:16 ] 说明:
系统要求
Windows 2000/XP
Microsoft Visual Studio.NET Framework
Microsoft Visual Studio.NET IDE 2002/2003
Microsoft Excel 2000/XP/2003
我们开始测试LowLevelObj.dll程序集
(1)启动AutomatedTest.exe
测试脚本路径:C:\Temp2
测试结果保存:C:\Temp2
[ Last edited by developing_T on 2005-5-18 at 16:36 ] (2)开始
点[打开程序集]弹出Dll under Test话筐,这时选择要测试的程序集,在这里我们就选择\Simple\LowLevelObj\bin\Debug文件夹下的LowLevelObj.dll作为被测对象。选中后点[打开],将看到右侧列出了LowLevelObj.dll程序集信息,我们只对SimpleMath感兴趣,所以勾选它 (3)生成测试用例
选中SimpleMath后点[生成测试用例](等待…),如果顺利,可以看到下图
在这张表单中列出了SimpleMath所包含的所有构造函数和方法,比如第9行的SimpleCalc方法,他要求两个int型和一个枚举型的参数,程序会自动为他们付值(随机的)。 (4)编辑Excel
现在我们要对这些Excel数据进行编辑,告诉它要测试我们感兴趣的方法。
表单的第4, 5, 6, 11 行是没用的这些方法并不是我们关心的,所以右键删除这几行。我们主要来测试SimpleCalc和PowerCalc这两个方法,现在就复制SimpleCalc和PowerCalc所在的这两行,然后在下面的N行中粘贴出他们的副本,并更改里面的数值,在绿色的格子里输入期望返回的结果,编辑结果如图:
上面的数值是手工设置的,你也可以设置成不同的值,编辑完成后保存Excel,但是不要关。
[ Last edited by developing_T on 2005-5-18 at 16:50 ] (5)生成测试脚本
回到Automated Software Test程序,点上面的 [生成测试脚本],如果一切顺利稍等片刻程序会开启一个.net IDE, 里面的测试脚本代码已经生成好了,现在只需编译运行就OK。编译前它可能会提示保存信息,一般直接点保存就可以了。成功的话你会看见一个黑色的命令窗口和一个Excel窗口快速闪过。
(6)查看结果
到C:\Temp2下看,现在多了LowLevelObj文件夹和TestLowLevelObj200556144347.xls文件(点开它看一下,是测试结果)。LowLevelObj是测试脚本工程,如果想再次执行测试,可以到C:\Temp2\LowLevelObj\Bin\Debug下运行TestLowLevelObj.exe
在测试前可以对这个文件夹下的testLowLevelObjData.xls里的数据进行修改,输入你期望测试的数据。
上图是TestLowLevelObj200556144347.xls文件,红色表示实际值和期望值不符。 我在这只是把AutoTest一些暂有的功能介绍给大家,程序的健壮要大家来维护,可以继续给它添加一些功能,比如测试数据库功能,测试注册表功能等等。
在代码,程序或者关于软件测试方面,也希望和大家交流。
详细的内容可以参考《高效软件测试自动化》”Effective Software Test Automation” 这本书,书里包含了我所说的所有方面。 兄弟,你真好~~
谢谢拉。。 不客气 顺便添加点功能,比如实现连接数据库:) 这个是不是还要安装.net啊?我的机子没装哪个哦~~ 没装.net的话脚本就没法生成了~~~ 兄弟,你干的漂亮! 不错!顶一把!
请教
他具体有什么用呀,我的知识有限,请多执教 developing_T 在软件框架建成后,编写实现代码前,可以先用这个工具生成测试脚本,待实现代码编写完成后对其测试。如下这段代码,只是生成了框架,还没有编写实现代码:
-------------------------------------------------------
using System;
using System.Runtime.InteropServices;
using System.Text;
namespace XYZInstrumentDrivers
{
/// <summary>
/// XYZ measurement system driver
/// </summary>
[
Guid("C5EA5B79-0C08-4f88-A3EF-FAEF56C44040"),
ClassInterface (ClassInterfaceType.AutoDual)
]
public class XYZDriver
{
/// <summary>
/// Default constructor
/// </summary>
public XYZDriver()
{
}
public int Init(string resourceName, bool idQuery, bool reset)
{
return 0;
}
public void ErrorQuery(ref int errorCode, ref string errorMessage)
{
return;
}
public void ErrorMessage(int statusCode, ref string message)
{
return;
}
public void RevisionQuery(ref string instrumentDriverRevision, ref string firmwareRevision)
{
return;
}
public void Reset()
{
return;
}
public void SelfTest(ref short selfTestResult, ref string selfTestMessage)
{
return;
}
public void TimeOut(int setTimeOut)
{
return;
}
public void Dcl()
{
return;
}
public void exec(string sendStringCommand)
{
return;
}
public void SetPaddlePosition(int paddle, int positionSelector, short optionalPosition)
{
return;
}
public void SetScanRate(int scanSelector, int optionalScanRate)
{
return;
}
public void PaddlePosition(int paddle, short position)
{
return;
}
……
public void RecallState(int saveLoc)
{
return;
}
} //end of class
} //end of namespace
------------------------------------------------
这时可以用AT工具对这些public方法生成测试用例,待实现代码编写完成后可以对其正确性进行测试。
[ Last edited by developing_T on 2005-6-22 at 08:52 ] 多谢 developing_T 这个程序对现实的.net程序测试还有很大不足,不过代码是开放的,我们可以添加需要的功能 你也是做测试的吗,多交流 我是测试专业
正在学习测试的知识
以后请多指教