发布新日志

  • 51、面向对象编程的测试(OOP)

    2009-04-12 10:54:36

    51、面向对象编程的测试(OOP

    面向对象程序是把功能的实现分布在类中。能正确实现功能的类,通过消息传递来协同实现设计要求的功能。正是这种面向对象程序风格,将出现的错误能精确地确定在某一具体的类。

    因此,忽略类功能实现的细则,将测试的目光集中在类功能的实现和相应的面向对象程序风格上,主要体现在两个方面:

    1、数据成员是否满足数据封装的要求。

    数据封装是数据和数据有关的操作的集合。检查数据成员是否满足数据封装的要求,基本原则是数据成员是否被外界(数据成员所属的类或子类以外的调用)直接调用。当改变数据成员结构时,是否影响了类的对外接口,是否会导致相应的外界必须改动。有时强制的类型转换会破坏数据的封装性;

    2、类是否实现了要求的功能。

    类所实现的功能都是通过类的成员函数执行的,应改首先保证类成员函数的正确性。在单元测试中去验证类成员函数的正确性。类成员函数的正确行为只是类能够实现要求的功能的基础,类成员函数间的作用和类之间的服务调用是单元测试无法确定的,需要进行集成测试,还要检测类提供的功能是否满足设计的要求;

  • 软件测试知识 4

    2009-03-06 22:42:52

    39、软件风险分析

    风险分析是对潜在的问题识别和评估的过程,即对测试的对象进行优先级划分;包括两部分:

    (1)       发生问题的可能性

    (2)       影响严重性

    40、测试用例划分-等价类划分

    等价类划分为两种情况:有效等价类和无效等价类。

    有效等价类:指对于程序的规格说明来说是合理的、有意义的输入数据构成的继承。利用有效等价类用来检验程序是否实现了规格说明中所规定的功能和性能。

    无效等价类:与有效类相反。

    41、确定等价类的原则:

    (1)在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类;

    (2)在输入条件规定了输入值的集合或规定了“必须如何”的条件的情况下,可以确定一个有效等价类和一个无效等价类。

    (3)在输入条件是一个布尔量的情况下,可以确定一个有效等价类和一个无效等价类;

    (4)在规定了输入数据的一组值(n),并且程序要对每一个输入值分别处理的情况下,可以确定n个有效等价类和一个无效等价类;

    (5)在规定了输入数据必须遵守的规则的情况下,可确定一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)

    (6)在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步划分为更小的等价类;

    42、测试用例划分-边界值分析法

    1)边界条件

    2)次边界条件

    43、因果图设计方法

    因果图法是从用自软语言书写的程序规格说明书的描述中找出因(输入条件)和果(输出或程序状态的改变),通过因果图转换为判定表。

    利用因果图设计测试用例的方法:

    (1)               分析程序规格说明的描述,原因常常是输入条件或是输入条件的等价类,而结果是输出条件。

    (2)               分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的‘因果图’。

    (3)               表明约束条件。在因果图上使用若干个标准的符号标明约束条件。

    (4)               把因果图转换成判定表。

    (5)               为判定表中的每一列表示的情况设计测试用例。

    44、因果图表示方法

    通常在因果图中,用Ci表示愿应,Ei表示结果。各节点表示状态,“1表示出现,“0” 表示不出现;

    恒等:若原因出现,则结果出现,若原因不出现,则结果不出现;

    非:(~)若原因出现,则结果不出现,若原因不出现,则结果出现;

    ():若几个原因中有1个出现,则结果出现,若几个原因都不出现,则结果不出现;

    ():若几个原因都出现,结果才出现,若其中有1个原因不出现,则结果不出现;

       原因与原因,结果结果之间的约束条件:

    E(互斥):表示两个原因不会同时成立,两个中最多有一个成立;

    I(包含):表示3个原因中至少有一个必须成立;

    O(唯一):表示两个原因中必须有一个,且仅有一个成立;

    R(要求):表示a出现时,b必须也出现,a出现时不可能b不出现;

    M(屏蔽):表示当a1时,b必须是0,而当a0时,b的值不定;

    45、判定表驱动法

    判定表由四部分组成:

    (1)       条件桩:列出了问题的所有条件。

    (2)       动作桩:列出了问题规定可能采取的操作。

    (3)       条件项:列出了针对它所有列条件的取值,在所有可能情况下的真假值。

    (4)       动作项:列出在条件项的各种取值情况下应该采取的动作。

    (5)       规则:任何一个条件组合的特定取值及其相应要执行的操作。

    适合使用判定表设计测试用例的条件:

    (1)       规格说明以判定表的形式给出,或很容易转换成判定表;

    (2)       条件的排列顺序不影响执行哪些操作;

    (3)       规则的排列顺序不影响执行那些操作;

    (4)       当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则;

    (5)       如果某一规则要执行多个操作,这些操作的执行顺序无关紧要。

    46、功能图法

    一个程序的功能说明通常由动态说明和静态说明组成。动态说明描述了输入数据的次序或转移的次序。静态说明描述了输入条件与输出条件之间的对应关系。

    功能图方法是用功能图形象地表示程序的功能说明,并机械地生成功能图的测试用例。功能图模型由状态迁移图和逻辑功能模型构型。

    47、测试方法选择的综合策略

    1)进行等价类划分,包括输入条件和输出条件的等价划分。

    2)在任何情况下都必须使用边界值分析方法。

    3)可以用错误推断法追加一些测试用例,这需要靠经验和智慧。

    4)对照程序逻辑,检查自己设计出的测试用例的逻辑覆盖程度。如果没有达到要求,则补充足够的测试用例。

    5)如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法和判定驱动法。

    6)对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳效果。

    7)功能图法也是很好的测试用例设计方法,我们可以通过不同时期条件的有效性设计不同的测试数据。

    8)对于业务流清晰的系统,可以利用场景法贯穿整个测试案例过程,在案例中综合使用各种测试方法。

  • 软件测试知识(3)

    2009-02-25 23:16:19

    32ISO9126质量模型

    功能性:适合性,准确性,互操作性,依从性,安全性;

    可靠性:成熟性,容错性,意恢复性;

    意使用性:易理解性,易学习性,易操作性

    效率:时间特性,资源特性;

    可维护性:易分析性,易更改性,稳定性,易测试性;

    可移植性:适应性,易安装性,一致性,易替换性;

    33、质量途径

    过程质量有助于提高产品质量,而提高产品质量有助于提高使用质量。因此,评估和改善过程是提高产品质量的一种手段,而评价和改进产品质量是提高使用质量的一种方法。

     

    34、软件产品质量需求包括内部质量、外部质量和使用质量。

    35、外部质量和内部质量的质量模型

    1、功能性

    适合性;准备确性;互操作性;保密安全;功能性依从性。

    2、可靠性

    成熟性;容错性;易恢复性;可靠性依从性。

    3、易用性

    易理解性;易学性;易操作性;吸引性;易用性依从性。

    4、效率

    时间特性;资源利用性;效率依从性。

    5、维护性

    易分析性;易改变性;稳定性;易测试性;维护性依从性。

    6、可移植性

    适应性;易安装性;共存性;易替换性;可移植性依从性。

    36、使用质量的质量模型

    有效性;生产率;安全性;满意度。

     

    37、测试组织管理者必须具备

    理解与评价软件测试政策、标准、过程、工具、培训和度量的能力;

    领导一个测试组织的能力,该组织必须坚强有力、独立自主、办事规范没有偏见;

    吸引并留住杰出测试专业人才的能力;

    领导、沟通、支持和控制的能力;

    测试时间、质量和成本控制的能力;

    38、测试人员的选择

    一般能力:表达,交流,协调,管理,质量意识,过程方法,软件工程等;

    测试技能及方法:测试基本概念及方法,测试工具及环境,专业测试标准,工作成绩评估等;

    测试规划能力:包括风险分析及防范,软件放行/接收准则制定,测试目标及计划,测试计划和设计的评审方法等;

    测试分析,报告贺改进能力:包括测试度量,统计技术,测试报告,过程检测及持续改进。

  • 软件测试知识(2)

    2009-02-14 23:16:44

    15、集成测试组装时要考虑的问题?

    也叫组装测试或联合测试;

    1.       在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;

    2.       一个功能模块是否会对另一个功能模块产生不利影响;

    3.       各个子功能模块累计起来,能否达到预期的父功能;

    4.       全局数据结构是否有问题;

    5.       单个模块的误差是否会累计放大;

    16、部件测试

    子系统的集成测试成为部件测试。是检查组装后子系统与系统需求的不一致。

    17、模块组装为系统的方式有两种?

    1.一次性组装方式(big bang)

    2.增值式组装方式:自顶向下(深度优先或广度优先的策略进行测试),自底向上,混合增值。

     

    18、集成测试应当确定关键模块

    在集成测试时应当对关键模块进行及早的测试,关键模块的特征如下:满足某些软件需求;在程序模块中位于较高的层次(高层控制模块);较复杂、较易发生错误;有明确定义的性能要求。

     

    19、集成测试的组织和实施

    制定集成测试计划时应该考虑如下因素:采用何种系统组装方法来进行集成测试;集成测试过程中连接各个模块的顺序;模块代码编制和测试进度是否与集成测试的顺序一致;测试过程中是否需要专门的硬件设备。

     

    20、软件实效分类

    软件错误(software error):是一种人为的错误,导致软件缺陷的产生;

    软件缺陷(software defect):软件缺陷是存在于软件之中的不希望或不可接受的偏差,其结果是使软件运行于某一特定条件时出现软件故障,这个时候软件缺陷被激活;

    软件故障(software fault):是指软件运行过程中出现的一种不希望或不可接受的内部状态。如无适当处理便产生软件失效。软件故障是一种动态行为;

    软件失效(software failure):是软件运行时产生的一种不希望或不可接受的外部行为结果;

    软件实效机理:软件错误-软件缺陷-软件故障-软件失效;

    21、失效强度

    失效强度表示每个自然单元出现的失效数目;是表示可靠性的另一种形式;

    22、错误与缺陷的分布

    需求:56%;设计:27%;代码:7%;其他:10%

     

    23、自动化测试的优势

    1.提高测试质量

    2.提高测试效率

    3.提高测试覆盖率

    4.执行手工测试不能完成的测试任务

    5.更好的重现软件缺陷的能力

    6.更好的利用资源

    7.增进测试人员与开发人员之间的合作伙伴关系

     

    24、适合使用自动化测试工具的环境

    1.需要反复进行的工作

    2.负载压力测试

    3.公司有大量的测试人员和开发人员

    4.如果需要进行测试系统后台或者内部的性能特性,进而进行故障定位和性能调优。

     

    25、自动化测试工具的局限性不适用于

    1、定制的项目

    2、周期很短的项目

    3、业务规则复杂的对象

    4、人体感观与易用性测试

    5、不稳定的软件

    6、涉及物理交互

     

    26、自动化测试应用策略

    1.提高测试质量

    2.减少测试过程中的重复劳动

    3.实现自动化,解决手工测试不能解决的问题

    4.选择合适的自动化测试工具

    5.确定测试工具的应用时机

    6.确定测试重点

    7.确定测试目标和指标

    8.充分利用测试工具的优势

    9.加强对测试工程师的技能培训,测试工具的使用者必须对测试工具非常了解

     

    27、功能自动化测试工具的两种录制模式

    1.环境判断模式:根据你选取得图形用户界面对象,把你对软件的操作动作录制下来,并忽略这些对象在屏幕上的物理位置。

    2.模拟模式:记录鼠标点击、键盘输入和鼠标在二维平面图上的精确运动轨迹。

     

    28、负载压力测试

    负载测试:是为了证明在与产品规模等同的数据库中处理给定的事务请求的容量下,系统功能与性能是否与需求规格说明书中规定的,可接受的响应时间一致的测试过程。

    压力测试:是使客户机在大容量情况下运行的测试过程,目的是查看应用将在何时出现中断,即识别系统的薄弱环节。压力测试中可能暴露的系统缺陷有内存缺陷,系统资源过量消耗、磁盘空间用完等。

    29、进行脚本录制与分配的过程中,应该遵循

    1.脚本越小越好,尽量做到一个功能一个脚本。

    2.选择负载压力最高的业务功能进行测试。

    3.选择所需要的操作进行录制。

    30、测试工具模拟多用户并发访问有两种方式

    1.进程回放模式:客户端与服务器的访问采用进程方式,每一个虚拟用户通过一个进程建立与服务器的通信连接并访问。

    2.线程回放模式:客户端与服务器的访问采用线程方式,每一个虚拟用户通过一个线程建立与服务器的通信连接并访问。

    31、录制脚本的回访模式的步骤

    1.协议选择

    2.创建测试脚本

    3.参数化测试数据

    4.创建虚拟用户

    5.执行测试

    6.分析测试

  • 软件测试知识(1)

    2009-02-14 23:13:35

    1、软件测试的定义:

    在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估。      

    2、软件是由文档、数据和程序组成。

    3、软件质量包括

    “内部质量”,“外部质量”和“使用质量“三部分。软件满足规定或潜在用户需求的能力要从内部、外部和使用中的表现来衡量。

    4、软件测试与质量保证的区别?

    软件测试是对过程的产物以及开发出的软件进行剖析,质量保证是着眼于软件开发活动中的过程、步骤和产物,不是对软件进行剖析找出问题和评估

     

    2009-2-8

    5、软件测试的原则:

    所有的软件测试都应追溯到用户需求;

    应该把“最早地和不断进行软件测试”作为软件测试者的座右铭;

    完全测试是不可能的,测试需要终止;

    测试无法显示软件潜在缺陷;

    充分注意测试中的群集现象;

    程序员应该避免检查自己的程序;

    尽量避免测试的随意性;

     

    6、按照开发阶段分软件测试:

    单元测试:单元测试又称模块测试,是针对软件设计的最小单位——程序模块进行正确性的检验的测试工作。

    集成测试:集成测试也叫组装测试。通常在单元测试的基础上将所有的程序模块进行有序、递增的测试。是检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或整个系统。

    系统测试:系统测试是在真实或模拟系统运行的环境下,检查完整的程序系统能否和系统(软硬件及网络等)正确配置、连接,并满足用户需求。

    确认测试:确认测试是通过检测和提供客观证据,证实软件是否满足特定预期用途的需求,使检测与证实软件是否满足软件需求规格说明书中规定的要求。

    验收测试:按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。

     

    7、按照测试实施组织划分软件测试:

    开发方测试:

    用户测试(Beta测试):用户测试不是指验收测试,而是指在用户的环境下,用户的使用性测试。

    第三方测试:独立测试。

     

    8、按照测试技术划分软件测试:

    白盒测试:

    黑盒测试:

    灰盒测试:

     

    9、测试过程序需要三类输入:

    软件配置:包括软件需求规格说明书,软件设计规格说明,源代码等。

    测试配置:包括测试计划,测试用例,测试驱动程序等。

    测试工具:

     

     

    10、测试信息流:

     

    软件配置、                       测试结果

    测试配置、           测试                    测试结果分析                     排错

    测试工具                         预期结果                                            根据出错率可靠性分析

     

     

     

    11、编写良好的需求说明书8条原则

    1.功能与实现分离;

    2.要求使用面向处理的规格说明语言,讨论来自环境的各种刺激可能导致系统作出什么样的反应;

    3.如果目标软件只是一个大系统中的一个元素,那个整个大系统也包括在规格说明的描述之中。描述该目标软件与系统的其他元素之间的交互方式;

    4.规格说明必须包括系统的运行环境;

    5.系统规格说明必须是一个认识的模型,而不是设计或实现的模型;

    6.规格说明必须是可操作的;

    7.规格说明必须允许不完备性并允许扩充;

    8.规格说明必须局部化和松散的耦合;(它所包括的信息必须局部化,这样当信息被修改时,只要修改某个单位的段落。被松散的构造能够很容易地加入和删除一些段落。)

     

    2009-2-9

    12、单元测试需要在五个方面对所测模块进行检查。

    1.模块接口:在单元测试开始,应对通过所测模块的数据流进行测试。如果数据不能够正确地输入输出则无法测试。

    对模块接口可能需要如下测试项目:调用所测模块时的输入参数与模块的形式参数在个数、属性、顺序上是否匹配;所测模块在调用子模块时,它输入给子模块的参数与子模块中的形式参数在个数、属性、顺序上是否匹配;是否修改了只做输入用的形式参数;输出给标准函数的参数在个数、属性、顺序上是否匹配;全局量的定义在各模块中是否一致;限制是否通过形式参数来传递。

    当模块通过外部设备进行输入/输出操作时,必须附加如下测试项目:文件属性是否正确;OPEN语句与CLOSE语句是否正确;规定的I/O格式说明是否与I/O语句匹配;缓冲区容量与记录长度是否匹配;在进行读写操作之前是否打开了文件;在结束文件操作后是否关闭了文件;正文书写/输入错误,以及I/O错误是否检查并作了处理。

    2.局部数据结构测试:不正确或不一致的数据类型说明;使用尚未赋值或尚未初始化的变量;错误的初始值或错误的缺省值;变量名拼写错误;不一致类型;

    3.路径测试:不可能做到穷举测试,选择重要的执行路径进行测试。应当设计测试用例查找由于错误地计算,不正确的或不正常的控制流而导致的错误。对基本执行路径和循环进行测试,可以发现大量路径错误。

    4.错误处理测试:模块错误处理功能含有缺陷例如:出错的描述难以理解,不足以对错误定位,不足以确定出错的原因;显示的错误信息与实际不符;对错误处理条件的处理不正确;在对错误处理之前,错误处理条件已经引起系统的干预。

    5.边界测试:

    13、驱动模块和桩模块

    驱动模块:相当于测试模块的主程序。她接收测试数据,把这些数据传送给所测模块,最后再输出实测结果。

    桩模块:也叫存根模块。用来代替所测模块的子模块。不需要把子模块的所有功能都带进来,但不能什么也不做。

     

    14、多功能模块的测试

    如果模块要完成多种功能,且以程序包的形式出现也不少,可以把模块看成由几个小程序组成。先对小程序进行测试。

    15、集成测试组装时要考虑的问题?

    也叫组装测试或联合测试;

  • 实际的性能调优过程中最常见的错误

    2008-03-20 10:12:13

    1、没有保证每次执行时数据库具有相同的数据环境。特别是,当执行过一次或多次性能测试之后,数据库中可能增加了许多新的纪录,这时对系统进行调优并在调优后执行性能测试,得到的结果与以前的结果具有不可比较性。

    2、对于某些建立在J2EE应用服务器或是dotNet应用服务器上的应用,在应用服务器需要重启的时候,没有注意在测试之前需要进行一段时间的“预热”。

     

    大部分的J2EE应用服务器和dotNet应用服务器都是用一种在Java中被称为hot-spot的技术,这种技术允许应用服务器在第一次运行应用的时候将字节码编译成本地代码并执行,这样在后续的执行过程中,应用执行速度会大大加快。但对于应用的第一次运行来说,由于需要增加一个将字节编译成本地代码的过程,因此速度会特别慢。如果用这个时间作为应用调优后的响应时间与其结果进行比较,很可能会得出错误的结论。

  • 把响应时间分解可以更好的定位性能瓶颈所在

    2008-03-19 15:30:29

    Web的响应时间可以分解为“网络传输时间”N1+N2+N3+N4和“应用延迟时间”,A1+A2+A3

    “应用延迟时间”可以分解为“数据库延迟时间”A2和“应用服务器延迟时间”A1+A3

     

     

  • 测试与开发的并行性

    2008-02-19 23:41:59

    一旦软件的需求得到确认并通过评审,概要设计工作和测试计划制定设计工作就要并行进行。

    如果系统模块结构已经建立,对各个模块的详细设计、编码、单元测试等工作可以并行进行。

    待每个模块完成后,可以进行集成测试、系统测试。

  • 测试信息流

    2008-02-19 23:33:37

    如图

  • 测试的原则

    2008-02-19 23:15:41

    测试的原则

       

    1、  应把“尽早地和不断地进行软件测试”作为软件开发和测试人员的座右铭。

    2、  测试用例应由测试输入数据和与之对应的预期结果组成。

    3、  在程序提交测试后,程序员应避免检查自己的程序。

    4、  在设计测试用例时,应当包括合理的输入条件和不合理的输入条件

    5、  充分注意测试中的群体现象。

    6、  严格执行测试计划,排除测试的随意性。

    7、  应当对每一个测试结果做全面的检查。

    8、  妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。

  • 测试成熟度模型

    2008-02-19 22:43:54

    测试成熟度模型(Testing Maturity Model

     

    第一级:初始级

     

    第二级:阶段定义级

    目标1:进行测试和调试的目标

    目标2:开始一个测试计划过程

     

    第三级: 集成级

    目标1:建立一个测试组织

    目标2:测试集成进入软件生命周期

    目标3:控制和监测测试过程

     

    第四级:管理和度量级

    目标1:建立一个面向组织的评价程序

    目标2:建立一个技术培训程序

    目标3:建立一个测试度量程序

    目标4:软件质量评价

     

    第五级:优化/缺陷预防和质量控制

    目标1:应用缺陷预防数据过程

    目标2:质量控制

     

     

    测试能力成熟度模型

     

    第一级:初始级

    第二级:可重复级

    第三级:已定义级

    第四级:受管理级

    第五级:优化级

Open Toolbar