《软件测试的有效方法(第2版)》笔记(一)

简介: 《软件测试的有效方法(第2版)》笔记(一) 第一章 评估软件测试的能力和人员资格 1、软件开发过程:计划P、执行D、检查C、行动A。--PDCA循环 2、软件测试涉及的人员:软件客户、软件用户、开发人员、测试人员、信息技术管理人员、高级组织管理人员、审计员。

《软件测试的有效方法(第2版)》笔记(一)
第一章 评估软件测试的能力和人员资格


1、软件开发过程:计划P、执行D、检查C、行动A。--PDCA循环
2、软件测试涉及的人员:软件客户、软件用户、开发人员、测试人员、信息技术管理人员、高级组织管理人员、审计员。
3、软件测试的多种角色:制造、创作车间、专业化过程。
4、缺陷:与期望的产品属性存在的差异。分两类:
(1)产品规格书中的缺陷;
(2)与客户/用户的期望不符。
另一种分法:
(1)错误;
(2)遗漏;
(3)超额。
故障:当缺陷引起了运行错误或对客户/用户产生了消极影响时。
××注意:至少90%的缺陷是由于过程问题引起的。
创建软件时产生缺陷的数量主要取决于过程是否完备,完备指过程中可以允许多大的变化。
风险:指不希望的事件发生的可能性。
5、软件测试中的“三步测试法”:
(1)确定当前测试能力的状态;
(2)确定改进目标;
(3)制订测试计划以达到测试目标。
6、质量保证协会QAI确定了与世界级软件测试组织普遍相关的八项标准:
(1)测试计划;
(2)对测试人员的培训;
(3)对测试工作的管理;
(4)用户对测试的满意程度;
(5)测试过程的使用;
(6)有效的测试实践;
(7)应用测试工具;
(8)对测试全过程的质量控制。
如果一组织能达到这八项标准的要求,就可以称他为世界级的软件测试组织。
7、评估现有测试过程的质量
实现过程:
(1)组建评估小组;
(2)完成评估调查问卷;
(3)创建Kiviat图;
(4)评估结果。
软件测试工程师认证CSTE
通用知识主题CBOK:五大类:
(1)一般技能;
(2)测试技巧/方法;
(3)测试计划;
(4)执行测试计划;
(5)测试分析的报告与改进。

