第七章 软件测试

合集下载

软件测试技术智慧树知到答案章节测试2023年青岛滨海学院

软件测试技术智慧树知到答案章节测试2023年青岛滨海学院

第一章测试1.测试Plan包含下面的内容()。

A:确定项目管理机制、预计测试工作量、测试计划评审B:确定测试范围、确定测试策略、确定测试标准、确定测试架构、确定项目管理机制、预计测试工作量、测试计划评审C:确定测试范围、确定测试策略、确定测试标准、预计测试工作量D:确定测试架构、确定项目管理机制、预计测试工作量、测试计划评审答案:B2.()不属于测试计划。

A:测试预期输出B:测试资源C:测试进度D:环境需求答案:A3.Test 计划起到了()的作用。

A:其他都是B:使测试工作更加系统化C:使项目参与人员沟通更舒畅D:使测试工作顺利进行答案:A4.制定test plan时不需要考虑()A:与开发人员没有达成一致B:测试时间不足C:用户不参与D:坚持”5W”规则答案:D5.下面对the flow of software testing 的描述,哪个是正确的?()A:制定测试计划->设计测试方案及测试用例->部署实施测试->执行测试->缺陷跟踪管理->测试总结报告B:制定测试计划->设计测试方案及测试用例->执行测试->部署实施测试->缺陷跟踪管理->测试总结报告C:制定测试计划->部署实施测试->设计测试方案及测试用例->执行测试->缺陷跟踪管理->测试总结报告D:部署实施测试->制定测试计划->设计测试方案及测试用例->执行测试->缺陷跟踪管理->测试总结报告答案:A第二章测试1.设计framework要根据项目需求进行适当change。

()A:对B:错答案:A2.场景分析原则中的E代表()A:用户体验B:使用时间C:必要性D:功能交互答案:A3.性能相关问题常发生在()。

A:子系统层B:功能层C:用户层D:应用层答案:D4.系统安全性作用于()。

A:功能层B:底层C:接口层D:用户层答案:D5.功能测试类型不包括()A:异常处理及容错性B:业务场景测试C:业务功能覆盖D:可维护性测试答案:D第三章测试1.为了提高软件测试的效率,应该()A:在完成编码以后制定软件的测试计划B:随机地选取测试数据C:选择发现错误可能性最大的数据作为测试用例D:取一切可能的输入数据作为测试数据答案:C2.进行软件测试的关键问题是()。

软件质量保证与测试技术智慧树知到课后章节答案2023年下青岛工学院

软件质量保证与测试技术智慧树知到课后章节答案2023年下青岛工学院

软件质量保证与测试技术智慧树知到课后章节答案2023年下青岛工学院青岛工学院第一章测试1.导致软件缺陷的最大原因是()A:测试 B:设计 C:需求分析 D:编码答案:需求分析2.下列那种不属于软件缺陷()。

A:网上售票软件反应迟钝,用户难以正常买票 B:某软件在进行修改升级之后,原来正常的功能现在出错了C:银行POS机在用户取款时翻倍吐钱,取100,吐200 D:计算机病毒发作,屏幕出现熊猫烧香画面答案:计算机病毒发作,屏幕出现熊猫烧香画面3.测试的关键问题是()。

A:如何选择测试用例 B:如何验证程序的正确性 C:如何采用综合策略 D:如何组织软件评审答案:如何选择测试用例4.常见的软件测试模型有()。

A:V模型 B:W模型 C:M模型 D:H模型答案:V模型;W模型;H模型5.软件测试按照测试技术分类包含()。

A:白盒测试 B:手工测试 C:单元测试 D:黑盒测试答案:白盒测试;黑盒测试6.测试就是为了验证软件已正确地实现了用户的要求。

()A:对 B:错答案:错7.软件开发过程中,若能推迟暴露其中的错误,则为修复和改进错误所花费的代价就会降低。

()A:错 B:对答案:错8.软件测试只能发现错误,但不能保证测试后的软件没有错误。

()A:错 B:对答案:对9.敏捷测试是一种遵循敏捷软件开发规则和原则的测试实践。

()A:错 B:对答案:对10.测试用例设计时既需要考虑正确数据,也需要考虑错误数据。

A:错 B:对答案:对第二章测试1.CMM将软件组织的软件能力成熟度描述为()A:五级 B:四级 C:二级 D:三级答案:五级2.下列那种不属于企业规范()。

