第一章:1.软件测试概念:(广义)指软件生存周期中所有的检查、评审和确认工作,其中包括了对分析、设计阶段,以及完成开发后维护阶段的各类文档、代码的审查和确认。
(狭义)识别软件缺陷的过程,即实际结果与预期结果的不一致。
2.软件测试目的:测试的目的就是发现软件中的各种缺陷,(证明程序有错,而不是证明程序无错)确保软件的功能符合用户的需求,把尽可能多的问题在交付前发现并改正。
3.软件测试的分类:1)按测试范围分类:单元测试,组件测试,集成测试,系统测试,验收测试,安装测试2)按测试目的分类:正确性测试,白盒测试,黑盒测试,性能测试,可靠性测试,强壮性测试,异常处理测试,负载测试,安全性测试3)按测试过程分类:需求阶段的测试,设计阶段的测试,程序阶段的测试,测试结果的评估,安装测试,验收测试,测试变化4.软件测试的步骤:1)制定测试计划2)设计测试用例3)执行测试4)撰写测试报告5)消除软件缺陷。
如果测试输出符合预期结果,则结束测试。
第二章:1.SQA(软件质量保证)概念:软件质量保证(Software Quality Assurance)是通过对软件产品和活动有计划的进行评审和审计来验证软件是否合乎标准的系统工程。
2.SQA与软件测试的关系:1)SQA是管理工作、审查对象是流程、强调以预防为主2)测试是技术工作、测试对象是产品、主要是事后检查3)SQA指导测试、监控测试,测试为SQA提供依据3.软件质量标准:1)国际标准,如ISO/TC97(1)质量保证标准(ISO9001/2/3)(2)质量管理标准(ISO9004)2)国家标准,如GB3)行业标准,如IEEE4)企业标准,如IBM5)项目规范4.CMM(软件能力成熟度模型):capability maturity model for software1)CMM概念:CMM不仅仅是对软件开发的过程进程管理,还是一种高效的管理方法,有助于企业最大程度的降低成本,提高质量和用户满意度;与软件工程不同的是,CMM是对于企业软件开发的整个过程进行全方位的考察与评估,甚至包括了对于开发人员的管理、文档的管理以及对开发人员素质的评估2)CMM五级模型:初始级可重复级定义级定量管理级(不断)优化级第三章:1.白盒测试:1)概念:白盒测试(White-box Testing),有时称为玻璃盒测试(Glass-box Testing),是一种基于源程序或代码的测试方法,他根据被测试程序的内部结构或内部逻辑来产生测试用例。
2)分为静态和动态两种类型。
静态:即代码检查法。
按一定步骤直接检查源代码来发现错误,而不用生成测试用例并驱动被测程序运行来发现错误。
包括:桌面检查代码审查走查动态:按一定的步骤生成测试用例并驱动被测程序运行来发现错误。
包括:基本路径测试条件测试数据流测试循环测试(3)代码检查法与其他方法的不同之处:不执行代码。
第四章:1.黑盒测试:1)概念:把被测软件看成一个封闭的盒子,在完全不考虑软件内部逻辑和内部结构的情况下进行的测试。
2)基本测试方法:**等价类划分法**边界值分析法(重点,最好看一看PPT)基本思想:*对于每个边界点,在该点附近确定大小为1的邻域,并直接取略高于其值的点和略低于其值的点作为测试数据。
*不考虑无效数据。
*不考虑输入条件的边界组合情况。
案例分析-三角形问题:三角形问题接受三个整数a、b、c作为输入,代表三角形的三条边。
a,b,c必须满足以下条件:C1.1<=a<=200C2.1<=b<=200C3.1<=c<=200C4.a<b+cC5.b<a+cC6.c<a+b程序的输出是由这三条边确定的三角形类型:等边三角形等腰三角形不等边三角形非三角形案例分析:三角形问题的最坏情况测试用例:*三个变量:a,b,c*产生5^3=125个测试用例*存在大量冗余**因果图法(重点)(1) 定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。
(2) 因果图法是基于这样的一种思想:一些程序的功能可以用判定表(或称决策表)的形式来表示,并根据输入条件的组合情况规定相应的操作(3) 采用因果图法设计测试用例的步骤:1.根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图。
2.将得到的因果图转换为判定表。
3.为判定表中每一列所表示的情况设计一个测试用例**判定表法**正交试验法**错误推测法第五章:1.测试的总体流程:2.软件测试的生命周期以及如何演化:V模型:W模型:H模型:W,H,V模型之间的区别:V模型: 强调了在整个软件项目开发中需要经历的若干个测试级别,并与每一个开发级别对应;但是忽略了测试的对象不应该仅仅包括程序,仅把测试作为在需求分析、系统设计及编码之后的一个阶段,没有明确指出对需求、设计的测试。
W模型: 相对于V模型,增加了软件各开发阶段中应同步进行的验证和确认活动,强调了测试计划等工作的先行和对系统需求和系统设计的测试;与V模型相同,没有对软件测试的流程进行说明,无法支持迭代的开发模型。
H模型: 强调测试是独立的,只要测试准备完成,就可以执行测试1.单元测试:1)概念:单元测试,对单个的软件单元或者一组相关的软件单元所进行的正确性检验的测试,是代码级的测试,需要测试者非常清楚代码内部结构。
2)有哪些单元测试的的自动化工具:C/C++:CppUnit,C++Test,Visual Unit,Java:JUnit,JUnit-addons,Spring 测试框架,DJUnit3)适用于单元测试的测试方法:面向单元的白盒测试(单元覆盖率测试)面向单元的黑盒测试(单元功能测试)内存和运行错误分析代码运行性能4)测试驱动以及重构的理念:测试驱动开发:测试先于设计开发以测试为导向编写单元测试用例促进解除模块之间的耦合。
先编写测试用例,强迫自己从利于调用者的角度来设计单元,关注单元的接口。
为了便于调用和独立测试,必须降低单元和周边环境的耦合程度,单元的可测试性得到加强,模块化程度得到提高。
这样单元的可重用性也容易被考虑和提高。
重构:测试用例数量是逐步增加的,软件功能也在此过程中得到增强、更新和优化。
当新的需求变化到来时,测试用例被增加或修改,难以适应测试用例的软件单元被重构。
经常发生变化的测试用例和软件模块被重视和分离出来,进行重构和优化,使它们更加容易应付需求的变化。
第七章:1.功能测试:1)基本概念:任何程序都可以看作是将从输入定义域取值映射到输出值域的函数。
属于黒盒测试的范畴,不考虑软件内部的具体实现过程,只需要知道输入和预期输出。
主要是根据产品需求说明和测试需求,验证产品是否符合需求规格的测试。
2)功能测试的方法:功能分解等价类划分边界值分析因果图法其他测试方法1.性能能测试的基本方法:对于企业级的系统,有许多进行性能测试的方法,主要有:基准测试性能规划测试渗入测试峰谷测试2.性能测试的基本概念:以测试软件性能和优化系统为目的,利用自动化工具模拟真实用户来操作系统以发现系统瓶颈的测试过程。
3.两种负载测试:(“Flat”测试和“Ramp-up”测试)1)基本概念:“Flat”测试:加载所有的用户,取响应时间和吞吐量的平均值。
然后在预定的时间段内持续运行。
这称为“flat”测试。
“Ramp-up”测试:用户是交错上升的(每几秒增加一些新用户)。
ramp-up测试不能产生精确和可重现的平均值,可以看出随着系统负载的改变,测量值是如何改变的。
2)如何将两者结合的测试:结合两种负载类型的优点,并运行一系列的测试,就会产生最好的结果。
如,首先使用ramp-up测试确定系统可以支持的用户范围。
确定了范围之后,以该范围内不同的并发用户负载进行一系列的flat测试,更精确地确定系统的容量。
3)压力测试:压力测试是在一种需要反常数量、频率或资源的方式下,执行可重复的负载测试,以检查程序对异常情况的抵抗能力,找出性能瓶颈。
容量测试:面向数据的,在系统正常运行的范围内,通过测试确定系统能够处理的数据极限值,也就是观察系统承受超额的数据容量的能力。
容错性测试:容错性测试是检查软件在异常条件下自身是否具有防护性的措施或者某种灾难性恢复的手段。
容错性测试包括两个方面:(1)输入异常数据或进行异常操作,以检验系统的保护性。
性能测试的基本方法:负载测试故障转移测试压力容量安全性可靠性容错性测试第九章:集成测试的概念:组装测试或者联合测试。
在单元测试的基础上,将所有模块按照设计要求集成子系统或者系统,进行测试。
1.集成测试与单元测试的区别:2.集成测试的方法(这几种的区别,以及使用的方面):1)自顶向下法。
优点:*不需要测试驱动程序;*能够在测试阶段的早期实现并验证系统的主要功能;*能在早期发现上层模块中的接口错误。
缺点:*需要桩程序,要使桩模块能够模拟实际子模块的功能十分困难;*同时涉及复杂算法,真正输入/输出的模块一般在底层,他们是最容易出问题的模块,到测试和集成的后期才遇到这些模块,一旦发现问题导致过多的回归测试。
2)自底向上法。
自底向上法,测试从原子模块(软件结构最底层的模块)开始集成以进行测试。
与自顶向下法刚好相反。
优点:不需要桩程序;同时由于涉及到复杂算法和真正输入/输出的模块最先得到集成和测试,可以把最自底向上增值的方式可以实施多个模块的并行测试,提高测试效率。
缺点:“程序一直未能作为一个实体存在,直到最后一个模块加上去后才形成一个实体”。
也就是说,在自底向上集成和测试的过程中,对主要的控制直到最后才接触到。
3)混合策略:对软件结构中较上层,使用的是“自顶向下”法;对软件结构中较下层,使用的是“自底向上”法,两者相结合3.桩程序,驱动程序的概念以及与自顶向下法,自底向上法的关系。
桩程序:桩程序/桩模块(stub),也有人称为存根程序,用以模拟被测模块工作过程中所调用的模块。
驱动程序:驱动程序/驱动模块(driver),用以模拟被测模块的上级模块。
与自顶向下法,自底向上法的关系:自顶向下法不需要测试驱动程序,需要桩程序。
自底向上法不需要桩程序。
3.集成测试分为哪两种模式:1)非渐增式测试模式(一次性集成)概念:先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序,如:大棒模式。
2)渐增式测试模式。
概念:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试。
如:自顶向下集成;自底向上集成;“三明治”集成法。
第十章:1.系统测试的概念:与计算机硬件、某些支持软件、数据和人员等系统元素结合起来,在实际运行环境下对计算机系统进行一系列严格有效的测试来发现软件的潜在问题,保证系统的运行。