第二章 制定软件测试策略
1、确定解决方法的有效性是解决问题的必要步骤。测试就是用来确定解决方法的技术。
三个方面:
(1)在软件系统开发生命周期的每个节点对软件有效性的证明;
(2)根据用户的需要和要求确定最终系统的有效性;
(3)通过使用样本测试数据执行软件来检查系统的行为。
问题的紧急程度决定了解决方案。明确测试需求。
2、风险:是引起损失的一种情况。系统在开发和安装阶段可能存在的策略风险是:
(1)可能得出不正确的结果;
(2)系统接受了未经授权的事务处理;
(3)计算机文件的完整性受到破坏;
(4)处理过程不可重建。
(5)失去处理的连续性;
(6)提供给用户的服务达不到满意的程度;
(7)系统安全性达不到标准;
(8)处理过程不符合组织原则或政府规定;
(9)系统结果不可靠;
(10)系统使用难度大;
(11)程序不可维护;
(12)系统不能移植到其它硬件或软件中;
(13)系统不能与其它计算机系统互连;
(14)性能不合格;
(15)系统操作难度大。
有效的测试方法就是明确和评价计算机系统的各种风险。
“太少的测试是犯罪,太多的测试是罪恶。”
测试中的问题产生的原因:
(1)没有定义测试目标;
(2)测试软件生命周期的错误阶段;
(3)使用无效的测试技术。
测试费用的有效性可用测试费用曲线来表示。
3、测试信息服务系统不仅仅是一类IT问题,还是一类组织问题。
一些技术的发展会导致测试方法的修改,如下:
(1)一体化;
(2)系统链接;
(3)多米诺骨牌效应;
(4)依赖电子商务;
(5)多用户。
4、建立测试原则 四项标准:
(1)测试的定义:定义一个清晰、扼要、明确的测试;
(2)测试系统:通过这一方法实现测试和强制测试;
(3)评价:信息服务管理将如何衡量和评价测试;
(4)标准:衡量测试的标准。
建立测试原则的方法:
(1)直接管理:一个或多个高级管理员制定的原则;
(2)信息服务一致原则:IT管理部门召集一些高级专家和有声望的人来参与原则的制定;
(3)用户会议:联合IT各部门管理用户的关键人员制定测试原则。
5、测试的结构化方法
测试过程要包括生命周期的每个阶段:
(1)需求——决定验证方法;确定需求是否恰当;生成功能测试数据;确定设计是否符合需求。
(2)设计——确定设计是否恰当;生成结构合功能测试数据;确定是否符合设计。
(3)编程——确定程序完成得是否恰当;生成程序的结构合功能测试数据。
(4)测试——测试应用系统。
(5)安装——把测试过的系统投入生产。
(6)维护——修改和重新测试。
在每个阶段都要完成的活动有:
(1)分析该阶段的产品结构是否适合于测试;
(2)根据该阶段的结构产生测试单元。
另外,在设计和编程阶段完成的活动:
(1)确定该阶段的结构是否符合前面阶段产生的结构;
(2)精炼或重新定义前面阶段生成的测试单元。
6、测试策略的两个组件是:
(1)测试因素:需要由测试策略确定的风险和问题;
(2)测试阶段:系统开发生命周期里需要测试的各阶段。
7、测试因素:正确性、文件完整性、合法性、审计跟踪、处理的连续性、服务水平、访问控制、符合性、可靠性、易用性、可维护性、可移植性、耦合、性能、易操作性。
8、制定测试策略 步骤:
(1)选择和分级测试因素;
(2)明确系统开发阶段;
(3)明确系统开发时的商业风险;
(4)把风险置于矩阵中。
9、创建测试策略样例:
(1)选择和分类测试因素;
(2)明确受到影响的阶段;
(3)联系每个阶段和因素,确定测试需要考虑的问题;
(4)定义测试策略。
10、测试方法论:与测试策略相统一,代表了测试应用系统的详细工作程序。工作程序用测试方法论立方体表示。

第三章 建立软件测试方法论
测试方法论是使测试策略得以实施的一套方法。依照需求恰当的使用测试策略矩阵。任务是决定测试、制定可行的测试方法,识别出风险。
1、测试目的:发现和消除软件的缺陷或者与预期结果的偏差。两类缺陷:
(1)与规格说明不符;
(2)与期望不符。
2、导致软件缺陷的原因:
(1)信息技术对需求的解释不正确;
(2)用户提出了错误需求;
(3)没有正确记录用户的需求;
(4)设计规格说明不正确;
(5)程序规格说明不正确;
(6)程序编码中有错误;
(7)数据输入错误;
(8)测试错误;
(9)纠错时出现错误;
(10)纠错条件导致另外的缺陷。
测试的费用主要取决于在项目生命周期的什么时期开始测试,越晚越贵。
测试应该从生命周期的第一个阶段开始,并贯穿于整个软件开发的生命周期。
生命周期测试:是对解决方案的持续测试,即使在软件开发计划完成后或者被测试的系统处于执行状态的时候,都不能中断测试。直到正式开始开发过程,生命周期测试才能开始。
3、四个测试技术:
(1)验证:确保系统遵循组织标准和规程,主要靠评审或一些不可执行的方法。
验证需要的评审有:
    (1.1)需求评审:研究并讨论计算机系统的需求,以确保它能满足用户的需要及其可行性;
    (1.2)代码走查:对程序源代码进行非正式的分析,以发现缺陷并且验证编码技术;
    (1.3)代码审查:对程序源代码进行正式的分析,以发现为符合计算机系统设计规格说明所发生的设计缺陷;
    (1.4)设计评审:研究并讨论计算机系统的设计,以确保它支持系统需求;
    (1.5)回顾评审。