A:华为开发手册 B:阿里、腾讯、百度程序员编程指南规范 C:Google 编程规范 D:ISO9000答案:ISO90003.CMMI的全称为()。

A:软件能力成熟度模型集成 B:软件能力成熟度模型 C:软件质量标准 D:软件质量模型答案:软件能力成熟度模型集成4.软件质量可以通过以下哪些质量属性来度量()。

第7章 软件测试度量与评价

第7章  软件测试度量与评价
• 外部质量特征: 正确性、可用性、效率、可靠性、完整性、适应性、精确性、坚 固性等。
ISO-9126质量模型
• 使用质量: 在规定的使用环境下软件产品使特定用户在达到规定目标方 面的能力。 它是从用户观点出发,来看待软件产品用于特定环境和条件 下的质量,反映的是从用户角度看到的软件产品在适当系统 环境下满足其需求的程度。
可移植性的 依从性
ISO-9126质量模型
• 内部质量: 是从内部观点出发的软件产品特性的总体,是针对 内部质量需求被测量和评价的质量。
• 内部质量特征: 可维护性、灵活性、可移植性、可重用性、可读性、 可测试性、可理解性等。
ISO-9126质量模型
• 外部质量: 软件产品在规定条件下使用时满足需求的程度。 它是从外部观点出发的软件产品特性的总体,当软件执行时,更 典型地是使用外部度量在模拟环境中,用模拟数据测试时,所被 测量和评价的质量,即在预定的系统环境中运行时可能达到的质 量水平。
软件度量
• 软件的度量取向一般包括项目规模、项目成本、项目进度 、顾客满意度、质量等度量,以及品牌资产度量、知识产 权价值度量等。
• 度量取向要依靠事实、数据、原理、法则;其方法是测试 、审核、调查;其工具是统计、图表、数字、模型;其标 准是量化的指标。
软件质量及度量
软件质量需要 度量
质量包括哪些 方面?
• (415+230)/[(69+129+500+393)-(35+68+100)] *100%=73%
• 3.缺陷密度
• 软件缺陷密度是一种以平均值估算法来计算出软件缺 陷分布的密度值。程序代码通常是以千行为单位的, 软件缺陷密度是用下面公式计算的:
McCall质量模型 *

软件工程智慧树知到答案章节测试2023年山东财经大学

软件工程智慧树知到答案章节测试2023年山东财经大学

第一章测试1.软件没有相应的文档,且最终不能满足用户要求是软件危机的一种表现。

()A:错B:对答案:B2.软件本身的不可见性和复杂性随规模的增加呈指数上升是产生软件危机的主要原因。

()A:错B:对答案:A3.开发软件就是写程序。

()A:错B:对答案:A4.开发软件所需高成本和产品的低质量之间有着尖锐的矛盾,这种现象称()。

A:软件危机B:软件工程C:软件产生D:软件周期答案:A5.以下对软件工程描述正确地是()。

A:结合最好的技术方法。

B:经济地开发出高质量的软件并有效地维护它。

C:一门工程学科。

D:采用经过时间考验而证明正确的管理技术。

答案:ABCD6.软件生命周期中所花费费用最多的阶段是()。

A:需求分析。

B:软件总体设计。

C:软件实现。

D:软件维护。

答案:D7.软件是()。

A:计算机系统。

B:处理对象和处理规则的描述。

C:程序。

D:程序、数据及其文档的集合。

答案:D8.同螺旋模型相比,原型模型主要缺少()。

A:客户评估B:制定计划C:风险分析D:实施工程答案:C9.在软件生存周期模型中,不适应变化需求的软件开发模型是()。

A:原型模型B:瀑布模型C:螺旋模型D:增量模型答案:B10.针对高质量软件的生产的软件过程模型()。

A:RUP模型B:基于构件的模型C:净室模型D:增量模型答案:C第二章测试1.可行性研究的技术可行性是指现有技术是否可行。

()A:对B:错答案:A2.可行性研究的成本效益分析是从经济方面讨论是否可行。

()A:对B:错答案:A3.可行性分析研究的目的是()。

A:功能内聚B:项目值得开发否C:开发项目D:争取项目答案:B4.描绘物理系统的传统工具是()。

A:程序流程图B:系统流程图C:数据流程图D:软件结构图答案:B5.数据字典的基本功能是()。

A:数据维护。

B:数据通信。

C:数据定义。

D:数据库设计。

答案:C6.使用数据流图对工资系统进行需求分析建模,外部实体是()。

