软件测试面向对象测试技术
- 格式:pptx
- 大小:82.15 KB
- 文档页数:20
面向对象的软件测试作者:王容来源:《电脑知识与技术》2013年第05期摘要:软件的测试时软件开发的重要部分,是保证软件质量提高软件性能的关键。
面向对象的软件测试具有它自己的特点,需要与传统的软件测试相区别,因此面向对象的软件测试则被分成不同的阶段,本文将面向对象软件测试层次划分为六个个层次,主要介绍了面向对象软件测试的以下三个层次:类测试、集成测试和系统测试。
关键词:面向对象;单元测试;集成测试;系统测试中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)05-1200-02面向对象的方法在现在的软件开发的运用中是越来越广泛,但是相应的测试方法并没有做出相应的改变,仍然有很多使用的还是传统软件使用的测试方法,出现这样的结果不是单方面的原因,既有在采用面向对象方法开发软件的时候在设计和分析阶段保留的文档不够全面或者并没有按照面向对象的方法进行保存,造成了在设计测试的时候不能够找到原始文档。
还有可能就是现在并没有有效的方法是针对面向对象方法的。
这样就会使得工作变得更加的复杂,就会增加工作量。
但是测试的结果也可能并不理想,使得最后得到的软件并不能够达到用户的期望。
因此,如何使用面向对象的方法来测试软件是非常必要的。
1 面向对象测试与传统测试技术的异同首先,这两种技术的测试过程是相同的。
都要对整个测试进行计划,设计出测试用例,运行测试用例,根据结果进行测试分析,最后是用户验收。
其次,这两种技术的测试目标也是相同的。
测试的目的都是为了使得设计出来的软件能够达到期望的功能。
再次,测试也是为了用尽可能少的工作量测试出软件尽可能多的错误,虽然在这三个方面这两种技术都是相同的,但是在测试计划和设计测试用例的时候是有很大的区别的,这主要是归结于面向对象软件和传统的软件的设计思路不同。
传统的软件是由各个功能模块组成的,那么在测试计划和设计测试用例的时候就要注意的就是这些功能模块之间的关系。
软件测试(第2版)178多态性是面向对象方法的关键特性之一。
多态的概念是指同一消息可以根据发送消息对象的不同而采用多种不同的行为方式。
多态性有两个方面的含义,一种是将同一个消息发送给同一个对象,但由于消息的参数不同,对象也表现出不同的行为(这种多态性是通过重载来实现的)。
另一种是将同一个消息发送给不同的对象,各对象表现出的行为各不相同(这种多态是通过重写来实现的)。
例如,有类A 、类B 和类C 3个类,类B 继承类A ,类C 又继承类B 。
成员函数a () 分别存在于这3个类中,但在每个类中的具体实现不同。
同时在程序中存在一个函数fn (),该函数在形参中创建了一个类A 的实例st ,并在函数中调用了方法a ()。
程序运行时相当于执行了一个多路分支的switch () 语句,首先判定传递过来的实参的类型(类A 或类B 或类C),然后再确定究竟执行哪一个类中的方法a ()。
利用多态性,在程序设计中可以解决很多兼容性的问题,这也是面向对象程序设计的一个显著优点,而在测试时,就必须为上面的每一个分支生成测试用例。
由此可见,多态性和动态绑定为程序的执行带来了不确定性,并且增加了系统运行中可能的执行路径,加大了测试用例选取的难度和数量。
多态性为软件测试带来的问题目前仍然是研究的重点及难点之一。
面向对象系统与面向过程系统的测试有着许多类似之处,例如,它们都具有相同的目标,即保证软件系统的正确性,不仅保证代码的正确性,也要保证系统能够完成规定的功能;它们也具有相似的过程,例如测试用例的设计、测试用例的运行、实际结果与预期结果的比较等。
虽然传统测试的理论与方法有不少都可用于面向对象的测试中,但毕竟面向对象软件的开发技术和运行方式与传统的软件有着较大的区别。
面向对象开发技术与传统的开发技术相比,新增了多态、继承、封装等特点,这些新特点使得开发出来的程序,具有更好的结构、更规范的编程风格,极大地优化了数据使用的安全性,提高了代码的重用率。
面向对象的软件测试方法及实践面向对象编程是一种重要的编程方法。
在面向对象的软件开发中,测试也是一个至关重要的环节,它可以有效地发现程序的缺陷,并确保程序的正确性和稳定性。
然而,面向对象的软件测试方法与传统的测试方法有着很大的不同。
本文将就面向对象的软件测试方法及实践的相关问题进行探讨。
一、面向对象的软件测试方法在面向对象的软件测试中,测试重点是对象的行为。
这与传统的测试方法不同,传统的测试方法重点是函数和子程序。
因此,在面向对象的软件测试中,测试的粒度更加细致,测试的内容更加全面。
面向对象的软件测试方法通常包括以下几个方面:1. 单元测试单元测试是指对系统中最小的可测试单元进行测试。
在面向对象的软件测试中,单元测试是对对象的方法进行测试。
单元测试是测试的第一步,它可以有效地发现程序的错误,还可以帮助开发人员快速地发现错误并修正它们。
单元测试通常由开发人员进行,他们会编写测试用例并运行单元测试,以确保代码的正确性。
2. 集成测试集成测试是指在完成单元测试后,将各个部分集成起来测试整个系统。
在面向对象的软件测试中,集成测试是测试对象之间的交互行为。
集成测试可以发现不同对象之间的复杂关系,以及在集成过程中可能存在的问题。
集成测试通常由测试人员进行,他们会编写和运行测试用例,以确保整个系统的正确性。
3. 系统测试系统测试是指在完成集成测试后,对整个系统进行测试。
在面向对象的软件测试中,系统测试是对系统的交互行为进行测试。
系统测试可以确保整个系统的正确性、稳定性和性能。
系统测试通常由测试人员进行,他们会编写和运行测试用例,以确保整个系统的正确性。
4. 用户验收测试用户验收测试是指在完成系统测试后,由最终用户对系统进行测试。
在面向对象的软件测试中,用户验收测试是测试系统是否满足用户的需求。
用户验收测试可以发现系统与用户的交互是否流畅,并帮助开发人员修正不足。
用户验收测试由最终用户进行。
二、面向对象的软件测试实践1. 编写测试用例编写测试用例是面向对象的软件测试实践的第一步。
面向对象的类测试技术研究摘要:类是面向对象软件的基本构成单元,类测试是面向对象软件测试的关键。
从基于服务的、基于对象动态测试模型的、基于流图的四个方面论述了类测试的思想和方法。
关键词:面向对象软件测试类类测试1 面向对象软件的类测试类的概念是面向对象程序设计的核心概念。
把数据和对象的操作和处理封装在一个程序模块中的方法,可以说是人们积几十年程序设计实践的经验总结。
把程序以类的形式组织成若干模块,使其获得了最佳的结构特性,类的概念的引入使程序设计技术发生了革命性的转变。
从结构程序设计中以函数作为程序的基本模块转变为面向对象程序设计中,以类作为程序的基本模块,这一变化使程序设计技术出现了质的飞跃。
类的概念抓住了程序的本质。
程序的基本元素是数据,而函数是围绕数据进行的处理和操作。
类的使用使得:程序设计本身更有条理了;程序的可读性好了:程序设计的过程真正像是机器部件的组装;程序由多个程序员设计变得方便和自然;由于程序的零部件化,使得程序的可重用性变成切实可行的事情。
正是由于面向对象软件构件的基础是类,所以类的测试显得尤为重要。
类测试是面向对象软件测试的关键。
面向对象软件的类测试与传统软件的单元测试相对应,但和传统的单元测试不一样。
类测试时不仅要将操作作为类的一部分,同时要把对象与其状态结合起来,进行对象状态行为的测试。
类的测试按顺序分为以下三个部分:(1)基于服务的测试:测试类中的每一个方法;(2)基于状态的测试:考察类的实例在其生命周期各个状态下的情况;(3)基于响应状态的测试:从类和对象的责任出发,以外界向对象发送特定的消息序列的方法来测试对象的各个响应状态。
2 类测试技术(1)基于服务的类测试技术基于服务的类测试主要考察封装在类中的一个方法对数据进行的操作。
它可以采用传统的白盒测试方法,如:控制流测试、数据流测试、循环测试、排错测试、分域测试等。
但由于受面向对象软件测试技术发展水平等方面因素的限制,测试人员在选择测试用例时往往都是根据直觉和经验来进行,给测试带来很大的盲目性;再者由于测试人员的个性及倾向性也使得选择的测试用例仅能测试出其所熟悉的某一方面的错误,许多隐含的其它错误不能被检测出来,这在无形中降低了软件的可靠性。
面向对象技术在软件开发中的应用随着计算机技术的发展和计算机的广泛应用,软件应用越来越广泛,人们对于软件开发的要求也越来越高。
在软件开发中,面向对象技术被广泛应用,成为开发的重要手段之一。
本文将详细介绍面向对象技术在软件开发中的应用。
一、面向对象技术的概念面向对象技术是一种基于对象的程序设计方法,它将系统看作一组对象的集合,每个对象都有自己的状态和行为,通过对对象的状态和行为进行抽象和封装,实现代码的重用和更好的可维护性。
面向对象技术主要包括以下三个特性:封装:在面向对象技术中,每个对象都有自己的数据和方法,并将其封装起来,以避免其他对象直接访问和改变它们的值。
继承:通过继承可以将一个类的属性和方法继承到另一个类中,实现代码的复用,减少代码的冗余。
多态:多态是指同一种方法可以被不同的对象以不同方式调用,通过多态可以提高代码的可扩展性。
二、面向对象技术在软件开发中有以下几个常见的应用:1.面向对象分析(OOA)面向对象分析(OOA)是一种软件开发方法,其主要目的是将问题域转换为面向对象的模型。
通过面向对象分析,可以将需求变成可执行的模型,同时有效的抵制需求波动造成的影响。
在OOA中,首先需要对问题进行分析,确定系统的需求和功能,然后通过细化这些需求和功能,逐步将其转化为面向对象的模型。
最终得到的模型就可以直接映射到程序代码中。
2.面向对象设计(OOD)面向对象设计(OOD)是一种根据面向对象技术的相关规定对编程进行设计的方式。
这种设计方式将业务领域中的复杂性进行分析与设计,将其转化为面向对象的模型。
在面向对象设计中,首先要创建一个类图,根据需求,在类图上添加所需的类,然后建立类之间的关系。
在建立好类图之后,开始设计每个类的成员方法和属性,最终得到模型,可以直接映射到程序代码中。
3.面向对象编程(OOP)面向对象编程(OOP)是一种开发应用程序的编程技术,通过面向对象编程,可以将任务的操作对象看作是一个独立的对象。
面向对象的软件测试技术(转)面向对象的软件测试技术相关知识点-面象对象(=objectoriented)技术1.对象和类l面象对象的编程语言:以对象为中心,以消息为驱动,程序=对象+消息l类就是一种代莱数据类型,就是设计的核心,就是通过抽象数据类型的方法去同时实现的一种数据类型l类是对某一对象的抽象,对象是某一类的实例,两者密切相关2.PCB、承继和多态性(1)封装:把数据和操作结合一体,使程序结构更加紧凑,避免了数据紊乱带来的调试与维护的困难(2)承继:可以从一个类衍生至另一个类,派生类承继了父类和祖先类的数据成员和函数,减少了软件的可扩充性,并为代码器重提供更多了强有力的手段(3)多态性:多种表现形式,可以用‘一个对外接口,多个内在实现方法’表示。
一.面向对象测试模型1.面向对象测试的分类依据面向对象研发模型(面向对象分析、面向对象设计、面向对向编程),分成:(1)面向对象分析的测试(ooatest)、面向对象设计的测试(oodtest):是对分析结果和设计结果的测试,主要对分析设计产生的文本进行的,是软件开发前期的关键性测试(2)面向对象编程的测试(ooptest):对编程风格和程序代码同时实现展开测试,主要的测试内容在oounittest和oointegratetest中彰显(3)面向对象单元测试(oounittest):对程序内部具体单一的功能模块的测试,主要对类成员函数的测试,是oointegratetest的基础(4)面向对象内置测试(oointergratetest):对系统内部的相互服务展开测试,例如成员函数间的相互作用,类间的消息传递。
不仅必须基于oounittest,还要参照ood、oodtest的结果(5)面向对象确认测试(oosystemtest)、面向对象系统测试(oosystemtest):最后阶段的测试,以用户需求为测试标准,借鉴ooa、ooatest的结果二.面向对象软件的测试策略1.面向对象分析的测试(1)面向对象分析是把e-r图和语义网络模型,即信息造型中的概念,与面向对象程序设计语方中的重要概念结合在一起而形成的分析方法。
面向对象的软件测试技术综述随着软件应用范围的不断扩大,软件测试的技术手段也不断进步。
面向对象的软件开发思想逐渐被广泛采用,因此,面向对象的软件测试技术也应运而生。
本文将综述面向对象的软件测试技术。
一、面向对象软件测试的概念面向对象的软件测试是针对采用面向对象开发思想的软件进行的测试。
与传统的结构化软件测试相比,面向对象软件测试更加注重对软件内部各个部分之间的关系的测试,并且更加关注软件的继承、重载、多态等特性的测试。
二、面向对象软件测试的方法1. 黑盒测试方法对于面向对象的软件测试中的黑盒测试方法,测试人员仅考虑输入与输出,而不关心系统内部的具体实现。
黑盒测试方法可以通过参照生成测试用例的过程,来完成对程序的测试覆盖。
2. 白盒测试方法白盒测试方法则针对系统内部的具体实现进行测试。
它主要通过静态和动态两种方式进行测试,其中静态分析主要是通过代码分析或模型检查等方式,而动态分析则通过运行测试用例,观察程序执行流程和变量变化等方式进行测试。
3. 增量式测试方法对于大型的面向对象软件开发,其测试过程可能需要相当长的时间,增量式测试方法就可以有效缩短测试时间。
增量式测试方法是指将整个系统分成几个部分,然后逐渐增加到完整的系统环境。
这不仅能够逐步发现bug,还能够及时修复,并能逐步提高测试用例的质量。
三、面向对象软件测试的技术手段1. 测试驱动开发(TDD)测试驱动开发是一种基于测试驱动的软件开发方法,它强调在实现代码之前,先编写测试程序,以确保所编写的代码能够满足测试需要。
TDD可以提高测试的自动化程度,逐步提高测试用例的品质,并减少未发现的bug出现次数。
2. 自动化测试自动化测试是一种通过编写脚本和使用自动化测试工具来执行测试用例和比较结果的测试方法。
自动化测试可以将部分测试自动化,减轻测试压力,消除人为测试误差,并且提高测试的效率和准确度。
3. 模拟测试人工模拟测试是一种指人员通过编制人工操作流程,在应用程序的界面进行手动测试的方法,而计算机模拟测试是一种通过编写程序模拟系统功能和用户操作的测试方法,在这种测试方法中,测试人员可以对系统进行多次重复测试,大大提高了测试的效率。