(2)确认:通过一系列可以看到和评价的测试来执行系统功能,以确保系统操作按照计划实现。
确认的测试有:
    (2.1)单元测试:单独程序、模块或代码单元的测试;
    (2.2)集成测试:相关的程序模块、代码单元测试;
    (2.3)系统测试:对于整个计算机系统的测试;
    (2.4)用户验收测试:对于计算机系统或系统某部分的测试,确保它们能配合系统工作,而无需考虑系统需求。
(3)功能测试:即黑盒测试。基本只能使用确认技术。
(4)结构测试:白盒测试。主要使用验证技术。
功能测试的优势:模拟实际系统的使用;进行没有系统结构的设想。
功能测试的不足:遗漏软件中潜在的逻辑错误;可能造成冗余测试。
结构测试的优势:可以测试软件的结构逻辑;测试时不用考虑是否完成了功能测试。
结构测试的不足:不能保证是否满足用户的需求;结构测试不可以模拟现实世界的情况。
两者结合才能确认整个系统。
4、工作流程:是一种方法,它用图示或文档的方式来说明指定的活动是如何完成的。
每一个工作流程由以下四个部分组成:输入、执行过程、检查过程、输出。
工作流程的概念可用作系统创建步骤的图示说明。
5、开发测试方法论中要考虑的八个问题
(1)获取和研究测试策略;
(2)确定开发项目的类型;
(3)确定软件系统的类型;
(4)确定项目的范围;
(5)确定战术风险;
(6)确定何时进行测试;
(7)建立系统测试计划;
(8)建立单元测试计划。
步骤如下:
(1)获取和研究测试策略;
(2)确定开发项目的类型;
项目类型:指开发的软件环境或方法论。
当环境变化大了,测试风险也会不同。
(3)确定软件系统的类型
软件系统的类型指该系统要完成的处理过程,一般有16种不同的软件处理类型:
    (3.1)批处理:可以运行一般的批量处理;
    (3.2)事件控制:由外部事件引发的实时处理数据;
    (3.3)处理控制:从外部接收数据,根据收到的数据发出命令来控制某些行为;
    (3.4)规程控制:控制其它软件;
    (3.5)高级数学模型:类似于模拟和商业策略软件,但具有过多运用数学模型造成的复杂性;
    (3.6)消息处理:管理输入输出消息,处理文本或者文本包中包含的信息;
    (3.7)诊断软件:检测和隔离硬件错误,这些硬件存在于电脑或与其通信的硬件中;
    (3.8)传感器和信号处理:类似于消息处理,但需更多的处理过程来分析输入数据,并使之转换成可用的数据处理格式;
    (3.9)模拟:模拟一种环境、任务状况、其它硬件;从这些输入中得出对计算机程序或硬件最真实的评价;
    (3.10)数据库管理:管理数据的存储和访问;
    (3.11)数据采集:实时接收信息,并以某种形式保存数据,用作以后的处理;
    (3.12)数据表示:格式化数据及转化数据;
    (3.13)决策和计划辅助:使用人工智能技术提供一个专家系统来评价数据,为决策和政策制订者提供附加的信息和考虑;
    (3.14)图形和图像处理:生成和处理计算机图像;
    (3.15)计算机系统软件:为运行计算机程序提供服务;
    (3.16)软件开发工具:为辅助软件开发提供服务;
(4)确定项目的范围:指包含在被测试的软件中的所有行为——可以理解的系统需求和规格说明的范围。
(5)确定战术风险  战术风险分为三类:
    (5.1)结构化风险:应用系统及创建应用系统的方法中所涉及的风险;
    (5.2)技术风险:创建和操作应用系统的技术所涉及的风险;
    (5.3)规模风险:软件各方面的规模所设计的风险。
确定战术风险的步骤:
    第一,理解风险和对风险的分级;
    第二,确定被测试的软件系统中适当级值;
    第三,计算和累计风险分数。
(6)确定何时进行测试
测试在项目的各个阶段都应该进行。在这些阶段的测试行为有:
  A. 需求阶段行为:确定测试策略;确定需求是否恰当;创建功能测试条件。
  B. 设计阶段行为:确定需求设计符合性;确定设计是否恰当;创建结构和功能测试条件。
  C. 编程阶段行为:确定设计符合性;确定执行是否恰当;创建程序单元的结构和功能测试条件。
  D. 测试阶段行为:确定测试计划是否恰当;测试应用系统。
  E. 安装阶段行为:修改和重新测试系统。
