1、面向对象的新特性面向对象的新特性u继承继承u封装(信息隐蔽)封装(信息隐蔽)u多态(动态绑定)多态(动态绑定)新特性对测试的影响新特性对测试的影响u信息隐蔽(封装)对测试的影响 信息隐蔽避免类中有关实现细节的信息信息隐蔽避免类中有关实现细节的信息被错误地使用被错误地使用; ;隐蔽机制给测试带来了困难。隐蔽机制给测试带来了困难。新特性对测试的影响新特性对测试的影响u继承对测试的影响若一个类得到了充分的测试,当若一个类得到了充分的测试,当其被子类继承后,继承的方法在其被子类继承后,继承的方法在子类的环境中的行为特征需要重子类的环境中的行为特征需要重新测试。新测试。新特性对测试的影响新特性对测试的影
2、响u多态性对测试的影响面向对象软件中,由于动态绑定和多面向对象软件中,由于动态绑定和多态性的存在所带来的不确定性,给测态性的存在所带来的不确定性,给测试覆盖率的满足增大了难度。试覆盖率的满足增大了难度。2 2 面向对象测试的层次面向对象测试的层次u面向对象测试的层次,取决于单元的构成,面向对象测试的层次,取决于单元的构成,一般采用一般采用三层或四层三层或四层方式。方式。u如果把单个操作或方法看作单元,则有四如果把单个操作或方法看作单元,则有四层测试,即方法、类、集成和系统测试。层测试,即方法、类、集成和系统测试。 如果把类看作单元,则有三层测试:类测如果把类看作单元,则有三层测试:类测试,集成
3、测试,系统测试。试,集成测试,系统测试。u面向对象测试的主要问题是集成测试,即面向对象测试的主要问题是集成测试,即在通过测试的类之间进行在通过测试的类之间进行交互测试交互测试。类测试(面向对象单元测试)类测试(面向对象单元测试)u类测试概念:验证类的实现是否和该:验证类的实现是否和该类的说明完全一致。类的说明完全一致。 u类测试的方法:通过代码检查或执行:通过代码检查或执行测试用例的方法来有效地进行类测试。测试用例的方法来有效地进行类测试。u类测试过程为类创建实例为类创建实例构造适当的环境构造适当的环境运行测试用例运行测试用例( (向一个实例发送一个或多向一个实例发送一个或多个消息个消息) )
4、通过参数来检查测试运行的结果通过参数来检查测试运行的结果清除执行测试用例所需的测试环境。清除执行测试用例所需的测试环境。面向对象软件的单元测试观点面向对象软件的单元测试观点 以方法为单元以方法为单元 以类为单元以类为单元以方法为单元以方法为单元u将面向对象单元测试归结为传统的(过程)将面向对象单元测试归结为传统的(过程)单元测试。单元测试。u使用所有传统功能性测试和结构性测试手使用所有传统功能性测试和结构性测试手段。段。u若把方法看作是面向对象的单元,必须提若把方法看作是面向对象的单元,必须提供能够实例化的桩类,以及起驱动器作用供能够实例化的桩类,以及起驱动器作用的的“主程序主程序”类以提供和
5、分析测试用例。类以提供和分析测试用例。以类为单元以类为单元u类包含一组不同的操作,并且某特殊类包含一组不同的操作,并且某特殊操作可能作为一组不同类的一部分存操作可能作为一组不同类的一部分存在。不再孤立地测试单个操作,而是在。不再孤立地测试单个操作,而是将操作作为类的一部分。将操作作为类的一部分。u把类作为单元,可以解决类内集成问把类作为单元,可以解决类内集成问题,但是会产生其它问题。题,但是会产生其它问题。3 3 面向对象的集成测试面向对象的集成测试u基于类间协作关系的横向测试。基于类间协作关系的横向测试。由系统的一个输入事件作为激励,对由系统的一个输入事件作为激励,对其触发的一组类进行测试,
6、执行相应其触发的一组类进行测试,执行相应的操作的操作/ /消息处理路径,最后终止于消息处理路径,最后终止于某一输出事件。某一输出事件。面向对象的集成测试面向对象的集成测试u基于类间继承关系的纵向测试。基于类间继承关系的纵向测试。首先通过测试独立类首先通过测试独立类( (是系统中已经是系统中已经测试正确的某类测试正确的某类) )来开始构造系统,来开始构造系统,在独立类测试完成后,下一层继承独在独立类测试完成后,下一层继承独立类的类立类的类( (称为依赖类称为依赖类) ) 被测试,这被测试,这个依赖类层次的测试序列一直循环执个依赖类层次的测试序列一直循环执行到构造完整个系统。行到构造完整个系统。集
7、成测试的集成测试的UMLUML支持支持协作图(交互图)协作图(交互图)序列图(顺序图)序列图(顺序图)面向对象软件的面向对象软件的MM-MM-路径路径u在传统软件的在传统软件的MM-MM-路径中,用路径中,用“消息消息”表示表示个体单元个体单元( (模块模块) )之间的调用,采用模块执行之间的调用,采用模块执行路径取代完整的模块路径取代完整的模块uMM-MM-路径从某个方法开始路径从某个方法开始, ,当到达某个自己不当到达某个自己不发送任何消息的方法时结束发送任何消息的方法时结束, ,这就是消息静这就是消息静止点止点uMM-MM-路径表示由消息分开的各种方法执行序路径表示由消息分开的各种方法执
8、行序列,即方法列,即方法/ /消息路径。消息路径。4 4 面向对象的系统测试面向对象的系统测试u功能测试功能测试u强度测试强度测试测试系统的能力最高实际限度,即软测试系统的能力最高实际限度,即软件在一些超负荷时功能实现的情况。件在一些超负荷时功能实现的情况。如要求软件某一行为的大量重复、输如要求软件某一行为的大量重复、输入大量的数据或大数值数据、对数据入大量的数据或大数值数据、对数据库大量复杂的查询等。库大量复杂的查询等。u性能测试性能测试u安全测试安全测试u容错测试容错测试采用人工的干扰使软件出错,中断使用,检采用人工的干扰使软件出错,中断使用,检测系统的恢复能力,特别是通讯系统。恢复测系统的恢复能力,特别是通讯系统。恢复测试时,应该参考性能测试的相关测试指标。测试时,应该参考性能测试的相关测试指标。u安装安装/ /卸载测试卸载测试u可用性测试:测试用户是否能够满意使可用性测试:测试用户是否能够满意使用。用。u基于基于UMLUML的系统测试(活动图,配置图)的系统测试(活动图,配置图)