A:工资单B:工资系统代码C:工资数据库维护D:接受工资单的银行答案:D7.数据流图的作用包括()。

软件工程考核知识点-第7章-软件测试

软件工程考核知识点-第7章-软件测试

软件工程考核知识点-第7章-软件测试7.1 软件测试的目的及原则7.1.1 软件测试的目的(1)软件测试是为了发现错误而执行程序的过程。

(2)一个好的测试用例能够发现至今尚未发现的错误。

(3)一个成功的测试是发现了至今尚未发现的错误的测试。

因此,测试阶段的基本任务应该是根据软件开发各阶段的文档资料和程序的内部结构,精心设计一组“高产”的测试用例,利用这些实例执行程序,找出软件中潜在的各种错误和缺陷。

7.1.2软件测试的原则在软件测试中,应注意以下原则:(1)测试用例应由输入数据和预期的输出数据两部分组成。

这样便于对照检查,做到"有的放矢"。

(2)测试用例不仅选用合理的输入数据,还要选择不合理的输入数据。

这样能更多地发现错误,提高程序地可靠性。

对于不合理地输入数据,程序应拒绝接受,并给出相应提示。

(3)除了检查程序是否做了它应该做的事,还应该检查程序是否做了它不应该做的事。

例如程序正确打印出用户所需信息的同时还打印出用户并不需要的多余的信息。

(4)应制定测试计划并严格执行,排除随意性。

(5)长期保留测试用例。

测试用例的设计耗费很大的工作量,必须作为文档保存。

因为修改后的程序可能有新的错误,需要进行回归测试。

同时,为以后的维护提供方便。

(6)对发现错误较多的程序段,应进行更深入的测试。

有统计数字表明,一段程序中所发现的错误数越多,其中存在的错误概率也越大。

因为发现错误数多的程序段,其质量较差。

同时在修改错误过程中又容易引入新的错误。

(7)程序员避免测试自己的程序。

测试是一种"挑剔性"的行为,心理状态是测试自己程序的障碍。

另外,对需求规格说明的理解而引入的错误则更难发现。

因此应由别的人或另外的机构来测试程序员编写的程序会更客观,更有效。

7.2 测试方法软件测试方法一般分为两大类:动态测试方法与静态测试方法,而动态测试方法中又根据测试用例的设计方法不同,分为黑盒测试与白盒测试两类。

轻松上手——软件测试作业指导书

轻松上手——软件测试作业指导书

轻松上手——软件测试作业指导书第1章软件测试基础 (2)1.1 软件测试的定义与目的 (2)1.2 软件测试的分类 (3)1.3 软件测试的基本原则 (3)第2章测试用例设计 (3)2.1 测试用例的概念与组成 (4)2.2 等价类划分法 (4)2.3 边界值分析法 (4)2.4 因果图法 (5)第3章黑盒测试 (5)3.1 黑盒测试概述 (5)3.2 功能测试 (5)3.3 功能测试 (6)3.4 安全性测试 (6)第4章白盒测试 (7)4.1 白盒测试概述 (7)4.2 逻辑覆盖测试 (7)4.3 循环测试 (7)4.4 程序插桩 (8)第5章静态测试 (8)5.1 静态测试概述 (8)5.2 代码审查 (8)5.3 代码走查 (9)5.4 静态代码分析工具 (9)第6章自动化测试 (9)6.1 自动化测试概述 (9)6.2 自动化测试工具 (10)6.3 测试脚本的编写与维护 (10)6.4 自动化测试框架 (10)第7章功能测试 (11)7.1 功能测试概述 (11)7.2 压力测试 (11)7.2.1 压力测试目标 (11)7.2.2 压力测试方法 (11)7.3 负载测试 (11)7.3.1 负载测试目标 (12)7.3.2 负载测试方法 (12)7.4 稳定性测试 (12)7.4.1 稳定性测试目标 (12)7.4.2 稳定性测试方法 (12)第8章兼容性测试 (12)8.1 兼容性测试概述 (12)8.2 浏览器兼容性测试 (12)8.3 操作系统兼容性测试 (13)8.4 移动设备兼容性测试 (13)第9章安全性测试 (13)9.1 安全性测试概述 (13)9.2 静态安全性分析 (14)9.2.1 代码审查 (14)9.2.2 代码度量分析 (14)9.2.3 静态应用程序安全测试(SAST) (14)9.3 动态安全性分析 (14)9.3.1 渗透测试 (14)9.3.2 模糊测试 (14)9.3.3 安全性评估 (14)9.4 漏洞扫描工具 (14)9.4.1 Acunetix (14)9.4.2 Burp Suite (15)9.4.3 OpenVAS (15)第10章测试管理 (15)10.1 测试计划与策略 (15)10.1.1 测试目标 (15)10.1.2 测试范围 (15)10.1.3 测试方法与策略 (15)10.1.4 测试资源与时间表 (15)10.2 测试过程管理 (15)10.2.1 测试用例管理 (15)10.2.2 测试执行 (15)10.2.3 测试监控与控制 (16)10.2.4 测试报告 (16)10.3 缺陷管理 (16)10.3.1 缺陷识别与报告 (16)10.3.2 缺陷跟踪与修复 (16)10.3.3 缺陷分析 (16)10.4 测试团队协作与沟通 (16)10.4.1 团队组织与分工 (16)10.4.2 沟通机制与工具 (16)10.4.3 项目协调与支持 (16)第1章软件测试基础1.1 软件测试的定义与目的软件测试是在规定的条件下,对软件产品进行操作以发觉软件缺陷、验证软件功能、功能等是否满足需求的过程。

