欢迎来到天天文库
浏览记录
ID:52878867
大小:67.00 KB
页数:6页
时间:2020-03-31
《面向对象软件测试技术研究.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、面向对象软件测试技术研究【摘要】随着面向对象软件开发技术的广泛应用,以及软件测试在软件开发过程中地位的不断上升,软件项目开发过程中面向対象技术对传统软件测试产牛了新的挑战,曲向对象软件测试技术的研究越来越受人们的关注。文章对面向对象软件测试技术做出了研究。【关键词】面向对象软件测试技术研究中图分类号:TP311.5文献标识码:A软件测试是保证软件质量的重要手段。曲向对象技术由于其自身的特点,给软件测试带來了新的挑战。随着面向对象技术应用的发展,对面向对象软件测试技术的需求越来越迫切。一、软件测试含义使用人工或者自动手
2、段来运行或测试某个系统的过程,英目的在于检验它是否满足规定的需求或弄清预期结果与实际结果Z间的差别。它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness)>完全度(completeness)和质量(quality)的软件过程;是SQA(softwarequalityassurance)的重要子域。二、软件测试技术的发展方向及面向对象技术具有的特点1、目前,软件测试存在4个发展方向:(1)验证技术。验证的目的在于证明在软件生命期各个阶段,以及阶段间的逻辑协调性和正确性。验证
3、技术冃前仅适用于特殊用途的小程序。(2)静态测试。正逐步地从代码的静态测试往高层开发产品的静态测试发展。(3)测试用例的选择。什么样的测试用例是好的测试用例?可以从4个特性描述测试用例的质量,即有效性、仿效性、经济性和修改性。(4)测试技术的自动化。这是一个最新的发展方向。自动测试也是一门技术,但与测试技术存在很大的区别。2、面向对象技术具有的特点:(1)它要综合考虑软件开发过程所有阶段。(2)在软件开发的整个生存周期中,每个阶段之间是连续的。(3)开发过程分为面向对象分析(00A)、面向对象设计(00D)、而向对象
4、编程(OOP)、血向对象测试(00T)四个连续的部分。Coad和Yourdon给血向对象的概念下了一个定义:面向对象二对象+类+继承+通信如果一个软件系统是使用这样4个概念设计和实现的,则认为这个软件系统是面向对象的。一个面向对象的程序的每一个组成部分都是对象,计算是通过对象和对象之间的通信来执行的。面向对象技术的本质是定义了类的抽象,将变量和作用于它的操作封装到一块。然后用不同的类和方法组合成一个对象系统。面向对象软件将传统软件中的一个过程或一个方法内的复杂性转移到对象之间的交互中。三、测试时遇到的问题:1、系统基
5、本的构造模块是封装了属性和方法的类和对象,它类似于传统的函数、过程或子程序。但类不能直接测试,测试类只能通过类的实例一对象进行。随之而来的一个问题是,对于无法实例化的抽象类如何进行测试。2、在面向对象程序中,对象之间以消息传递的方式进行通信,控制流的转移发生在多个不同对象之间。因此,一个类内部没有顺序的控制流。3、对于常规的过程来讲,仅靠传给过程的参数和全局变量决定着过程内部的执行路径。而血向对象程序屮,类屮方法的执行路径除此以外还取决于对象的状态,类中的方法通过对象的状态进行交互。因此,对对象状态转移的测试是测试类
6、的一个重要内容。四、面向对象技术对软件测试的影响1、封装性对测试的影响。封装性是面向对象技术的特性之一,面向对象软件开发的基本单位是类,封装是指将对象的各个部分封装在类内,通过对接口发送消息的方式使用对象,这样对象的访问就被限制在接口上,简化了访问控制,降低了程序之间的依赖关系,加强了程序的模块化。封装没有直接促成错误的发生,但是给测试带來了很多障碍,并为错误的隐藏提供了更多机会。类内的属性和状态只能通过类自身的方法和函数获得,这就给测试带来了一定的怵I难。封装限制了实现状态的可见性,测试时为了能够验证类中的属性和状
7、态通常需耍在类中插入测试代码。这大大增加了测试工作量。继承对测试的影响。继承也是面向对象语言中的一个本质特征。继承可用于一般与特殊关系,并且方便编码。但继承削弱了封装性,产生了类似于非血向对象语言屮全局数据的错误风险。由于继承的作用,一个函数可能被封装在具有继承关系的多个类中,子类中还可以対继承的特征进行覆盖或重定义。多态性对测试的影响。多态的每一个绑定都是一次相对独立的过程,儿个绑定能正确工作并不能保证所有的绑定也能正确工作。多态性容易导致发送消息给错误的类。多态消息的实际行为是由很多因索动态决定的,这就使行为变得
8、不明确。识别检测这样的绑定是很困难的。当动态绑定与类的继承结合在一起时,绑定方法错误的机会将大大增加。面向对象软件测试内容基于面向对象语境的单元测试。对于传统程序设计语言编写的软件,单元定义为一个函数或一个模块,虽然单元的定义可能不同,但单元测试(unittesting)的冃的都是通过测试残桩(stub)和驱动程序(driver)来模拟和该单元
此文档下载收益归作者所有