1.导致软件缺陷的原因(K2)
缺陷是错误的结果,更精确地说,缺陷是错误的表现。当缺陷被执行时会导致失效的发生。
软件测试是软件开发过程中关键的质量保证活动,是软件质量保证的一个环节。在软件开发过程中实施严格规范的测试有助于发现软件开发过程中不同阶段的缺陷,尽可能的将缺陷发现于本阶段并予以纠正,避免将缺陷带入下一个开发阶段,因为缺陷具有扩展的特点。所以在软件开发过程中,对文档和代码的测试会对软件的质量起到关键作用。 在软件的维护阶段,由于软件可能发生修改和功能增强,所以软件测试能发现由于修改和功能增强可能导致软件系统出现的问题,包括对文档和软件系统的测试。
软件在使用过程中可能由于硬件、环境及软件等原因出现各种问题,那么这些问题只有通过测试才能找到问题所在,或者通过软件测试模拟可能出现的问题。
3.什么是软件测试(K2)
“软件测试”的经典定义是在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。
4.什么是软件质量
“软件质量”是:软件满足规定或潜在用户需求特性的总和。
5.软件测试和软件质量保证的区别
区别如下:
质量保证:质量保证的重要工作通过预防、检查与改进来保证软件质量。QA采用“全面质量管理”和“过程改进”的原理开展质量保证工作,所关注的是软件质量的检查与测量,主要着眼于软件开发活动中的过程、步骤和产物,而不是对软件进行剖析找出问题或评估。
软件测试:测试虽然也与开发过程紧密相关,大关心的不是过程的活动,而是对过程的产物以及开发出的软件产品进行剖析。测试人员要“执行”软件,对过程中的产物——开发文档和源代码进行走查,运行软件,以找出问题,报告质量。
6.软件测试的目的和一般原则(K2)
测试是程序的执行过程,目的在于发现错误;
一个成功的测试是发现了至今未发现的错误的测试。
测试原则如下几点:
1) 所有的软件测试都应追溯到用户需求;
2) 应当把“尽早的和不断地进行软件测试”作为软件测试者的座右铭。
3) 完全测试是不可能的,测试需要终止;
4) 测试无法显示软件潜在的缺陷;
5) 充分注意测试中的群集现象;
6) 程序员应该避免检查自己的程序;
7) 尽量避免测试的随意性。
7.基本的软件测试过程(K2)
软件测试过程包括:
软件测试计划和控制
测试分析和设计
测试实施和执行
退出测试的标准
测试报告
测试结束活动等方面
8.V模型(K2)
1)单元测试:与详细设计对应的是单元测试。单元测试检测代码的开发是否符合详细设计的要求。它主要是对详细设计中的每个功能单元(通常是函数或过程)进行逻辑覆盖测试,因此这种测试偏重于白盒测试。
2) 集成测试:与概要设计对应的是集成测试。因为概要设计的工作主要是根据功能把大的系统进行模块分解,所以集成测试的工作主要是,把各模块逐步集成在一起,来测试数据是否能够在各模块间正确流动,以及各模块能否正确同步。因为这种测试依赖于软件的架构但又不关心每个函数的实现细节,所以该测试关注的是模块之间的接口。
3)系统测试: 与需求分析对应的是系统测试。因为系统的需求分析的工作是分解用户的功能和性能需求并规格化,并对应到系统中。所以系统测试的工作主要就是测试这些功能和性能指标是否都在软件中正确实现。系统测试检测已集成在一起的产品是否符合系统规格说明书的要求。该测试把软件作为一个黑盒,针对每个需求规格组织各种输入并根据软件输出来判断该需求规格是否正确实现,因此系统测试偏重于黑盒测试。
4)验收测试:与用户需求对应的是验收测试。是针对系统是否满足用户需求、业务流程等的验收。当技术部门完成了所有测试工作后,由业务专家或用户进行验收测试,以确保产品能真正符合用户业务上的需要。
9.软件测试级别(K3)
1)单元测试:
单元测试或者模块测试是针对各个代码单元或者模块进行的测试。测试仅围绕着具体的程序模块进行。
单元测试中常见的问题就是如何划分单元以及独立地对其进行测试。
传统的单元测试术语(unit testing terminology) 包括了驱动模块(driver) 和 桩模块(stub)。driver的目的很单纯,就是为了访问类库的属性和方法,来检测类库的功能是否正确;stub的目的同样单纯,就是提供需要和测试类库交互的那些类的实现。
单元测试必须将代码单元或模块与系统其他部分隔离,进行独立的测试。
2)集成测试:
集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。集成测试的工作主要是,把单元测试过的各模块逐步集成在一起,来测试数据是否能够在各模块间正确流动,以及各模块能否正确同步。
集成测试基本可以概括为以下两种:
- 非渐增式测试模式:先分别测试每个模块,再把所有模块按设计要求一次全部组装起来所要的系统,然后进行整体测试。
- 渐增式测试模式:把下一个要测试的模块同已经测试好的模块结合起来进行测试,测试完以后再把下一个模块结合进来测试。
集成测试可以分为两种:手工黑盒和代码灰盒。手工黑盒与后续的系统测试的测试用例存在重用,代码灰盒是指针对组件的接口采用代码调用的方式来测试,一般不会涉及白盒测试,即不关心组件内部是如何实现,只关心组件的接口。
3)系统测试:
系统全部组装完毕以后的测试是系统测试。系统测试的工作主要就是测试用户的功能和性能需求指标是否都在软件中正确实现。系统测试检测已集成在一起的产品是否符合系统规格说明书的要求。该测试把软件作为一个黑盒,针对每个需求规格组织各种输入并根据软件输出来判断该需求规格是否正确实现,因此系统测试偏重于黑盒测试。
系统测试人员负责制定测试计划并依照测试计划进行测试。这些测试包括功能性的测试(黑盒测试)和非功能性的测试(如,压力测试等)。测试人员需要良好的测试工具来辅助完成测试任务,自动化的测试工具将大幅度提高测试人员的工作效率和质量。
4)验收测试:
验收测试也叫做确认测试是软件开发结束后,验证软件的功能和性能及其它特性是否与用户的要求一致。验收测试包括用户验收测试、系统管理员的验收测试(包括测试备份和恢复、灾难恢复、用户管理、任务维护、定期的安全漏洞检查等)、基于合同的验收测试,α和β测试。验收测试是对软件质量评价的一个重要标准。
用户验收测试可以分为几个大的部分:确认测试的标准,软件配置审核(软件配置内容:可执行程序、源程序、配置脚本、测试程序或脚本。),可执行程序测试,α、β测试。其大致顺序可分为:文档审核、源代码审核、配置脚本审核、测试程序或脚本审核、可执行程序测试,α、β测试。
α测试是指软件开发公司组织内部人员模拟各类用户对即将面市软件产品(称为α版本)进行测试,试图发现错误并修正。α测试的关键在于尽可能逼真地模拟实际运行环境和用户对软件产品的操作并尽最大努力涵盖所有可能的用户操作方式。经过α测试调整的软件产品称为β版本。紧随其后的β测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用β版本,并要求用户报告异常情况、提出批评意见。然后软件开发公司再对β版本进行改错和完善。
确认测试的测试内容:
(1)安装测试
(2)功能测试
(3)可靠性测试
(4)安全性测试
(5)时间及空间性能测试
(6)易用性测试
(7)可移植性测试
(8)可维护性测试
(9)文档测试
10.软件测试类型(K3)
功能性测试和非功能性测试。
功能需求指明软件必须执行的功能,定义系统的行为——即软件在某种输入条件下要给出确定的输出必须做的处理或转换。功能需求通常是软件功能的“硬指标”——如“支持分布式环境中消息的可靠传输”;
非功能需求不描述软件做什么,描述软件如何做。非功能需求通常作为软件设计的“软指标”——如“系统具有可伸缩性”。为此,我们可以把功能需求对应的功能称为“功能性特征”,把非功能需求对应的功能称为“非功能性特征”。
1) 功能性测试(黑盒测试(Black-box Testing)又称为功能测试或数据驱动测试) 把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程。
采用黑盒技术设计测试用例的方法有:
等价类划分、边界值分析、决策表法、正交实验法,场景法等。
黑盒测试试图发现以下类型的错误:1)功能错误或遗漏;2)界面错误;3)数据结构或外部数据库访问错误;4)性能错误;5)初始化和终止错误。
2) 非功能性测试:
非功能性测试主要是基于产品的性能、负载、可用性、交互性、可维护性、可靠性及可移植性等方面的测试。还应该包括测试产品是否遵从指定的标准、规范和约束,以及操作界面的具体细节和构造上的限制。
3) 白盒测试:(White-box Testing,又称逻辑驱动测试,结构测试)
把测试对象看作一个打开的盒子。利用白盒测试法进行动态测试时,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆盖包括语句覆盖、判(断)定覆盖、条件覆盖、判(断)定/条件覆盖、条件组合覆盖和路径覆盖。这六种覆盖标准发现错误的能力呈由弱至强的变化。
“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
4) 再测试回归测试
当一个缺陷被发现并被改正之后,软件应该重新进行测试(再测试)以确保原来的缺陷成功地被消除。当软件相关模块(组件)修改以后或软件增加了相关模块(组件),为了确保软件的正确性,也必须对相关模块进行回归测试。
5) 维护性测试:
维护测试通常始于客户对系统变化或发布下一个版本需求的确认。软件测试管理人员也会以这些确认文档为基础设计维护测试计划。有了明确的测试目标后,测试员应该设计并执行新的测试用例、修改过的测试用例以及回归测试。在维护测试结束后,这些测试及结果也应该保留起来。
软件工作产品可以通过不同的静态技术进行检查以评估工作产品的质量,而这种静态技术不同于软件的动态测试技术。静态测试是相对于动态测试而言的,即不要求在计算机上实际执行所测程序所进行的测试。静态测试主要以一些人工的模拟技术对软件进行分析和测试,是白盒测试方法的一种,包括代码检查、静态结构分析等。
静态测试可以分为评审和工具支持的静态测试技术。相对于动态测试而言,静态测试成本更低,效率较高,更重要的是可以在软件开发生命周期早期就发现缺陷和问题。
注释:
K1:表示一般理解 K2:表示一般掌握 K3:表示重点掌握并能够应用
更多ISTQB学习资料、考试安排,加V 免费领取:atstudy-51 备注“ISTQB资料”