软件测试流程及规范

软件测试流程及规范

软件测试流程及规范第1章测试准备工作 (4)1.1 测试需求分析 (4)1.2 测试计划编写 (4)1.3 测试资源准备 (4)第2章测试用例设计 (4)2.1 等价类划分法 (4)2.2 边界值分析法 (4)2.3 因果图法 (4)2.4 测试用例编写规范 (4)第3章测试执行与管理 (4)3.1 测试环境搭建 (4)3.2 测试用例执行 (4)3.3 缺陷跟踪与管理 (4)3.4 测试进度监控 (4)第4章功能测试 (4)4.1 正常流程测试 (5)4.2 异常流程测试 (5)4.3 边界条件测试 (5)4.4 数据验证测试 (5)第5章接口测试 (5)5.1 接口测试策略 (5)5.2 接口测试工具 (5)5.3 接口测试用例设计 (5)5.4 接口测试执行与结果分析 (5)第6章功能测试 (5)6.1 功能测试需求分析 (5)6.2 功能测试工具选择 (5)6.3 功能测试用例设计 (5)6.4 功能测试结果分析 (5)第7章安全测试 (5)7.1 安全测试概述 (5)7.2 安全测试策略 (5)7.3 安全测试工具 (5)7.4 安全测试执行与结果分析 (5)第8章自动化测试 (5)8.1 自动化测试概述 (5)8.2 自动化测试工具选择 (5)8.3 自动化测试脚本编写 (5)8.4 自动化测试执行与维护 (5)第9章测试团队管理 (5)9.1 测试团队组织结构 (5)9.3 测试团队沟通与协作 (5)9.4 测试团队培训与成长 (5)第10章测试过程改进 (6)10.1 测试过程评估 (6)10.2 测试过程改进策略 (6)10.3 测试过程改进工具 (6)10.4 测试过程改进实施 (6)第11章测试项目管理 (6)11.1 测试项目立项 (6)11.2 测试项目计划 (6)11.3 测试项目执行 (6)11.4 测试项目总结 (6)第12章测试规范与标准 (6)12.1 测试规范概述 (6)12.2 测试标准制定 (6)12.3 测试规范与标准的执行 (6)12.4 测试规范与标准的持续改进 (6)第1章测试准备工作 (6)1.1 测试需求分析 (6)1.1.1 收集需求文档 (6)1.1.2 分析需求 (6)1.1.3 确定测试范围 (6)1.2 测试计划编写 (7)1.2.1 确定测试目标 (7)1.2.2 制定测试策略 (7)1.2.3 编写测试计划 (7)1.3 测试资源准备 (7)1.3.1 测试环境 (7)1.3.2 测试工具 (7)1.3.3 测试数据 (7)1.3.4 测试人员 (7)1.3.5 测试文档 (7)第2章测试用例设计 (8)2.1 等价类划分法 (8)2.1.1 等价类的定义 (8)2.1.2 等价类的分类 (8)2.1.3 等价类划分的步骤 (8)2.2 边界值分析法 (8)2.2.1 边界值的概念 (8)2.2.2 边界值分析法的步骤 (8)2.3 因果图法 (8)2.3.1 因果图的概念 (9)2.3.2 因果图的构建 (9)2.4 测试用例编写规范 (9)第3章测试执行与管理 (9)3.1 测试环境搭建 (9)3.2 测试用例执行 (10)3.3 缺陷跟踪与管理 (10)3.4 测试进度监控 (11)第4章功能测试 (11)4.1 正常流程测试 (11)4.2 异常流程测试 (12)4.3 边界条件测试 (12)4.4 数据验证测试 (12)第五章接口测试 (13)5.1 接口测试策略 (13)5.2 接口测试工具 (13)5.3 接口测试用例设计 (13)5.4 接口测试执行与结果分析 (14)第6章功能测试 (14)6.1 功能测试需求分析 (14)6.2 功能测试工具选择 (15)6.3 功能测试用例设计 (15)6.4 功能测试结果分析 (15)第7章安全测试 (16)7.1 安全测试概述 (16)7.2 安全测试策略 (16)7.3 安全测试工具 (17)7.4 安全测试执行与结果分析 (17)第8章自动化测试 (18)8.1 自动化测试概述 (18)8.2 自动化测试工具选择 (18)8.3 自动化测试脚本编写 (18)8.4 自动化测试执行与维护 (19)第9章测试团队管理 (19)9.1 测试团队组织结构 (19)9.2 测试人员职责 (20)9.3 测试团队沟通与协作 (20)9.4 测试团队培训与成长 (20)第10章测试过程改进 (21)10.1 测试过程评估 (21)10.2 测试过程改进策略 (21)10.3 测试过程改进工具 (22)10.4 测试过程改进实施 (22)第11章测试项目管理 (22)11.1 测试项目立项 (23)11.3 测试项目执行 (23)11.4 测试项目总结 (23)第12章测试规范与标准 (24)12.1 测试规范概述 (24)12.1.1 测试规范的定义 (24)12.1.2 测试规范的作用 (24)12.2 测试标准制定 (24)12.2.1 测试标准的概念 (24)12.2.2 测试标准制定的原则 (24)12.2.3 测试标准的制定流程 (25)12.3 测试规范与标准的执行 (25)12.3.1 执行前的准备 (25)12.3.2 测试过程执行 (25)12.3.3 测试结果评估 (25)12.4 测试规范与标准的持续改进 (25)12.4.1 改进的意义 (25)12.4.2 改进的方法 (26)12.4.3 改进的流程 (26)第1章测试准备工作1.1 测试需求分析1.2 测试计划编写1.3 测试资源准备第2章测试用例设计2.1 等价类划分法2.2 边界值分析法2.3 因果图法2.4 测试用例编写规范第3章测试执行与管理3.1 测试环境搭建3.2 测试用例执行3.3 缺陷跟踪与管理3.4 测试进度监控第4章功能测试4.1 正常流程测试4.2 异常流程测试4.3 边界条件测试4.4 数据验证测试第5章接口测试5.1 接口测试策略5.2 接口测试工具5.3 接口测试用例设计5.4 接口测试执行与结果分析第6章功能测试6.1 功能测试需求分析6.2 功能测试工具选择6.3 功能测试用例设计6.4 功能测试结果分析第7章安全测试7.1 安全测试概述7.2 安全测试策略7.3 安全测试工具7.4 安全测试执行与结果分析第8章自动化测试8.1 自动化测试概述8.2 自动化测试工具选择8.3 自动化测试脚本编写8.4 自动化测试执行与维护第9章测试团队管理9.1 测试团队组织结构9.2 测试人员职责9.3 测试团队沟通与协作9.4 测试团队培训与成长第10章测试过程改进10.1 测试过程评估10.2 测试过程改进策略10.3 测试过程改进工具10.4 测试过程改进实施第11章测试项目管理11.1 测试项目立项11.2 测试项目计划11.3 测试项目执行11.4 测试项目总结第12章测试规范与标准12.1 测试规范概述12.2 测试标准制定12.3 测试规范与标准的执行12.4 测试规范与标准的持续改进第1章测试准备工作在进行软件测试前,充分的准备工作是保证测试工作顺利进行的关键。