(7)建立系统测试计划
测试计划要提供测试软件的背景信息、测试目标和风险,以及测试的业务功能和要完成的特殊测试。
测试计划类似于执行测试的路线图,它被分解成特殊测试和低级测试。
测试执行后,要测试结果生成测试报告。
(8)建立单元测试计划
把系统分成组件和单元来执行具体的处理,这些单元都要有自己的测试计划。根据软件对质量的要求程度,决定这些计划的复杂程度。
单元测试计划着重确定单元测试完成时间。

目录
相关文章
|
1月前
|
机器学习/深度学习 JSON 算法
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
本文详细介绍了使用YOLOv5-Seg模型进行图像分割的完整流程,包括图像分割的基础知识、YOLOv5-Seg模型的特点、环境搭建、数据集准备、模型训练、验证、测试以及评价指标。通过实例代码,指导读者从自定义数据集开始,直至模型的测试验证,适合深度学习领域的研究者和开发者参考。
332 2
实例分割笔记(一): 使用YOLOv5-Seg对图像进行分割检测完整版(从自定义数据集到测试验证的完整流程)
|
1月前
|
测试技术
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
本文是关于自动化测试项目实战笔记,主要介绍了如何测试用户注册功能,包括验证码错误、注册成功以及弹框处理的测试步骤和代码实现。
84 2
自动化测试项目实战笔记(三):测试用户注册(验证码错误,成功,出现弹框时处理)
|
1月前
|
Java 关系型数据库 MySQL
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
这篇文章是关于自动化测试项目实战笔记,涵盖了JDK、Tomcat、MySQL、Jpress环境的安装和搭建过程,以及测试用例和常见问题总结。
47 1
自动化测试项目实战笔记(一):JDK、Tomcat、MySQL、Jpress环境安装和搭建
|
1月前
|
安全
红队测试方法论-课程笔记
红队测试方法论-课程笔记
红队测试方法论-课程笔记
|
29天前
|
机器学习/深度学习 弹性计算 自然语言处理
前端大模型应用笔记(二):最新llama3.2小参数版本1B的古董机测试 - 支持128K上下文,表现优异,和移动端更配
llama3.1支持128K上下文,6万字+输入,适用于多种场景。模型能力超出预期,但处理中文时需加中英翻译。测试显示,其英文支持较好,中文则需改进。llama3.2 1B参数量小,适合移动端和资源受限环境,可在阿里云2vCPU和4G ECS上运行。
|
1月前
|
计算机视觉
目标检测笔记(二):测试YOLOv5各模块的推理速度
这篇文章是关于如何测试YOLOv5中不同模块(如SPP和SPPF)的推理速度,并通过代码示例展示了如何进行性能分析。
79 3
|
1月前
|
人工智能 算法 测试技术
自动化测试项目实战笔记(二):解决验证码识别问题
这篇文章介绍了三种自动化测试中验证码识别的方法:使用Python的pytesseract和PIL模块、利用第三方API如万维易源,以及使用开源的ddddocr库,还提到了一些注意事项,比如如何获取验证码区域的截图。
64 2
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
56 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
1月前
|
机器学习/深度学习 并行计算 数据可视化
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
这篇文章介绍了如何使用PaddleClas框架完成多标签分类任务,包括数据准备、环境搭建、模型训练、预测、评估等完整流程。
79 0
目标分类笔记(二): 利用PaddleClas的框架来完成多标签分类任务(从数据准备到训练测试部署的完整流程)
|
1月前
|
机器学习/深度学习 JSON 算法
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)
本文介绍了DeepLab V3在语义分割中的应用,包括数据集准备、模型训练、测试和评估,提供了代码和资源链接。
170 0
语义分割笔记(二):DeepLab V3对图像进行分割(自定义数据集从零到一进行训练、验证和测试)

热门文章

最新文章