软件测试自动化实践

发表于:2012-4-06 14:34

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:chris    来源:51Testing软件测试网采编

  首先为什么需要软件测试自动化?通过我这几年在微软工作,可以感觉到一点,应该说自动测试,可以定义软件系统。从理论上来说应该是功能定义软件系统,软件系统是怎么工作的是从功能规格上来看的。但是你要是没有一套可以自动测试的测试程序存在,就没有办法验证我这个软件系统,就是修改了一点点,这个软件系统是不是和前面的软件系统一模一样,你没有办法验证,只有有一套自动系统,才能验证软件系统是不是还在原来的状态上。我觉得自动测试是非常重要的一个东西,微软一个软件系统如果没有跟着一套自动系统的话,这个软件系统基本上没有生命力,也没有办法进行更新,其他的各式各样的服务也没有办法进行。

  代码的复杂性也是不能小看的。现在测试一个代码时,所有的覆盖也是不可能的事情,每一个if…else…或switch语句就会把情况增加一倍,许多异常处理代码正常使用中不会碰到。许多与时序,死锁,资源冲突,多线程有关的错误很难捕捉到。除此之外,我们每一个版本又各自带SP与QFE,每个SP进 行组合,可以得到一个天文数字,如果没有一个自动测试系统的话,要测试整个产品,在所有不同的情况下进行工作的话,几乎是一个不可能的事情。你要是有一套自动测试系统,对未来 会有一种事半功倍的效果。

  微软内部有各种不同的测试,首先开发团队有自己的DRT或者Check-in Suites。不需要重装机器,要求速度快,对结果汇报要求简单,100%通过就行,所以不需要很强的分析的能力。与开发团队的关系近,在他们的源代码控制系统中。测试团队有测试的Lab BVT,所有的测试者都是在一起的,BVT的要求是需要重新安装机器,可以排除其他老的因素在上面的干扰。要求速度快,只运行0级测试,BVT也是在每天的构建结束以后自动运行BVT,结果汇报要求也是比较简单,一般来说需要100%,如果不是100%总是要找问题,前天的结果,大前天的结果应该都是100%。与测试团队的关系近,在测试团队的源代码控制系统中,由每日产品编译系统自动触发,全自动运行。

  还有自己常规的Lab Pass也需要重装机器,模拟最终用户的使用形式。需要使用每日编译结果,规模大,测试数多,环境要求也复杂,在这时候我们就会把整个刚才我讲的测试者引进来,一天可能需要测试不同版本,或者不同语言版等。对测试结果汇报与问题要求很高,因为这时候所有测试必须百分之百的通过,可能前天有这么一个问题,今天这个问题重新出现,是不是就可以忽略了呢?如果这个报告结果工具不能干这个事,每天必须要重新做。由测试团队根据需要产生。测试团队的个人Private Pass,由测试个人根据需要产生,不一定需要重装机器,对测试结果汇报要求很高,与测试团队的关系近,在测试团队的源代码控制系统中。

  一个具体自动化测试系统分析。微软内部有很多套自动化测试系统,比如OASys,是Office用的系统,还有Maddog,Bruce等等。这些系统演化到最后,总体结构大同小异。如果大家自主开发一套新的自动化测试系统,我估计大概十年以后结果就是这样的。以OASys系统为例,有Web服务器,是前台的Web UI。SQL Server后台服务器,有控制程序,客户机程序,客户程序就是在机器上装一个小的程序,一些结果报告与分析的程序,有文件服务器,存放每天的构建的结果,每次结果的Log file等等,除此之外所有的测试都是在机器池中进行,一系列差不多一样的机器,在一个测试里随时调用某一群或者某一些,或者某一个机器进行使用。

  具体模块的功能:

  文件服务器是存放每日的结果,存放每一个Run的logfile。比如你需要安装什么东西,需要什么样的后台背景。

  SQL Server存放有关的Setup参数,存放所有与测试有关的参数,存放所有Client机器的情况,是什么样的机器,多少内存,系统时间是什么,现在在干什么等等 ,所有机器的情况都存在这里;还存放所有Run Pass的总体结果,运行数,通过率,运行机器名等……

  Web服务器是Web前台,等于说是一个Web配置。测试团队使用后台服务器的入口,好处就是只需要IE就可以运行,零安装,易集中更新。可以查询并修改所有存放在SQL Server中的参数,可以产生、查询并触发Lab Run,可以查询Lab Run进展状况,总体结果等。 还可以查询并调整客户机的状态,所安装的OS,程序等。

  机器池是几十台一样或比较接近的轻型机器,拥有操作系统或文件系统的镜像程序,可以进行自我更新。

  控制器程序,从SQL Server中读取工作数据,产生工作脚本,并把工作按客户机参数分配给客户机运行,当运行结束时,从Client得到结果并更新SQL Server,分为机房控制器与个人控制器等。Lab controller主要用于控制Lab里的Machine Pool,Private controller主要用于控制Office里的测试团队成员个人的机器。控制器程序应具有动态分配任务的功能,控制器程序应具有Load Balance的功能,控制器程序应能根据Lab Run的优先级与机器资源最优化的分配工作。比如说你有一个自动测试,一个自动化测试每次在Run的时候并不是只有一个测试,同时进行的可能有三到四个同时进行,有的Lab Run会进展的很慢,有些优先级很高。动态分配的功能是非常重要的,根据你的Lab Run的优先级,决定给你分配多少资源进行运行,这是非常重要的系统。还需要多少时间也是一个比较重要的功能,如果你有以前的数据,比如上次Lab Run以后,就知道每一个测试需要Run多少时间,把总体时间加起来,可以看到在今天的构建上还剩下多少时间。

21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号