软件测试质量规章制度

软件测试质量规章制度

软件测试质量规章制度第一章总则第一条为了规范软件测试工作,提高软件测试质量,制定本规章制度。

第二条本规章制度适用于公司所有涉及软件测试工作的部门和人员。

第三条软件测试是保证软件质量和可靠性的重要手段,必须重视软件测试工作。

第四条软件测试的目标是发现软件存在的缺陷和问题,保证软件的质量和稳定性。

第五条软件测试工作必须按照规章制度的要求进行,不得擅自修改或者违反规定。

第二章软件测试计划第六条在软件测试工作开始前,必须制定详细的测试计划。

第七条测试计划应当包括测试的目标、范围、方法、资源、进度和质量要求等内容。

第八条测试计划必须经过相关部门和人员的审批和确认,方可执行。

第九条测试过程中如果需要调整测试计划,必须经过相关部门和人员的批准。

第十条测试计划必须根据实际情况进行调整和优化,确保软件测试工作按计划进行。

第三章软件测试过程第十一条软件测试过程必须按照测试计划进行,不得随意更改或者省略测试环节。

第十二条软件测试过程包括测试准备、测试设计、测试执行、测试评审和问题跟踪等环节。

第十三条测试过程中必须记录详细的测试过程和结果,以备后续分析和回溯。

