1、软件测试经典定义:在规定条件下对程序进行操作,以发现错误,对软件质量进行评估; 2、软件是由文档、数据、程序组成的,软件测试应该是对软件形成过程的文档、数据以及程序进行测试,而不仅仅是对程序进行测试; 3、软件质量保证和软件测试是软件质量工程的两个不同层面的工作; 4、质量保证(QA):质量保证的重要工作通过预防、检查与改进来保证软件质量; 5、软件测试:测试虽然也与开发过程紧密相关,但关心的不是过程的活动,而是对过程的产物以及开发出的软件进行剖析; 6、测试人员通过执行软件,对过程中的产物——开发文档和源代码进行走查,运行软件,以找出问题,报告质量。测试人员必须假设软件存在潜在的问题,测试中所做的操作都是为了找出更多的问题,而不仅仅是为了验证每一件事是正确的。对测试中发现的问题的分析、追踪与回归测试也是软件测试中的重要工作,因此软件测试是保证软件质量的一个重要环节; 7、软件测试目的:测试是程序的执行过程,目的在于发现错误;一个好的测试用例在于能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试; 8、测试的目的:以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险; 9、软件测试原则:所有的软件测试都应追溯到用户需求; 应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭; 完全测试是不可能的,测试需要终止; 10、在有限的时间和资源条件下,软件趋于完美,是不可能的。主要原因有三个: 软件入量太大;输入结果太多;路径组合太多; 11、测试无法显示软件潜在的缺陷; 12、充分注意测试中的群集现象; 13、根据软件定义,软件包括程序、数据和文档,所以软件测试并不仅仅是程序测试; 14、软件测试应贯穿于整个软件生命周期中; 15、在整个软件生命周期中,各阶段有不同的测试对象,形成了不同开发阶段的不同类型的测试; 16、需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应成为软件测试的对象; 17、在软件编码结束后,对编写的每一个程序模块进行测试,称为“单元测试”; 18、在模块集成后,对集成在一起的模块组件进行测试,称为“集成测试”; 19、在集成测试后,需要检测与证实软件是否满足软件需求说明书中规定的要求,称为“确认测试”; 20、将整个程序模块集成为软件系统,安装在运行环境下,对硬件、网络、操作系统及支撑平台构成的整体系统进行测试,称为“系统测试”。 21、验证是保证软件正确性实现特定功能的一系列活动和过程,目的是保证软件生命周期中的每一个阶段的成果满足上一个阶段所设定的目标; 22、确认是保证软件满足用户需求的一系列的活动和过程,目的是在软件开发完成后保证软件与用户需求相符合; 23、按照开发阶段划分软件测试可分为:单元测试、集成测试、系统测试、确认测试和验收测试。 24、单元测试又称模块测试,是针对软件设计的最小单位—程序模块进行正确性检验的测试工作;其目的在于检查每个程序单元能否正确实现详细设计说明中的模块功能、性能、接口和设计约束等要求,发现各模块内部可能存在的各种错误。单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试; 25、集成测试也叫组装测试。通常在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。集成测试是检验程序单元或部件的接口关系,逐步集成为符合概要设计要求的程序部件或整个系统; 26、确认测试:是通过检验和提供客观证据,证实软件是否满足特定预期用途的需求。确认测试是检测与证实软件是否满足软件需求说明书中规定的要求; 27、系统测试:系统测试是为验证和确认系统是否达到其原始目标,而对集成的硬件和软件系统进行的测试。系统测试是在真实或模拟系统运行的环境下,检查完整的程序系统能否和系统(包括硬件、外设、网络和系统软件、支持平台等)正确配置、连接、并满足用户需求; 28、验收测试:按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统与评审,决定是否接收或拒收系统; 29、按照测试实施组织划分,软件测试可分为开发方测试、用户测试(β测试)、第三方测试; 30、开发方测试:通常也叫“验证测试”或“α”测试;开发方通过检测和提供客观证据,证实软件的实现是否满足规定的需求。验证测试是在软件开发环境下,由开发者检测与证实软件的实现是否满足软件设计说明或软件需求说明的要求; 31、用户测试:在用户的应用环境下,用户通过运行和使用软件,检测与核实软件实现是否符合字节集预期的要求。通常情况用户测试不是指用户的验收测试,而是用户的使用性测试,由用户找出软件的应用过程中发现的软件的缺陷与问题,并对使用质量进行评价; 32、第三方测试:介于软件开发方和用户方之间的测试组织的测试。一般情况下是在模拟用户真实应用环境下,进行软件确认测试。 33、按照测试技术划分:白盒测试、黑盒测试、灰盒测试。也可划分为静态测试和动态测试。 34、静态测试:是指不运行程序,通过人工对程序和文档进行分析与检查:静态测试技术又称静态分析技术,静态测试实际上是对软件的需求说明书、设计说明书、程序源代码等进行非运行的检查,静态测试包括:走查、符号执行、需求确认等; 35、动态测试:是指通过人工或使用工具运行程序进行检查、分析程序的执行状态和程序的外部表现; 36、白盒测试:通过对程序内部结构的分析、检测来寻找问题。了解程序结构和处理过程,检查是否所有的结构及路径都是正确的,检查软件内部动作是否按照设计说明的规定正常进行; 37、黑盒测试:通过软件的外部表现来发现其缺陷和错误。黑盒测试把测试对象看成一个黑盒子,完全不考虑程序内部结构和处理过程。黑盒测试是在程序界面处进行测试,它只是检查程序是否按照需求规格说明的规定正常实现; 38、灰盒测试:关注输出对于输入的正确性; 39、软件测试过程模型:V模型、W模型、H模型、X模型; 40、V模型:它反应了测试活动与分析和设计的关系,从左到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系,如图所示,图中的箭头代表了时间方向,左边下降的是开发过程各阶段,与此相对应的是右边上升的部分,即各测试过程的各个阶段。 41、V模型指出,单元和集成测试是验证的程序设计,开发人员和测试组应检测程序的执行是否满足软件设计的要求;系统测试应当验证系统设计,检测系统功能、性能的质量特性是否达到系统设计的指标;由于测试人员和用户进行软件的确认测试和验收测试,追溯软件需求说明书进行测试,以确定软件的实现是否满足用户需求或合同的要求; 42、V模型存在一定的局限性,它仅仅把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段。容易使人理解为测试是软件开发的最后一个阶段,主要是针对程序进行测试寻找错误,而需求分析阶段隐藏的问题一直到后期的验收测试才被发现; 43、W模型建立:V模型的局限性在于没有明确地说明早期的测试,不能体现“尽早地和不断地进行软件测试”的原则。在V模型中增加软件各开发阶段应同步进行的测试,被演化为一种W模型,因为实际上开发是“V”,测试也是与此相并行的“V”。基于“尽早地和不断地进行软件测试”的原则; ?44、W模型应用:W模型可以说是V模型自然而然的发展。它强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。这样,只要相应的开发活动完成,我们就可以开始执行测试,可以说,测试与开发是同步进行的,从而有利于尽早地发现问题。以需求为例,需求分析一完成,我们就可以对需求进行测试,而不是等到最后才进行针对需求的验收测试; |