具体如下:
程序1如下:
Function js(float A,float B,float X)
{
if(A>1&&B=0)X=X/A
if(A=2||X>1)X=X+1
}
程序2如下:
Void DoWork(int x,int y,int z)
{
int k=0,j=0
if((x>3)&&(z5))
{j=x*y+10} ‘语句块2
j=j%3‘语句块3
}
A、语句覆盖:语句覆盖使程序中每个语句至少都能够被执行一次.
例如,在程序1中,为使程序中每个语句至少执行一次,只需设计一个能通过路径a-c-e的数据就可以了,
例如选择输入数据为:A=2,B=0,X=3就可以达到“语句覆盖”标准.
在程序2中,如测试用例输入为:x=4,y=5,z=5程序执行的路径是a-b-d.
B、判定覆盖
比语句覆盖稍强的覆盖标准是判定覆盖.按判定覆盖准则进行测试是指,设计若干测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断的真假值均曾被满足.判定覆盖又称为分支覆盖.
C、条件覆盖
再设计程序中,一个判定语句是由多个条件组合而成的复合判定.条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一次.
D、条件判定组合覆盖
条件判定组合覆盖的含义是:设计足够的测试用例,使得判定中每个条件的所有可能(真/假)至少出现一次,并且每个判定本身的判定结果(真/假)也至少出现一次.
E、多条件覆盖
多条件覆盖也成为条件组合覆盖,它的含义是:设计足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次.显然满足多条件覆盖的测试用例是一定满足判定覆盖、条件覆盖和条件判定组合覆盖的.
商业工具:1、RFTRational Functional Tester 的基础是针对于Java、.NET的对象技术和基于 Web 应用程序的录制、回放功能。工具为测试者的活动提供的自动化的帮助,如数据驱动测试。IBM RFT是一个用于功能和回归测试的数据驱动的测试平台。它支持大范围的应用,例如.Net、Java、SAP、Flex和Ajax。RFT使用Visual Basic。Net和Java作为脚本语言。RFT有一个独特的功能,称为 Storyboard 测试,用户的动作被记录下来,并通过应用截图在 Storyboard 格式中可视化。RFT的另一个有趣特性是它与IBM Jazz应用生命周期管理系统(如IBM Rational Team Concert和Rational Quality Manager)的集成。
2、kylinTOP:这是一款国产的自动化测试工具,支持WEB和APP的自动化测试,其中元素智能定位是这款自动化软件主要特点,是设计理念比较超前的测试工具,算是国内众多自动化测试工具中,做的比较突出的一款。与传统的RFT和UFT相比,的确有过人之处,算是后起之秀,使用起来,简单高效、稳定。这样描述估计也没几个人能体会到的。说白一点就是一个人可以干三个人的活,使用者只需关注业务即可。
3、UFT:UFT(别名:QuickTest Professional简称QTP)是一种自动化测试工具,以VBScirpt为内嵌语言,其前身是QTP。UFT支持功能测试和回归测试自动化,可用于软件应用程序和环境的测试。UFT自动化测试的基本功能包括:创建测试、检验数据、增强测试、运行测试脚本、分析测试结果、维护测试;UFT支持两种视图,一种是Keyword View(关键字视图),另一种是Expert View(专家视图)。是一款老牌的自动化测试工具。
4、SilkTest:这个也是比较相对著名的工具,不过同样还是没有了解过,对于商业的工具,因为其占地面积大,还要破解等麻烦事,最关键的是使用的公司少,所以只使用过QTP,其它的一概未了解过
开源工具:1、Selenium:这个应该大多数人都知道的,现在也是大多数互联网公司在使用的测试框架;selenium仅支持web的UI级别测试,但是其优点在于:a、支持多种语言编写测试脚本,比如:java、python、ruby、perl等;同时也就意味着其后的支持类库也是很多的b、支持多浏览器,如:ie,ff,safari、chrome等c、支持多平台,如:windows、linux、MAC、android、iphone等d、支持分布式执行,一套测试用例可以同时分布到不同的测试机上执行,而且还可以进行任务细化,比如:针对liunx执行系统只分配linux下需要执行的用例此外还有录制工具支持,简单也说,web类测试基本上是首选,不过对flash的支持好像不是太好其主要分2个版本,1.X版本是以js驱动来进行自动化实现的;2.X重新开发了webdriver来代替js驱动,直接调用浏览器底层接口来完成自动化实现的前提:如果使用remote或者RC功能,需安装jre下载地址:http://seleniumhq.org/download/
2、EFT【easy function testing】:这个是在.net3.0 的UIAutomatuon的基础上封装的一个dll文件,同样还封装了部分windows api以实现鼠标和键盘事件。所以这个只能叫测试类库,且仅支持windows程序,而且同样支持uiautomain所支持的WPF程序的测试。前提:安装了.net3.0使用:引入该文件,uiautomation 相关dll,VS环境下编写测试用例
3、UIAutomation:这个是微软提供的UI自动化框架,当然它的初衷并不仅仅是为自动化测试而产生的,它的任务是给更多的开发或者应用去调用windows的UI控件,不过还是可以用于自动化测试的;因为之前微软就有类似的工具,而这个是重新设计的ui操作类框架,其目的是为了兼容支持windows系列操作系统的UI自动化操作【xp,vista,server2003】,还有就是天然支持WPF。当然其设计与通常的自动化工具就不一样了,比如:没有把控件支持的方法绑定在控件对象本身,没有提供专门的鼠标/键盘事件,但是却提供了特定控件对象的事件响应监听及处理方法的定制。其工作流程大概是这样的:a、先获取特定的元素对象,有多种方法。如:句柄,属性值b、获取这个元素对象的模式。模式是这个框架的设计的独具之处,成就了它的灵活性,统一性c、通过这个模式在进行具体的方法调用,属性值获取等d、监听指定对象的特定事件,一旦发生则执行指定的事件处理函数
4、Robot FrameworkRobot Framework是一个完全基于关键字测试驱动的框架,它即能够基于它的一定规则,导入你需要的测试库(例如:其集成了selenium的测试库,即可以理解为操作web控件的测试底层库),然后基于这些测试库,你能应用HTML、TXT等文档形式编写自己的关键字(这些关键字即你的库组成),之后,再编写测试用例(测试用例由测试关键字组成)进行测试。例如:一个简单的登陆测试由:登陆+输入密码+登出三个关键字组成,也可以由一个关键字登陆组成,关键字颗粒的大小可以自行定制。
部分白盒测试工具介绍Parasoft白盒测试工具集
Jtest Java 代码分析和动态类、组件测试
Jcontract Java 实时性能监控以及分析优化
C++ Test C,C++ 代码分析和动态测试
CodeWizard C,C++ 代码静态分析
Insure++ C,C++ 实时性能监控以及分析优化
其它公司
.test .Net 代码分析和动态测试
logiscope c/c++ Verlog公司的静态、动态分析工具
还有testbed、Cantata c/c++等
Rational工具集中的puricoverage和purify、quantify
Compuware白盒测试工具集
BoundsChecker C++,Delphi API和OLE错误检查、指针和泄露错误检查、内存错误检查
TrueTime C++,Java,Visual Basic 代码运行效率检查、组件性能的分析
FailSafe Visual Basic 自动错误处理和恢复系统
Jcheck M$ Visual J++ 图形化的纯种和事件分析工具
TrueCoverage C++,Java,Visual Basic 函数调用次数、所占比率统计以及稳定性跟踪
SmartCheck Visual Basic 函数调用次数、所占比率统计以及稳定性跟踪
CodeReview Visual Basic 自动源代码分析工具
Xunit白盒测试工具集
Aunit Ada http://www.libre.act-europe.fr
CppUnit C++ http://cppunit.sourceforge.net
ComUnit VB,COM http://comunit.sourceforge.net
Dunit Delphi http://dunit.sourceforge.net
DotUnit .Net http://dotunit.sourceforge.net
HttpUnit Web http://c2.com/cgi/wiki?HttpUnit
HtmlUnit Web http://htmlunit.sourceforge.net
Jtest Java http://www.junit.org
JsUnit(Hieatt) javascript 1.4以上 http://www.jsunit.net
PhpUnit Php http://phpunit.sourceforge.net
PerlUnit Perl http://perlunit.sourceforge.net
XmlUnit Xml http://xmlunit.sourceforge.net
DUnit .net
JUnit java