第十四条测试过程中必须保证测试环境的稳定和可靠,确保测试结果的准确性和可信度。

第十五条测试人员必须具备专业的测试知识和技能,熟悉测试工具和方法。

第四章软件测试工具第十六条软件测试工具是提高测试效率和质量的重要手段,必须合理应用。

第十七条在选用测试工具时,必须充分考虑软件测试的实际需求和特点。

第十八条测试工具的选择必须经过评估和测试,确保其适用性和稳定性。

第十九条测试工具的使用必须按照相关规定和方法进行,不得滥用或者误用。

第二十条测试工具的管理必须做到规范和有效,确保测试工作的顺利进行。

第五章软件测试报告第二十一条软件测试过程中必须定期生成测试报告,记录测试过程和结果。

第二十二条测试报告必须真实准确地反映测试情况和结果,不得掺杂虚假信息。

第二十三条测试报告必须按照规定的格式和要求进行编写和提交。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第七章软件测试编码完成之后,就是对源程序进行测试。

软件测试是一项“劳民伤财”的工作,统计表明,开发大规模的软件,有40%以上的精力是耗费在软件测试上(40-20-40规则,Myers认为软件测试占大约50%的项目时间和超过50%总成本)。

为了保证软件的正确可靠、为了防患于未然,无论怎样强调软件测试的重要性,都不过分。

关于软件测试,曾有种种似是而非的说法,众多的术语和测试技术,也常使我们眼花缭乱。

在这里我试尝给大家勾画出一个清晰的逻辑轮廓。

7.1 基本概念7.1.1 软件测试的目的(与地位)说测试不能不提到G.J.Myers的经典著作《软件测试技巧》,他在书中说道:“测试是为了发现错误而执行程序的过程。

”E.W.Dijkstra则说:“程序测试能证明错误的存在,但不能证明错误不存在。

”在这里,他们明确指出:测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。

(其实你也证明不了)在软件开发过程中,分析、设计、编码等工作都是建设性的,唯独测试带有“破坏性”,因为它抱着“吹毛求疵”的目的,明确宣布要在程序中“找岔子”。

他们认为这种吹毛求疵的态度是至关重要的(态度决定一切!)。

如果你是为了证明程序无错而去进行测试,错误就可能在你的眼皮底下漏过,反之,只要你抱着证明程序有错的目的去测试,就会尽心尽力去找程序中的错误。

根据Myers的说法,测试又是一个“(在计算机上)执行程序的过程”。

分析和设计阶段都要对文档进行技术审查和管理复审,源程序完成后,也要进行代码复审(code review)。

这些审查对减少软件错误有重要作用,但都不能代替在计算机上进行的测试,R.S.Pressman认为,测试可视为分析、设计、编码3个阶段的“最终复审(ultimate review)”,可见测试在软件质量保证中的重要地位。

现在我们干脆把Myers的:“程序测试是为了发现错误而执行程序的过程。

”作为软件测试的定义。

另一个与测试密切相关的活动叫纠错(debugging),我们也常常说起“纠错和调试”。

[纠错和调试]测试的目的是发现错误,纠错则是为了确定错误的性质,并且加以纠正。

因此,软件测试其实是这样一个过程:测试——纠错——测试——纠错——…………,这种边测试边纠错的活动,常常借助于一种称为调试程序(debugging routine)的专用工具,所以也有人把纠错称为调试。

7.1.2 软件测试的方法和技术广义地说,软件测试不仅指在计算机上进行的测试(机器测试),也应包括用人工方式进行的代码复审(人工测试),下面我们列出这两类测试所采用的方法和技术。

[注](1)机器测试和人工测试程序通过编译后,先要经代码复审,然后再进行机器测试。

机器测试是用设定的测试数据(test data)执行被测程序的过程,故又称为动态测试(dynamic testing)。

代码复审采用人工的方式进行,目的在于检查程序的静态结构,找出编译不能发现的错误。

经验表明,组织良好的代码复审,可以发现程序中30%到70%的编码和逻辑错误,从而加快动态测试的进程,提高整个测试的效率。

根据Myers的研究:人工测试和机器测试是互补的。

而且,机器测试只能发现错误的症状,人工测试一旦发现了错误,也就同时确定了错误的位置与性质。

人工测试并不是可有可无的,或是为了节约计算机机时而采取的权宜之计,它是机器测试的准备,也是测试中不可缺少的环节。

(2)白盒测试和黑盒测试动态测试是一个包括:①设计“测试用例”→②执行被测程序→③分析测试结果并发现错误的过程。

[测试用例]以发现程序的错误为目的,而精心设计的一组测试输入数据,以及用这组数据执行被测程序时所期望的输出结果。

测试用例={ 输入数据 + 期望结果 }【注】其中{ }表示重复在这一过程中,毫无疑问①设计“测试用例”是最关键!这是因为只有合理设计的“测试用例”,才可能最大限度地发现程序中的错误,从而有效地完成测试任务。

我们按照在设计“测试用例”时,是否涉及程序的内部结构,把动态测试分为:“白盒测试”和“黑盒测试”。

(3)穷举测试和选择测试能不能通过动态测试,发现程序中的所有错误呢?人们自然地想到:应该让被测程序在一切可能的输入情况下执行一遍,这就是所谓的“穷举测试”。

那么穷举测试可能吗?请看:[试对一个“C++编译器”进行黑盒穷举测试]一方面要编写出所有能够想象出来的合法的C++程序让它编译,另一方面又要编写出一切不合法的C++程序,看它能否指出程序的错误。

显而易见,合法与不合法的C++程序的数量都是无穷的,因此,用黑盒测试方法进行穷举测试是不可能的。

[试对下图所示的程序进行白盒穷举测试][注]51+52+53+ …… +520≈1014=106亿=102万亿=100万亿这意味着若能每秒完成一次测试,也得用漫长的320万年才能完成这次测试任务。

由此可见,穷举测试是不实现的,这就是我们所说的测试不能保证程序无错的原因。

在实际测试中,我们只能选择一些有代表性的、典型的测试用例,对程序进行有限的测试,通常称这种测试为选择测试。

7.1.3 软件测试的步骤按照软件工程的观点。

软件测试依次由以下四个层次的测试组成:(1)单元测试:在编码阶段完成;以模块为单位,包括代码复审、动态测试;确定测试用例时,可综合运用白盒和黑盒两类测试技术;(2)综合测试:以软件的设计信息为依据,采纳一定的“测试策略”进行测试;主要用黑盒测试技术确定测试用例;(3)确认测试:以软件的需求信息为依据,采纳一定的“测试策略”进行测试;主要用黑盒测试技术确定测试用例;(4)系统测试:指整个计算机系统(包括软件与硬件)的测试,可与系统的安装和验收结合进行。

[注]1)各级测试均须事先制订测试计划,事后写出测试报告;2)测试应由独立的测试小组进行,并挑选有经验的优秀程序员来担任;3)图:软件测试的步骤。

7.2 代码复审代码复审在程序通过编译之后,动态测试开始之前进行。

决不能以为程序通过编译就问题不大,其实编译只能发现极小部分错误,特别对大型软件更是如此。

7.2.1 代码会审代码会审以小组会的方式进行,会审小组一般由3到4人组成,包括组长一人、程序作者一人。

会前要先把源程序清单分发给与会者,还应把复审的要点编成“错误检验表”,供与会者参考。

***程序错误检验表开会时,程序作者逐句朗读和讲解程序,其它人则集中精力,捕捉程序在结构、功能、与编码风格等方面的可能错误。

要注意的是:大家都要把精力集中于发现错误,而把改正错误的工作放到会后去做。

如果错误较多,或有的错误要作重大改正,应在改正后重新安排代码会审。

7.2.2 走查走查与代码会审相似,所不同的是:走查要求与会者扮演“计算机”的角色,用人工的方式来运行被审程序。

因此,在会前至少要指定一人提出“测试用例”,开会时把这些测试数据“输入”被测程序,并在纸上跟踪监视程序的执行情况,让人代替机器沿着程序的逻辑“走”一遍,并从中“查”出错误,这就是“走查”这一名称的由来。

走查实质上是以走查为方式,随着走查的进程不断向程序作者提出有关询问,并从中发现程序的错误。

7.2.3 办公桌检查办公桌检查可以看成是由一个人参加的代码会审,其内容可以是按照“错误检查表”来检查被审的程序,也可以仿照“走查”对程序进行运行。

只适合规模较小的软件。

7.3 测试用例的设计测试用例是以发现程序的错误为目的,而精心设计的一组测试输入数据,以及用这组数据执行被测程序时所期望的输出结果。

测试用例={ 输入数据 + 期望结果 }其中{ }表示重复。

这个式子表明,每一个完整的测试用例不仅含有被测程序的输入数据,而且还包括用这组数据执行被测程序后期望的输出结果,如果实测的结果与期望的结果不相符,就表明程序可能存在错误。

下图列出了常用的测试用例设计方法。

7.3.1 黑盒测试方法前面已经提到,黑盒测试方法仅以程序的外部功能为依据来设计测试用例,一方面要检查程序能否完成一切应做的事情,另一方面要检查程序能否拒绝一切不应该做的事情。

(1)等价分类法这种方法就是把被测程序的输入域(就是整个键盘)进行分类——划分为若干个“等价类”。

[注]1)集合X上的等价关系R所构成的等价类形成一个集合X的划分,此划分叫做X关于R的商集,记作X/R。

X/R = { [a]R | a∈ X }2)集合X上的等价关系与集合X的划分是一一对应的。

从逻辑上来说,就是按测试结果“等价”把被测程序的输入域划分为若干个等价类,每一个等价类都选择一例“测试用例”,它代表了一类与它等价的其它测试。

这样,测试人员就有可能使用少量“有代表性”的测试用例,对程序进行“有限的测试”。

我们再次强调:黑盒测试方法一方面要检查程序能否完成一切应做的事情,另一方面要检查程序能否拒绝一切不应该做的事情。

与“应做的事情”相对应的是“有效等价类”,而与“不应该做的事情”相对应的称之为“无效等价类”。

设计等价类的测试用例分为两步:①划分等价类并给出定义;②选择测试用例,其原则是:有效等价类的测试用例尽量公用;无效等价类必须每类一例。

[例1]某城市的电话号码由3部分组成,这3部分的名称和内容分别是:地区码:空白或3位数字;前缀:非“0”或“1”开头的3位数字;后缀:4位数字。

假定被测程序能接受一切符合上述规定的电话号码,拒绝所有不符合上述规定的电话号码,请用等价分类法来设计它的测试用例。

(2)边界值分析法(边值法)在等价分类法中,代表一个等价类的测试用例可以在这个等价类的允许值范围内任意选择。

但如果把测试用例选在等价类的边值上,往往会有更好的效果,这就是边界值分析法的主要思想。

[例]税款计算程序。

(“收入”≤3500 作为判定条件,可用800、3600两个测试数据分别代表免税和征税两个等价类,但……)大多数情况下,边界值及其邻近的数据都属于敏感区,容易暴露程序的错误。

边界值分析法也适用于检查程序的输出值边界。

[例]当月实发工资计算程序(如果该工资计算程序规定:当职工的扣款金额超过当月应发工资的一半时,其超出部分应留待下月扣除,如果按边界值分析法选择此时的测试用例,就应有意识地让扣款达到或超过应发工资额的半数,分别观察被测程序计算当月实发工资有何变化)(3)错误猜测法(猜错法)所谓猜错,就是猜测被测程序中哪些地方容易出错,并据此设计测试用例。

这种方法更多地依赖于测试人员的直觉与经验,所以仅是一种辅助手段,用来补充一些测试用例。

注:等价分类法的一个缺陷是未对输入条件的组合进行分析。

(4)因果图法因果图法是借助图形来设计测试用例的一种方法。

所谓的因果图是一种简化了的逻辑图,能直观地表明输入条件(因)和输出结果(果)之间的相互关系。

该方法适用于被测程序具有多种输入条件,程序的输出又依赖于输入条件的各种组合的情况,往往要借助专用软件来设计测试用例。

相关文档
最新文档