From 7e90279a2b608ed91b33300f01081efb2f151305 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Tue, 14 Sep 2021 10:02:04 +0800 Subject: [PATCH 01/63] =?UTF-8?q?=E6=8C=89=E8=A2=81=E5=B8=85=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 8196 -> 8196 bytes README.md | 137 +++++++++++++++++++++++++++--------------------------- 2 files changed, 68 insertions(+), 69 deletions(-) diff --git a/.DS_Store b/.DS_Store index d6f7925d3dc71334773cbf73508839ab1382c98b..a9d5eb04e5fcb8704779b43f4aefa75b089e5836 100644 GIT binary patch delta 88 zcmZp1XmOa}&nU7nU^hRb$YvgaUKUdxh9Cx421f=L245hp%TUQs%%I1R%aG!klb@WF jlb^)Ez#zcDzzC!m{=>lLX(E=)o7pA4v1~pn!p;l;2k{#1 delta 40 wcmZp1XmOa}&nUbxU^hRb@Ma!?UY5-lMa-BdHdt(Cm-xoA*;Mor)5Hc-025pdxBvhE diff --git a/README.md b/README.md index 9815ab9..66f6e73 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ 学时安排:72课时(理论36+实践36) 教材:清华大学出版社 《软件测试》(第2版) 周元哲 编著 ### 4 课程资源 -* 课程内容文档 [gitee课程地址](https://gitee.com/XiaFuXiangFei/software-testing) +* 课程内容文档 [gitee 课程地址](https://gitee.com/XiaFuXiangFei/software-testing) * 课程思维导图 * 测试相关文档模板 * 测试工具:[禅道](http://zentao.zrise.top/) @@ -29,12 +29,12 @@ **软件 ≠ 程序(代码)** 软件包含如下内容: 1. 运行时,能够提供所要求功能和性能的指令或计算机程序。 -2. 程序能够处理信息的数据结构 -3. 描述程序功能需求、程序如何操作和如何使用所要求的文档 +2. 程序能够处理信息的数据结构。 +3. 用于描述程序功能需求、程序如何操作和如何使用的文档。 #### 1.1.2 文档 ##### 开发文档 -开发文档是描述软件开发过程,包括软件需求、软件设计、软件测试、保证软件质量的一类文档,开发文档也包括软件的详细技术描述、程序逻辑程序间相互关系、数据格式和存储等。 +开发文档是描述软件开发过程,包括软件需求、软件设计、软件测试、保证软件质量的一类文档,开发文档也包括软件的详细技术描述、程序逻辑、程序间相互关系、数据格式和存储等。 * 《可行性研究》 * 《项目任务书》 @@ -46,7 +46,7 @@ * 《开发计划》 ##### 管理文档 -从管理的角度规定涉及软件生存的信息: +从管理的角度规定涉及软件生存的信息: 1. 职责定义 2. 开发过程的每个阶段的进度和进度变更的记录 3. 软件变更情况的记录 @@ -60,7 +60,7 @@ * 《实施方案》 ##### 产品文档 -为使用和运行软件产品的任何人规定培训和参考信息,促进软件产品的市场流通或提高可接受性。使得那些未参加开发本软件的程序员维护它。 +为使用和运行软件产品的任何人规定培训和参考信息,促进软件产品的市场流通或提高可接受性。使得那些未参加开发本软件的程序员维护它。 * 《产品手册》 * 《用户指南》 @@ -84,27 +84,27 @@ ### 1.2 软件生命周期 1. 需求定义 -**描述:** 定义出本次任务都需要做什么,做成什么样子 -**参与者:** 产品经理,需求分析,客户 +**描述:** 定义出本次任务都需要做什么,做成什么样子。 +**参与者:** 产品经理、需求分析、客户 2. 可行性分析 -**描述:** 由项目组相关成员去研究需求是否可行,能不能做出来 -**参与者:** 产品经理,架构师,项目经理,开发 +**描述:** 由项目组相关成员去研究需求是否可行,能不能做出来。 +**参与者:** 产品经理、架构师、项目经理、开发 3. 需求分析 -**描述:** 需求分析其实是在做需求细化,按照任务说明书中的任务内容和指标具体细化各个点,细化到每个框每个按钮的样式,输入输出等各项值 -**参与者:** 产品经理,架构师,项目经理,测试/质量管理员(很多公司把这个统称为QA),开发 +**描述:** 需求分析其实是在做需求细化,按照任务说明书中的任务内容和指标具体细化各个点,细化到每个框每个按钮的样式,输入输出等各项值。 +**参与者:** 产品经理、架构师、项目经理、测试/质量管理员(很多公司把这个统称为QA)、开发 **输出:**《需求规格说明书》 4. 评审 -**描述:** 评审就是做审查,对这个阶段的工作进行审查,看是否偏离或者有遗漏(比如:设计和工厂的各个环节都有相关的审查,审查材料是否合格、设计是否符合规定、按照工人/设计出的材料需求是否足够或者多余等等,这些审查都是评审);评审一般由相应工作人员来参与 +**描述:** 评审就是做审查,对这个阶段的工作进行审查,看是否偏离或者有遗漏(比如:设计和工厂的各个环节都有相关的审查,审查材料是否合格、设计是否符合规定、按照工人/设计出的材料需求是否足够或者多余等等,这些审查都是评审);评审一般由相应工作人员来参与。 **参与者:** 每个阶段的评审一般都是各职能部门内部审核,也可以申请其他相关人员审核,比如需求评审,一般是产品经理、项目经理、测试、开发一起评审;系统设计一般是项目经理、开发评审;测试策略评审一般是测试组内部评审等等 5. 设计 -**描述:** 架构师根据需求确定产品或者项目的场景、特点,选择合适的框架,技术使项目实现最优化。在此上将系统进行概要设计,包括系统总体数据结构、数据库结构、模块结构以及它们之间的关系等。开发人员根据概要设计对具体模块进行详细设计,包括接口参数、参数等。此处设计会形成概要设计文档和详细设计文档 -**参与者:** 项目经理,架构师,开发,测试 +**描述:** 架构师根据需求确定产品或者项目的场景、特点,选择合适的框架,技术使项目实现最优化。在此上将系统进行概要设计,包括系统总体数据结构、数据库结构、模块结构以及它们之间的关系等。开发人员根据概要设计对具体模块进行详细设计,包括接口参数、参数等。此处设计会形成概要设计文档和详细设计文档。 +**参与者:** 项目经理、架构师、开发、测试 6. 编码 -**描述:** 开发人员根据详细设计文档对系统进行模块化开发,在确定参数和接口的情况下,根据需求对模块内部进行方法级别的设计和编码以及自测,对产品功能进行一一实现 +**描述:** 开发人员根据详细设计文档对系统进行模块化开发,在确定参数和接口的情况下,根据需求对模块内部进行方法级别的设计和编码以及自测,对产品功能进行一一实现。 **参与者:** 开发 7. 提测 -**描述:** 开发人员完成一个小迭代/小功能,且完成自测(开发编码完成后,一般都会自己检测下),于是向测试部门发起提测,一般以邮件方式或者任务管理工具任务流方式向测试部门通知xxx模块/功能可以测试 -**参与者:** 任务责任人(开发)、测试 +**描述:** 开发人员完成一个小迭代/小功能,且完成自测(开发编码完成后,一般都会自己检测下),于是向测试部门发起提测,一般以邮件方式或者任务管理工具任务流方式向测试部门通知xxx模块/功能可以测试。 +**参与者:** 任务责任人(开发)、测试 8. 测试 - 测试需求 - 测试计划 @@ -113,8 +113,8 @@ - 回归测试 - 测试评估 9. 部署/发版 -**描述:** 经过前面的各个阶段,产品已经可以出售或者面见大众了;配置管理人员进行封版、版本制作(针对产品来说)/部署上线(针对项目应用来说)。 -**参与人:** 配置管理人员,测试 +**描述:** 经过前面的各个阶段,产品已经可以出售或者面见大众了。配置管理人员进行封版、版本制作(针对产品来说)/部署上线(针对项目应用来说)。 +**参与人:** 配置管理人员、测试 10. 支持维护 **描述:** 支持维护类似于我们日常中的售后,主要是对已卖出的产品/已上线的项目进行日常维护。包括纠错性维护和改进性维护两个方面。 **参与人:** 支持维护人员/售后工程师 @@ -122,12 +122,11 @@ ### 1.3 软件测试概述 #### 1.3.1 软件测试定义 软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 - -IEEE:使用人工或自动手段来运行或测定某个软件系统的过程,其目的在于检测他是否满足规定的需求或弄清预期结果和实际结果的差别 +IEEE:使用人工或自动手段来运行或测定某个软件系统的过程,其目的在于检测他是否满足规定的需求或弄清预期结果和实际结果的差别。 #### 1.3.2 测试发展历程 1. 1957年之前-调试为主(Debugging Oriented) -软件规模小,复杂度低,开发人员承担需求分析,设计,开发,测试等所有工作,等同于调试。 +软件规模小,复杂度低,开发人员承担需求分析、设计、开发、测试等所有工作,等同于调试。 2. 1957–1978-证明为主(Demonstration Oriented) 与调试区分开,这是软件测试史上一个重要的里程碑,主要目是确认软件是满足需求的。 3. 1979–1982-破坏为主(Destruction Oriented) @@ -138,7 +137,7 @@ The process of executing a program with the intent of finding errors. ``` 这个观点较之前证明为主的思路,是一个很大的进步。我们不仅要证明软件做了该做的事情,也要保证它没做不该做的事情,这会使测试更加全面,更容易发现问题。 4. 1983–1987-评估为主(Evaluation Oriented) -软件行业进入了大发展时期,软件趋向大型化、到复杂度,质量越来越重要。软件测试的基础理论和实用技术开始形成。提出了在软件生命周期中使用分析,评审,测试来评估产品的理论。 +软件行业进入了大发展时期,软件趋向大型化、复杂度,质量越来越重要。软件测试的基础理论和实用技术开始形成。提出了在软件生命周期中使用分析、评审、测试来评估产品的理论。 5. 1988–至今-预防为主(Prevention Oriented) 尽量早的介入,尽量早的发现这些明显的或隐藏的bug,发现得越早,修复起来的成本越低,产生的风险也越小。 @@ -165,7 +164,7 @@ The process of executing a program with the intent of finding errors. **优点:** 相对于瀑布模型,V模型测试能够尽早的进入到开发阶段。 **缺点:** -虽然测试尽早的进入到开发阶段,但是真正进行软件测试是在编码之后,这样忽视了测试对需求分析,系统设计的验证,时间效率上也大打折扣。 +虽然测试尽早的进入到开发阶段,但是真正进行软件测试是在编码之后,这样忽视了测试对需求分析、系统设计的验证,时间效率上也大打折扣。 ##### W模型(双V模型) ![W模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/w-model.png) @@ -173,7 +172,7 @@ The process of executing a program with the intent of finding errors. **优点:** W 模型相对于 V 模型来说,测试更早的进入到开发阶段,与开发阶段是并行关系,更早的发现问题,能够及时解决问题,各个阶段分工明确,方便管理。 **缺点:** -W 模型是顺序性的,不可逆,需求的变更和调整,依旧不方便。 +W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方便。 ##### 螺旋模型 ![螺旋模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/lx-model.png) @@ -223,7 +222,7 @@ W 模型是顺序性的,不可逆,需求的变更和调整,依旧不方便 ### 1.4 软件缺陷 #### 1.4.1 缺陷定义 -IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。 +IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。 符合下面4个条件之一就是缺陷 1. 软件未达到规格说明书中规定的功能 @@ -232,10 +231,10 @@ IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是 4. 软件难于理解,不易使用,运行速度慢,或者最终用户认为软件使用效果不好。 #### 1.4.2 产生原因 -1. 软件本身复杂性,产生大量不确定因素 +1. 软件本身复杂性,产生大量不确定因素。 2. 成本、时间限制,导致流程不够完善,文档缺失,缺乏严谨的评审。 -3. 人员本身技能水平,责任心,交流沟通不顺畅 -4. 不全面或者没有复审 +3. 人员本身技能水平、责任心、交流沟通不顺畅。 +4. 不全面或者没有复审。 #### 1.4.3 缺陷来源 | 缺陷来源 | 描述 | @@ -250,10 +249,10 @@ IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是 | 缺陷类型 | 描述 | | -------- | ------------------------------------------------ | | 功能 | 未达到规格说明书中规定的功能,影响系统使用 | - | 用户界面 | 为按照原型设计,影响交互,如:显示格式,按钮位置 | + | 用户界面 | 未按照原型设计,影响交互,如:显示格式,按钮位置 | | 文档 | 文档内容不完整或不正确,影响发布和维护 | | 软件包 | 由于软件配置库、变更管理或版本控制引发的错误 | - | 性能 | 执行时间,处理速度,负载等方面 | + | 性能 | 执行时间、处理速度、负载等方面 | | 接口 | 与其他模块参数不匹配 | #### 1.4.5 缺陷级别 @@ -261,11 +260,11 @@ IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是 **优先级:** 表示修复缺陷的重要程度和紧迫程度。 ##### 严重性 -| 级别 | 名称 | 说明 | 示例 | -| :---: | :------: | :----------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| S1 | 致命错误 | 严重阻碍开发或测试工作的进行,必须马上解决 | 安装包或App无法安装
网页不能访问
不能启动
死机
核心功能无法使用,比如QQ不能收发消息,邮箱不能收发邮件 | -| S2 | 严重缺陷 | 系统出现重大问题,影响提供的主要功能使用 | 内存泄露
数据无法保存 | -| S3 | 主要错误 | 主要功能实现有问题,易用性不够好 | 某个非核心功能全部或者部分未实现、实现后流程走不通、实现的功能与需求不同、文本框未校验或者校验不全、提示不全(异常提示不合理或者没提示)、手册相关内容缺失、兼容问题、安装界面乱码 | +| 级别 | 名称 | 说明 | 示例 | +| :---: | :------: | :----------------------------------------: | ---- | +| S1 | 致命错误 | 严重阻碍开发或测试工作的进行,必须马上解决 | 安装包或App无法安装
网页不能访问
不能启动
死机
核心功能无法使用,比如QQ不能收发消息,邮箱不能收发邮件 | +| S2 | 严重缺陷 | 系统出现重大问题,影响提供的主要功能使用 | 内存泄露
数据无法保存 | +| S3 | 主要错误 | 主要功能实现有问题,易用性不够好 | 某个非核心功能全部或者部分未实现、实现后流程走不通、实现的功能与需求不同、文本框未校验或者校验不全、提示不全(异常提示不合理或者没提示)、手册相关内容缺失、兼容问题、安装界面乱码 | | S4 | 次要错误 | 次要功能实现有问题或者手册相关问题 | 个别不常用的属性不生效或实现有问题(前提:不影响主要功能使用)
次要功能实现与需求不符或实现有问题(如:日志不能轮转、预警策略不生效、搜索框不能用、快照生成格式有问题等)
错别字
手册描述不合理或样式格式有问题 | | S5 | 轻微缺陷 | 建议,不属于缺陷 | @@ -291,12 +290,12 @@ IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是 #### 1.4.6 跟踪流程 最优化、最简单的生命周期是:(理想情况) -1. 测试员发现缺陷并记录缺陷报告 -2. 缺陷报告交给程序员,此时缺陷状态是打开(open state) -3. 程序员修改缺陷,此时缺陷状态是解决(resolved state) -4. 缺陷报告交还测试员 -5. 测试员确认已修复 -6. 测试员关闭缺陷报告,此时缺陷状态是关闭(closed state) +1. 测试员发现缺陷并记录缺陷报告。 +2. 缺陷报告交给程序员,此时缺陷状态是打开。(open state) +3. 程序员修改缺陷,此时缺陷状态是解决。(resolved state) +4. 缺陷报告交还测试员。 +5. 测试员确认已修复。 +6. 测试员关闭缺陷报告,此时缺陷状态是关闭。(closed state) 一个缺陷很可能会被反复打开→关闭。在日常工作过程中,由于开发修订其他缺陷影响、需求变更等因素缺陷可能会被反复打开→关闭。 @@ -318,7 +317,7 @@ IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是 3. bug严重级别,优先级:作为缺陷是否修复以及缺陷修复优先级的决定性因素。 4. bug产生的模块:记录bug所属模块,方便开发定位问题。 5. bug对应的版本:bug对应的软件版本,方便后续的统计归档以及开发定位问题。 -6. bug描述:bug的产生环境、详细步骤,期望结果、实际结果。 +6. bug描述:bug的产生环境、详细步骤、期望结果、实际结果。 7. 附件:包括但不仅限于截图、日志、录像、所用到的示例文件以及应用;同样是方便复现解决缺陷的。 以上是上报bug(创建)bug必须的,在后续我们还会对bug进行修复、复测等工作,那在为了记录后续工作,bug还应该包含: 8. bug状态:开始、修复中、修复完成、提测、测试中、测试通过/失败、关闭等,后续bug周期中会讲到。 @@ -341,17 +340,17 @@ IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是 在软件业较发达的国家,软件测试产业已形成规模,比较发达,软件测试不仅早已成为软件开发的一个重要组成部分,而且在整个软件开发的系统工程中占据着相当大的比重。在微软公司内部,软件测试人员与软件开发人员的比例一般为1.5∶1到2.5∶1左右,即一个开发人员背后,有至少两位测试人员在工作,以保证软件产品的质量1。国外优秀的软件开发机构把40%的工作花在软件测试上,软件测试费用占软件开发总费用的30%至50%,对于一些要求高可靠性、高安全性的软件,测试费用甚至相当于整个软件项目开发所有费用的3至5倍。 -从国内软件公司软件测试部门的独立性来看,多数软件企业没有专门的测试技术部门,软件测试程序也不太规范,多数企业也不懂测试,对测试的投入资金过少。大多数是在经过简单的测试之后,就认为是没有问题了,就交于用户了,让用户去“测试”;于是,软件产品在没有经过严格测试的情况下就发布了;对国内消费类软件而言,经常出现一些已经推向市场的产品由于被发现有严重缺陷而导致大量退货的现象;定制的行业软件,常出现一再返工、无限期的修改和维护的现象。 +从国内软件公司软件测试部门的独立性来看,多数软件企业没有专门的测试技术部门,软件测试程序也不太规范,多数企业也不懂测试,对测试的投入资金过少。大多数是在经过简单的测试之后,就认为是没有问题了,就交于用户了,让用户去“测试”。于是,软件产品在没有经过严格测试的情况下就发布了。对国内消费类软件而言,经常出现一些已经推向市场的产品由于被发现有严重缺陷而导致大量退货的现象。定制的行业软件,常出现一再返工、无限期的修改和维护的现象。 当前国内软件测试行业主要存在以下问题: -1. 软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题; -2. 面向对象的开发技术越来越普及,但是面向对象的测试技术却刚刚起步; -3. 对于分布式系统整体性能还难以进行很好的测试; -4. 对于实时系统缺乏有效的测试手段; -5. 随着安全问题的日益突出,信息系统的安全性如何进行有效的测试与评估,成为世界性的难题; -6. 测试的自动化程度不高,手工测试过多,自动化测试工具和手工测试人员也缺乏较好的结合; -7. 缺乏软件测试意识、对其重视不够; -8. 在软件开发基本完成后才进行测试,也缺乏软件测试的统一标准; +1. 软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题。 +2. 面向对象的开发技术越来越普及,但是面向对象的测试技术却刚刚起步。 +3. 对于分布式系统整体性能还难以进行很好的测试。 +4. 对于实时系统缺乏有效的测试手段。 +5. 随着安全问题的日益突出,信息系统的安全性如何进行有效的测试与评估,成为世界性的难题。 +6. 测试的自动化程度不高,手工测试过多,自动化测试工具和手工测试人员也缺乏较好的结合。 +7. 缺乏软件测试意识、对其重视不够。 +8. 在软件开发基本完成后才进行测试,也缺乏软件测试的统一标准。 9. 高校从师资储备到专业设置再到人才培养的机制薄弱。 国内外软件测试差距 @@ -372,7 +371,7 @@ IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是 - 敏捷测试专家 - 高级测试开发专家 - 专项测试专家 - - QAOps专家 + - QA-Ops 专家 2. 管理方向 - 测试组长 - 测试经理 @@ -395,7 +394,7 @@ IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是 2. 存在太多无法测试的东西 3. 软件开发完成后才进行测试 4. 软件发布后发现质量问题,是测试人员的问题 -5. 软件测试很简单,就是点点点,是个人就能做 +5. 软件测试很简单,就是点点点,是个人就能做 6. 软件测试是测试人员的事情和程序员无关 7. 项目进度吃紧时少做测试,时间多时多做测试 8. 测试要进行穷尽测试 @@ -412,24 +411,24 @@ IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是 ### 2.1 概述 1. 从软件测试的目的来理解 软件的目的是发现软件中的错误,是为了证明软件有错,而不是无错。是在软件投入运行前,对软件需求分析、设计和编码各个阶段产品的最终检查,是为了保证软件开发产品的正确性、完整性和一致性。 -2. 从软件测试的性质来理解 -在软件开发过程中,分析、设计和编码都是“建设性的”,唯有测试是“破坏性的” -3. 从软件开发角度来理解 -软件测试以检查产品的内容和功能特性为核心,是软件质量保证的关键步骤,也是成功实现软件开发目标的重要保障 +2. 从软件测试的性质来理解 +在软件开发过程中,分析、设计和编码都是“建设性的”,唯有测试是“破坏性的”。 +3. 从软件开发角度来理解 +软件测试以检查产品的内容和功能特性为核心,是软件质量保证的关键步骤,也是成功实现软件开发目标的重要保障。 4. 从软件工程角度来理解 -软件测试是软件工程的一部分,是软件工程过程中的重要阶段 +软件测试是软件工程的一部分,是软件工程过程中的重要阶段。 5. 从软件质量保证角度来理解 -软件测试是软件质量保证的重要措施 +软件测试是软件质量保证的重要措施。 ### 2.2 测试的目的和原则 #### 2.2.1 测试的目的 -1. 测试不仅仅是找出错误,通过分析错误产生的原因和错误的发展趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便即时改进 +1. 测试不仅仅是找出错误。通过分析错误产生的原因和错误的发展趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便即时改进 2. 检测产品是否符合用户要求 3. 没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法 4. 提升用户体验 #### 2.2.2 测试的原则 -1. 软件测试是证伪而非证真 +1. 软件测试是证伪而非证实 2. 尽早地、不断地进行测试 3. 重视无效数据和非预期的测试 4. 应当对每一个测试结果做全面的检查 @@ -447,12 +446,12 @@ IEEE729-1983对缺陷有一个标准的定义:从产品内部看,缺陷是 5. 验收测试 软件测试阶段对照表: -|测试阶段|主要依据|参与人员/测试方式|主要测试内容| -|----|----|----|----| -|单元测试|《详细设计》|开发小组执行白盒测试|规范、逻辑、路径| -|集成测试|《概要设计》
《需求文档》|开发小组执行白盒测试、黑盒测试|接口、路径、功能、性能| -|系统测试|《需求文档》|独立测试小组执行黑盒测试|功能测试、界面测试、安全测试、兼容性测试、易用性测试、性能测试、压力测试、负载测试| -|验收测试|《需求文档》|用户执行黑盒测试|同上| +| 测试阶段 | 主要依据 | 参与人员/测试方式 | 主要测试内容 | +| -------- | ---------------------------- | ------------------------------ | ---------------------------------------------------------------------------------- | +| 单元测试 | 《详细设计》 | 开发小组执行白盒测试 | 规范、逻辑、路径 | +| 集成测试 | 《概要设计》
《需求文档》 | 开发小组执行白盒测试、黑盒测试 | 接口、路径、功能、性能 | +| 系统测试 | 《需求文档》 | 独立测试小组执行黑盒测试 | 功能测试、界面测试、安全测试、兼容性测试、易用性测试、性能测试、压力测试、负载测试 | +| 验收测试 | 《需求文档》 | 用户执行黑盒测试 | 同上 | #### 2.3.2 按照执行状态划分 1. 静态测试 -- Gitee From f71c3452302286e2522c63310a2025d027d58a1f Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Tue, 14 Sep 2021 10:23:21 +0800 Subject: [PATCH 02/63] =?UTF-8?q?=E5=9B=BE=E7=89=87=E6=8D=A2=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 66f6e73..fbbd25e 100644 --- a/README.md +++ b/README.md @@ -596,7 +596,9 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 3. 设计一个新的测试用例,使其只覆盖一个无效等价类,重复这一步直到所有无效等价类均被覆盖。 #### 3.2.3 等价类举例 我们要测试学习成绩这一输入框(假设总成绩都是100),那么我们就可以如下图划分,有效的成绩是>=0且<=100的,无效的是<0和>100这两部分。 + ![等价类举例](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/dengjialei.jpg) + 另外图中还有一个无效等价类没有表现出来--非数字字符(比如:英文字母、中文、特殊的符号等单一或者组合,如a、abc、你好、你abc、你=我、\你\a\等;以及他们分别与数字组合,比如:a123、321a、你123、12你、1你2、1\2、1=你等)。 那么根据上述分析,最终设计出来的测试用例如下: @@ -631,9 +633,11 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 1. 一般边界值分析 对于含有n个变量的程序,取值为min、min+、normal,max-、max,测试用例数目为4*N+1。 ![一般边界值分析](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/bianjiezhi1.jpg) + 2. 健壮性边界值分析 健壮性边界值测试是边界值分析的一种扩展。变量除了取min、min+、normal、max-、max 5个边界值外,还要考虑略超过最大值(max+)以及略小于最小值(min-)的取值。因此,对于含有n个变量的程序,健壮性边界值分析产生6*n+1个测试用例。 ![健壮性边界值分析](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/bianjiezhi2.jpg) + #### 3.3.3 应用举例 延伸上节的例子来说明:学生信息系统中有一个“考试成绩”的输入项,成绩的取值范围是0~100之间的整数,考试成绩及格的分数线是60,优秀的分数线是80。那么这个例子中的边界值数据是哪些呢: @@ -761,6 +765,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 原因——结果图使用了简单的逻辑符号,以直线连接左右结点,左结点表示输入状态(原因),右结点表示输出状态(结果)。 ![原因 - 结果图](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/yinguotu.png) + * “恒等”:若原因出现,则结果出现;若原因不出现,则结果不出现。 * “非”:若原因出现,则结果不出现;若原因不出现,则结果出现。 * “或”:若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现。 @@ -770,6 +775,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 输入输出状态相互之间存在的某些依赖关系,称为约束。 ![约束图](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/yueshutu.png) + * E(互斥):原因不会同时成立,最多1个成立,可以都不成立 * I(包含):原因中至少一个成立,不能同时为0 * O(唯一):原因中有且只有一个成立 @@ -838,6 +844,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 #### 3.6.1 ATM取款流程图 ![ATM取款流程图](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/atm.png) + #### 3.6.2 ATM取款场景设计 | 场景编号 | 流程 | 结果 | | :------: | ---------------------------------------------------------------------------------------- | -------------------- | -- Gitee From 93735f08ee10182d8693aa27d7a03723fd83d81e Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Tue, 14 Sep 2021 10:48:11 +0800 Subject: [PATCH 03/63] =?UTF-8?q?=E6=8C=89=E7=85=A7=E5=91=A8=E8=AF=9A?= =?UTF-8?q?=E7=9A=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 103 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 54 insertions(+), 49 deletions(-) diff --git a/README.md b/README.md index fbbd25e..52ae92e 100644 --- a/README.md +++ b/README.md @@ -83,37 +83,37 @@ 6. 过程管理重要 ### 1.2 软件生命周期 -1. 需求定义 +#### 1.2.1 需求定义 **描述:** 定义出本次任务都需要做什么,做成什么样子。 **参与者:** 产品经理、需求分析、客户 -2. 可行性分析 +#### 1.2.2 可行性分析 **描述:** 由项目组相关成员去研究需求是否可行,能不能做出来。 **参与者:** 产品经理、架构师、项目经理、开发 -3. 需求分析 -**描述:** 需求分析其实是在做需求细化,按照任务说明书中的任务内容和指标具体细化各个点,细化到每个框每个按钮的样式,输入输出等各项值。 +#### 1.2.3 需求分析 +**描述:** 需求分析其实是在做需求细化,按照任务说明书中的任务内容和指标具体细化各个点,细化到每个输入框、每个按钮的样式,输入输出等各项值。 **参与者:** 产品经理、架构师、项目经理、测试/质量管理员(很多公司把这个统称为QA)、开发 **输出:**《需求规格说明书》 -4. 评审 +#### 1.2.4 评审 **描述:** 评审就是做审查,对这个阶段的工作进行审查,看是否偏离或者有遗漏(比如:设计和工厂的各个环节都有相关的审查,审查材料是否合格、设计是否符合规定、按照工人/设计出的材料需求是否足够或者多余等等,这些审查都是评审);评审一般由相应工作人员来参与。 **参与者:** 每个阶段的评审一般都是各职能部门内部审核,也可以申请其他相关人员审核,比如需求评审,一般是产品经理、项目经理、测试、开发一起评审;系统设计一般是项目经理、开发评审;测试策略评审一般是测试组内部评审等等 -5. 设计 -**描述:** 架构师根据需求确定产品或者项目的场景、特点,选择合适的框架,技术使项目实现最优化。在此上将系统进行概要设计,包括系统总体数据结构、数据库结构、模块结构以及它们之间的关系等。开发人员根据概要设计对具体模块进行详细设计,包括接口参数、参数等。此处设计会形成概要设计文档和详细设计文档。 +#### 1.2.5 设计 +**描述:** 架构师根据需求确定产品或者项目的场景、特点,选择合适的框架,技术使项目实现最优化。在此上将系统进行概要设计,包括系统总体数据结构、数据库结构、模块结构以及它们之间的关系等。开发人员根据概要设计对具体模块进行详细设计,包括接口、参数等。此处设计会形成概要设计文档和详细设计文档。 **参与者:** 项目经理、架构师、开发、测试 -6. 编码 +#### 1.2.6 编码 **描述:** 开发人员根据详细设计文档对系统进行模块化开发,在确定参数和接口的情况下,根据需求对模块内部进行方法级别的设计和编码以及自测,对产品功能进行一一实现。 **参与者:** 开发 -7. 提测 -**描述:** 开发人员完成一个小迭代/小功能,且完成自测(开发编码完成后,一般都会自己检测下),于是向测试部门发起提测,一般以邮件方式或者任务管理工具任务流方式向测试部门通知xxx模块/功能可以测试。 +#### 1.2.7 提测 +**描述:** 开发人员完成一个小迭代/小功能,且完成自测(开发编码完成后,一般都会自己检测下),于是向测试部门发起提测,一般以邮件方式或者任务管理工具的任务流方式向测试部门通知xxx模块/功能可以测试。 **参与者:** 任务责任人(开发)、测试 -8. 测试 +#### 1.2.8 测试 - 测试需求 - 测试计划 - 测试设计 - 测试执行 - 回归测试 - 测试评估 -9. 部署/发版 -**描述:** 经过前面的各个阶段,产品已经可以出售或者面见大众了。配置管理人员进行封版、版本制作(针对产品来说)/部署上线(针对项目应用来说)。 +#### 1.2.9 部署/发版 +**描述:** 经过前面的各个阶段,产品已经可以出售或者面向大众了。配置管理人员进行封版、版本制作(针对产品来说)/部署上线(针对项目应用来说)。 **参与人:** 配置管理人员、测试 10. 支持维护 **描述:** 支持维护类似于我们日常中的售后,主要是对已卖出的产品/已上线的项目进行日常维护。包括纠错性维护和改进性维护两个方面。 @@ -142,42 +142,45 @@ The process of executing a program with the intent of finding errors. 尽量早的介入,尽量早的发现这些明显的或隐藏的bug,发现得越早,修复起来的成本越低,产生的风险也越小。 #### 1.3.3 测试与开发的关系 -##### 瀑布模型 +**瀑布模型** ![瀑布模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/pb-model.png) 这是一种经典模型,提供了软件开发的基本框架。 强调开发工作(计划、设计、开发、测试、维护等)各阶段之间的先后顺序,不可以并行操作。 瀑布模型认为,测试是指代码完成后,处于运行维护阶段之前。如果需求和设计上存在缺陷,就会造成大量返工,增加成本。为了更早的发现问题,测试应延伸到需求评审,设计审查活动中,软件生命周期的每个阶段都应包含测试。 -**优点:** +**优点:** 1. 各阶段划分清晰 2. 强调计划与需求分析 3. 适合需求稳定的产品开发 -**缺点:** +**缺点:** 1. 单一流程,不可逆 2. 风险显露得晚,纠正机会少 3. 测试只是其中一个阶段,缺乏全过程测试思想 -##### V模型 + +**V模型** ![V模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/v-model.png) 强调将测试和开发同等重要,对于开发阶段都有与之对应的测试阶段。 -**优点:** +**优点:** 相对于瀑布模型,V模型测试能够尽早的进入到开发阶段。 -**缺点:** -虽然测试尽早的进入到开发阶段,但是真正进行软件测试是在编码之后,这样忽视了测试对需求分析、系统设计的验证,时间效率上也大打折扣。 -##### W模型(双V模型) +**缺点:** +虽然测试尽早的进入到开发阶段,但是真正进行软件测试是在编码之后,这样忽视了测试对需求分析、系统设计的验证,时间效率上也大打折扣。 + +**W模型(双V模型)** ![W模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/w-model.png) 明确表示出了测试与开发的并行关系 **优点:** W 模型相对于 V 模型来说,测试更早的进入到开发阶段,与开发阶段是并行关系,更早的发现问题,能够及时解决问题,各个阶段分工明确,方便管理。 **缺点:** -W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方便。 -##### 螺旋模型 +W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方便。 + +**螺旋模型** ![螺旋模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/lx-model.png) 大型软件项目通常有很多不确定性和风险,如果采用瀑布式线性过程模型,失败风险很大,因此需要采取一种渐进式的演化过程模型。将产品分解成增量版本,每个版本单独测试。 -##### 敏捷模型 +**敏捷模型** ![敏捷模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/mj-model.png) 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。专注于交付对客户有价值的软件(可以工作的)。 @@ -202,17 +205,17 @@ W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方 **解读:** -* 个体和互动高于流程和工具 +* 个体和互动高于流程和工具 以人为本,没有比面对面交流更高效的沟通渠道了,基于互相信任的前提,敏捷提倡自治的全功能团队。 在工作形式上,整个团队平时坐在一起工作,从物理空间上创造了更加便捷面对面的沟通机会。在团队职责上,团队内部具备完成软件交付的角色(能力),团队所有人对软件的质量负责,开发过程由团队内部把控,业务价值团队内部快速流动,在任何环节都能及时获得反馈。同时,每个角色都更容易从全局视角去思考软件,避免了传统部门墙模式下的视角割裂和协作障碍。 -* 工作的软件高于详尽的文档 +* 工作的软件高于详尽的文档 为客户交付可工作的软件是我们的核心目标,我们应该尽早交付可进行端到端测试的代码,该目标决定了我们不应该花过多精力在面面俱到的文档上,但这不代表我们要抵制任何文档。实践证明,轻量级的文档策略有助于团队高质量交付可工作的软件。 -* 客户合作高于合同谈判 +* 客户合作高于合同谈判 主动拥抱变化,及时响应,持续交付。 -* 响应变化高于遵循计划 +* 响应变化高于遵循计划 通过高效的协作,获取快速的反馈,从而尽早做出调整,减少浪费 **缺点:** @@ -252,7 +255,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 | 用户界面 | 未按照原型设计,影响交互,如:显示格式,按钮位置 | | 文档 | 文档内容不完整或不正确,影响发布和维护 | | 软件包 | 由于软件配置库、变更管理或版本控制引发的错误 | - | 性能 | 执行时间、处理速度、负载等方面 | + | 性能 | 执行时间长、处理速度慢、负载高等方面 | | 接口 | 与其他模块参数不匹配 | #### 1.4.5 缺陷级别 @@ -277,7 +280,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 | P3 | 高 | 影响整个测试的继续进行,要马上修改 | | P4 | 急 | 系统无法继续执行下去,必须立即修改 | -严重性和优先级对于审查缺陷报告并决定哪些软件缺陷应该修复,以何种顺序修复的人员极为重要。如果一个程序员受命修复10个缺陷,他就应该先从严重性为1 、优先级为1这样的缺陷着手,而不是优先修复简单的,有简到难。 +严重性和优先级对于审查缺陷报告并决定哪些软件缺陷应该修复,以何种顺序修复的人员极为重要。如果一个程序员受命修复10个缺陷,他就应该先从严重性为1 、优先级为1这样的缺陷着手,而不是优先修复简单的,由简到难。 综合使用重要性等级和严重性双标准的优先顺序: @@ -319,13 +322,15 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 5. bug对应的版本:bug对应的软件版本,方便后续的统计归档以及开发定位问题。 6. bug描述:bug的产生环境、详细步骤、期望结果、实际结果。 7. 附件:包括但不仅限于截图、日志、录像、所用到的示例文件以及应用;同样是方便复现解决缺陷的。 -以上是上报bug(创建)bug必须的,在后续我们还会对bug进行修复、复测等工作,那在为了记录后续工作,bug还应该包含: -8. bug状态:开始、修复中、修复完成、提测、测试中、测试通过/失败、关闭等,后续bug周期中会讲到。 -9. bug修订人:bug修订人员。 -10. bug复测人:通常是谁报的bug最后返回给谁测试,但是在某些情况下比如bug报告人任务积累太多/不在的情况下也会分给其他人,所以通常会记录bug复测责任人。 -11. bug修订说明:由bug修订人来写,说明bug产生原因,修改思路等。 -12. bug复测说明:由复测人员来写,说明复测过程,复测结果等。 -13. bug备注:备注,以便记录一些额外信息。 + +以上是上报bug、创建bug必须的,在后续我们还会对bug进行修复、复测等工作,那在为了记录后续工作,bug还应该包含: + +1. bug状态:开始、修复中、修复完成、提测、测试中、测试通过/失败、关闭等,后续bug周期中会讲到。 +2. bug修订人:bug修订人员。 +3. bug复测人:通常是谁报的bug最后返回给谁测试,但是在某些情况下比如bug报告人任务积累太多/不在的情况下也会分给其他人,所以通常会记录bug复测责任人。 +4. bug修订说明:由bug修订人来写,说明bug产生原因,修改思路等。 +5. bug复测说明:由复测人员来写,说明复测过程,复测结果等。 +6. bug备注:备注,以便记录一些额外信息。 #### 1.4.8 缺陷预防 差错:人在理解和解决问题的思维和行为过程中出现的问题,沟通不当,理解错误。(产生根源) @@ -422,20 +427,20 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 ### 2.2 测试的目的和原则 #### 2.2.1 测试的目的 -1. 测试不仅仅是找出错误。通过分析错误产生的原因和错误的发展趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便即时改进 -2. 检测产品是否符合用户要求 -3. 没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法 -4. 提升用户体验 +1. 测试不仅仅是找出错误。通过分析错误产生的原因和错误的发展趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便即时改进。 +2. 检测产品是否符合用户要求。 +3. 没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。 +4. 提升用户体验。 #### 2.2.2 测试的原则 -1. 软件测试是证伪而非证实 -2. 尽早地、不断地进行测试 -3. 重视无效数据和非预期的测试 -4. 应当对每一个测试结果做全面的检查 -5. 测试现场保护和资料归档 -6. 程序员应避免检查自己的程序 -7. 充分注意测试中的集群现象 -8. 用例要定期评审,适时补充修改用例 +1. 软件测试是证伪而非证实。 +2. 尽早地、不断地进行测试。 +3. 重视无效数据和非预期的测试。 +4. 应当对每一个测试结果做全面的检查。 +5. 测试现场保护和资料归档。 +6. 程序员应避免检查自己的程序。 +7. 充分注意测试中的集群现象。 +8. 用例要定期评审,适时补充修改用例。 ### 2.3 测试分类 #### 2.3.1 按照测试阶段划分 -- Gitee From 62ca084b69116e3054c243d12e198aae895e0907 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Tue, 14 Sep 2021 11:00:03 +0800 Subject: [PATCH 04/63] =?UTF-8?q?=E9=9F=A9=E6=99=93=E5=BD=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 33 ++++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 52ae92e..b56ecbe 100644 --- a/README.md +++ b/README.md @@ -68,7 +68,7 @@ * 《软件支持手册》 #### 1.1.3 软件发展史 -1. 程序设计阶段:个体化生产,专用软件,规模小功能单一,开发者即使用者。软件 = 程序 +1. 程序设计阶段:个体化生产、专用软件、规模小、功能单一、开发者即使用者。软件 = 程序 2. 程序系统阶段:多用户人机交互,实时系统和数据库管理系统。 3. 软件工程阶段:以软件的产品化,系列化、工程化和标准化为特征的软件产业发展起来,软件开发有了可以遵循的软件工程化的设计准则、方法和标准。 4. 多层分布结构,面向服务架构 @@ -85,7 +85,7 @@ ### 1.2 软件生命周期 #### 1.2.1 需求定义 **描述:** 定义出本次任务都需要做什么,做成什么样子。 -**参与者:** 产品经理、需求分析、客户 +**参与者:** 产品经理、需求分析师、客户 #### 1.2.2 可行性分析 **描述:** 由项目组相关成员去研究需求是否可行,能不能做出来。 **参与者:** 产品经理、架构师、项目经理、开发 @@ -97,7 +97,7 @@ **描述:** 评审就是做审查,对这个阶段的工作进行审查,看是否偏离或者有遗漏(比如:设计和工厂的各个环节都有相关的审查,审查材料是否合格、设计是否符合规定、按照工人/设计出的材料需求是否足够或者多余等等,这些审查都是评审);评审一般由相应工作人员来参与。 **参与者:** 每个阶段的评审一般都是各职能部门内部审核,也可以申请其他相关人员审核,比如需求评审,一般是产品经理、项目经理、测试、开发一起评审;系统设计一般是项目经理、开发评审;测试策略评审一般是测试组内部评审等等 #### 1.2.5 设计 -**描述:** 架构师根据需求确定产品或者项目的场景、特点,选择合适的框架,技术使项目实现最优化。在此上将系统进行概要设计,包括系统总体数据结构、数据库结构、模块结构以及它们之间的关系等。开发人员根据概要设计对具体模块进行详细设计,包括接口、参数等。此处设计会形成概要设计文档和详细设计文档。 +**描述:** 架构师根据需求确定产品或者项目的场景、特点,选择合适的框架,技术使项目实现最优化。在此基础上将系统进行概要设计,包括系统总体数据结构、数据库结构、模块结构以及它们之间的关系等。开发人员根据概要设计对具体模块进行详细设计,包括接口、参数等。此处设计会形成概要设计文档和详细设计文档。 **参与者:** 项目经理、架构师、开发、测试 #### 1.2.6 编码 **描述:** 开发人员根据详细设计文档对系统进行模块化开发,在确定参数和接口的情况下,根据需求对模块内部进行方法级别的设计和编码以及自测,对产品功能进行一一实现。 @@ -130,12 +130,15 @@ IEEE:使用人工或自动手段来运行或测定某个软件系统的过程, 2. 1957–1978-证明为主(Demonstration Oriented) 与调试区分开,这是软件测试史上一个重要的里程碑,主要目是确认软件是满足需求的。 3. 1979–1982-破坏为主(Destruction Oriented) -1979年,《软件测试的艺术》 (The Art of Software Testing)第一版问世,这本书是测试界的经典之作。书中给出了软件测试的经典定义: +1979年,《软件测试的艺术》 (The Art of Software Testing)第一版问世,这本书是测试界的经典之作。书中给出了软件测试的经典定义: + ``` The process of executing a program with the intent of finding errors. 测试是为发现错误而执行程序的过程。 ``` -这个观点较之前证明为主的思路,是一个很大的进步。我们不仅要证明软件做了该做的事情,也要保证它没做不该做的事情,这会使测试更加全面,更容易发现问题。 + +这个观点较之前证明为主的思路,是一个很大的进步。我们不仅要证明软件做了该做的事情,也要保证它没做不该做的事情,这会使测试更加全面,更容易发现问题。 + 4. 1983–1987-评估为主(Evaluation Oriented) 软件行业进入了大发展时期,软件趋向大型化、复杂度,质量越来越重要。软件测试的基础理论和实用技术开始形成。提出了在软件生命周期中使用分析、评审、测试来评估产品的理论。 5. 1988–至今-预防为主(Prevention Oriented) @@ -163,7 +166,7 @@ The process of executing a program with the intent of finding errors. 强调将测试和开发同等重要,对于开发阶段都有与之对应的测试阶段。 **优点:** -相对于瀑布模型,V模型测试能够尽早的进入到开发阶段。 +相对于瀑布模型,V模型测试能够尽早的进入到开发阶段。 **缺点:** 虽然测试尽早的进入到开发阶段,但是真正进行软件测试是在编码之后,这样忽视了测试对需求分析、系统设计的验证,时间效率上也大打折扣。 @@ -172,7 +175,7 @@ The process of executing a program with the intent of finding errors. 明确表示出了测试与开发的并行关系 **优点:** -W 模型相对于 V 模型来说,测试更早的进入到开发阶段,与开发阶段是并行关系,更早的发现问题,能够及时解决问题,各个阶段分工明确,方便管理。 +W 模型相对于 V 模型来说,测试更早的进入到开发阶段,与开发阶段是并行关系,更早的发现问题,能够及时解决问题,各个阶段分工明确,方便管理。 **缺点:** W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方便。 @@ -227,10 +230,10 @@ W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方 #### 1.4.1 缺陷定义 IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。 -符合下面4个条件之一就是缺陷 -1. 软件未达到规格说明书中规定的功能 -2. 软件出现了产品说明数中指明的不会出现的错误 -3. 软件功能超出了产品说明书中指明的范围 +符合下面4个条件之一就是缺陷: +1. 软件未达到规格说明书中规定的功能。 +2. 软件出现了产品说明数中指明的不会出现的错误。 +3. 软件功能超出了产品说明书中指明的范围。 4. 软件难于理解,不易使用,运行速度慢,或者最终用户认为软件使用效果不好。 #### 1.4.2 产生原因 @@ -364,14 +367,14 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 3. 测试工具的使用 4. 测试人员的培养 -#### 1.5.3 未来趋势 -1. 以软件为代表的计算机行业正在以一种井喷式的发展趋势 +#### 1.5.2 未来趋势 +1. 以软件为代表的计算机行业正在以一种井喷式的趋势发展 2. 人才缺口大 3. 女性员工受到青睐 4. 未来发展空间大 5. 外包为主 -#### 1.5.2 软件测试职业发展 +#### 1.5.3 软件测试职业发展 1. 技术方向 - 敏捷测试专家 - 高级测试开发专家 @@ -386,7 +389,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 - 项目经理 - 产品经理 -#### 1.5.3 测试思维方式 +#### 1.5.4 测试思维方式 1. 逆向思维方式 2. 组合思维方式 3. 全局思维方式 -- Gitee From 1795da980a74e1d51c45ae1f706b97a573173584 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Tue, 14 Sep 2021 11:03:57 +0800 Subject: [PATCH 05/63] =?UTF-8?q?=E8=AE=B8=E7=94=9C=E7=94=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b56ecbe..5bd826c 100644 --- a/README.md +++ b/README.md @@ -403,16 +403,17 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 3. 软件开发完成后才进行测试 4. 软件发布后发现质量问题,是测试人员的问题 5. 软件测试很简单,就是点点点,是个人就能做 -6. 软件测试是测试人员的事情和程序员无关 -7. 项目进度吃紧时少做测试,时间多时多做测试 -8. 测试要进行穷尽测试 -9. 采样是随机抽取过程 -10. 测试和开发是对头 -11. 测试少报bug开发就会高兴点,报告也会好看点 -12. 自动化测试终会取代手工测试 -13. 规范化软件测试是增加项目成本 -14. 越多测试越有效 -15. 软件测试工作只负责项目上线/产品发布之前的部分 +6. 软件测试没有前途,只有程序员才是软件高手 +7. 软件测试是测试人员的事情和程序员无关 +8. 项目进度吃紧时少做测试,时间多时多做测试 +9. 测试要进行穷尽测试 +10. 采样是随机抽取过程 +11. 测试和开发是对头 +12. 测试少报bug开发就会高兴点,报告也会好看点 +13. 自动化测试终会取代手工测试 +14. 规范化软件测试是增加项目成本 +15. 越多测试越有效 +16. 软件测试工作只负责项目上线/产品发布之前的部分 ### 1.7 知识点总结 ## 第2章 软件测试基础知识 -- Gitee From aff6f0eea0ad9d6d7cdb2e34c71da145e9bf5642 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E8=AF=9A?= Date: Tue, 14 Sep 2021 18:47:33 +0800 Subject: [PATCH 06/63] add preview --- .DS_Store | Bin 8196 -> 6148 bytes README.html | 2063 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 2063 insertions(+) create mode 100644 README.html diff --git a/.DS_Store b/.DS_Store index a9d5eb04e5fcb8704779b43f4aefa75b089e5836..f164f471049cc4843ce648fc54f74f0a1c69533f 100644 GIT binary patch delta 121 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{MGjUEV6q~50$jH7iU^gQp`(z#g?akprx{RAI zikLBPY{+F?%+A3f$P82p1OnVZ!WE=zW8rt^$^0^oAY&OA85meVG!w*Ju-N8!o;l0_ DH+`AHyCfOtI+>-`4?AtDG(jSVLYGn=Y|)gxO4 zG>?ZNh{2V?k->$*7f9 + + +README.md + + + + + + + + + + + + +

软件测试

+

写在最前面

+

1 课程目标

+
    +
  • 掌握基础的软件测试理论、测试方法和策略
  • +
  • 掌握常用工具使用
  • +
  • 根据需求和设计文档独立编写测试计划、测试方案、测试用例以及测试报告
  • +
+

2 主要内容

+
    +
  • 软件测试基础知识
  • +
  • 软件测试通用技术
  • +
  • 软件测试流程
  • +
  • 黑盒测试
  • +
  • 白盒测试
  • +
  • 性能测试
  • +
  • 软件测试自动化
  • +
  • 软件测试管理
  • +
+

3 课程安排

+

学时安排:72课时(理论36+实践36)
+教材:清华大学出版社 《软件测试》(第2版) 周元哲 编著

+

4 课程资源

+ +

第1章 软件测试概论

+

1.1 软件

+

1.1.1 软件定义

+

软件是一系列按照特定顺序组织的计算机数据和指令的集合。
+软件 ≠ 程序(代码)
+软件包含如下内容:

+
    +
  1. 运行时,能够提供所要求功能和性能的指令或计算机程序。
  2. +
  3. 程序能够处理信息的数据结构。
  4. +
  5. 用于描述程序功能需求、程序如何操作和如何使用的文档。
  6. +
+

1.1.2 文档

+
开发文档
+

开发文档是描述软件开发过程,包括软件需求、软件设计、软件测试、保证软件质量的一类文档,开发文档也包括软件的详细技术描述、程序逻辑、程序间相互关系、数据格式和存储等。

+
    +
  • 《可行性研究》
  • +
  • 《项目任务书》
  • +
  • 《需求规格说明书》
  • +
  • 《概要设计》
  • +
  • 《详细设计》
  • +
  • 《代码规范说明书》
  • +
  • 《数据字典》
  • +
  • 《开发计划》
  • +
+
管理文档
+

从管理的角度规定涉及软件生存的信息:

+
    +
  1. 职责定义
  2. +
  3. 开发过程的每个阶段的进度和进度变更的记录
  4. +
  5. 软件变更情况的记录
  6. +
  7. 相对于开发的判定记录
  8. +
+
    +
  • 《工作报告》
  • +
  • 《工作日志》
  • +
  • 《会议记录》
  • +
  • 《里程碑报告》
  • +
  • 《软件项目配置管理计划》
  • +
  • 《实施方案》
  • +
+
产品文档
+

为使用和运行软件产品的任何人规定培训和参考信息,促进软件产品的市场流通或提高可接受性。使得那些未参加开发本软件的程序员维护它。

+
    +
  • 《产品手册》
  • +
  • 《用户指南》
  • +
  • 《培训手册》
  • +
  • 《软件支持手册》
  • +
+

1.1.3 软件发展史

+
    +
  1. 程序设计阶段:个体化生产、专用软件、规模小、功能单一、开发者即使用者。软件 = 程序
  2. +
  3. 程序系统阶段:多用户人机交互,实时系统和数据库管理系统。
  4. +
  5. 软件工程阶段:以软件的产品化,系列化、工程化和标准化为特征的软件产业发展起来,软件开发有了可以遵循的软件工程化的设计准则、方法和标准。
  6. +
  7. 多层分布结构,面向服务架构
  8. +
+

1.1.4 软件项目

+

软件项目是一种特殊的项目,具有如下特点:

+
    +
  1. 知识密集型,技术含量高
  2. +
  3. 涉及多个专业领域,多种技术综合应用
  4. +
  5. 项目范围和目标的灵活性
  6. +
  7. 风险大,收益大
  8. +
  9. 客户化程度高
  10. +
  11. 过程管理重要
  12. +
+

1.2 软件生命周期

+

1.2.1 需求定义

+

描述: 定义出本次任务都需要做什么,做成什么样子。
+参与者: 产品经理、需求分析师、客户

+

1.2.2 可行性分析

+

描述: 由项目组相关成员去研究需求是否可行,能不能做出来。
+参与者: 产品经理、架构师、项目经理、开发

+

1.2.3 需求分析

+

描述: 需求分析其实是在做需求细化,按照任务说明书中的任务内容和指标具体细化各个点,细化到每个输入框、每个按钮的样式,输入输出等各项值。
+参与者: 产品经理、架构师、项目经理、测试/质量管理员(很多公司把这个统称为QA)、开发
+输出:《需求规格说明书》

+

1.2.4 评审

+

描述: 评审就是做审查,对这个阶段的工作进行审查,看是否偏离或者有遗漏(比如:设计和工厂的各个环节都有相关的审查,审查材料是否合格、设计是否符合规定、按照工人/设计出的材料需求是否足够或者多余等等,这些审查都是评审);评审一般由相应工作人员来参与。
+参与者: 每个阶段的评审一般都是各职能部门内部审核,也可以申请其他相关人员审核,比如需求评审,一般是产品经理、项目经理、测试、开发一起评审;系统设计一般是项目经理、开发评审;测试策略评审一般是测试组内部评审等等

+

1.2.5 设计

+

描述: 架构师根据需求确定产品或者项目的场景、特点,选择合适的框架,技术使项目实现最优化。在此基础上将系统进行概要设计,包括系统总体数据结构、数据库结构、模块结构以及它们之间的关系等。开发人员根据概要设计对具体模块进行详细设计,包括接口、参数等。此处设计会形成概要设计文档和详细设计文档。
+参与者: 项目经理、架构师、开发、测试

+

1.2.6 编码

+

描述: 开发人员根据详细设计文档对系统进行模块化开发,在确定参数和接口的情况下,根据需求对模块内部进行方法级别的设计和编码以及自测,对产品功能进行一一实现。
+参与者: 开发

+

1.2.7 提测

+

描述: 开发人员完成一个小迭代/小功能,且完成自测(开发编码完成后,一般都会自己检测下),于是向测试部门发起提测,一般以邮件方式或者任务管理工具的任务流方式向测试部门通知xxx模块/功能可以测试。
+参与者: 任务责任人(开发)、测试

+

1.2.8 测试

+
- 测试需求
+- 测试计划
+- 测试设计
+- 测试执行
+- 回归测试
+- 测试评估
+
+

1.2.9 部署/发版

+

描述: 经过前面的各个阶段,产品已经可以出售或者面向大众了。配置管理人员进行封版、版本制作(针对产品来说)/部署上线(针对项目应用来说)。
+参与人: 配置管理人员、测试 +10. 支持维护
+描述: 支持维护类似于我们日常中的售后,主要是对已卖出的产品/已上线的项目进行日常维护。包括纠错性维护和改进性维护两个方面。
+参与人: 支持维护人员/售后工程师

+

1.3 软件测试概述

+

1.3.1 软件测试定义

+

软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
+IEEE:使用人工或自动手段来运行或测定某个软件系统的过程,其目的在于检测他是否满足规定的需求或弄清预期结果和实际结果的差别。

+

1.3.2 测试发展历程

+
    +
  1. 1957年之前-调试为主(Debugging Oriented)
    +软件规模小,复杂度低,开发人员承担需求分析、设计、开发、测试等所有工作,等同于调试。
  2. +
  3. 1957–1978-证明为主(Demonstration Oriented)
    +与调试区分开,这是软件测试史上一个重要的里程碑,主要目是确认软件是满足需求的。
  4. +
  5. 1979–1982-破坏为主(Destruction Oriented)
    +1979年,《软件测试的艺术》 (The Art of Software Testing)第一版问世,这本书是测试界的经典之作。书中给出了软件测试的经典定义:
  6. +
+
The process of executing a program with the intent of finding errors. +测试是为发现错误而执行程序的过程。 +
+

这个观点较之前证明为主的思路,是一个很大的进步。我们不仅要证明软件做了该做的事情,也要保证它没做不该做的事情,这会使测试更加全面,更容易发现问题。

+
    +
  1. 1983–1987-评估为主(Evaluation Oriented)
    +软件行业进入了大发展时期,软件趋向大型化、复杂度,质量越来越重要。软件测试的基础理论和实用技术开始形成。提出了在软件生命周期中使用分析、评审、测试来评估产品的理论。
  2. +
  3. 1988–至今-预防为主(Prevention Oriented)
    +尽量早的介入,尽量早的发现这些明显的或隐藏的bug,发现得越早,修复起来的成本越低,产生的风险也越小。
  4. +
+

1.3.3 测试与开发的关系

+

瀑布模型
+瀑布模型

+

这是一种经典模型,提供了软件开发的基本框架。
+强调开发工作(计划、设计、开发、测试、维护等)各阶段之间的先后顺序,不可以并行操作。
+瀑布模型认为,测试是指代码完成后,处于运行维护阶段之前。如果需求和设计上存在缺陷,就会造成大量返工,增加成本。为了更早的发现问题,测试应延伸到需求评审,设计审查活动中,软件生命周期的每个阶段都应包含测试。
+优点:

+
    +
  1. 各阶段划分清晰
  2. +
  3. 强调计划与需求分析
  4. +
  5. 适合需求稳定的产品开发
  6. +
+

缺点:

+
    +
  1. 单一流程,不可逆
  2. +
  3. 风险显露得晚,纠正机会少
  4. +
  5. 测试只是其中一个阶段,缺乏全过程测试思想
  6. +
+

V模型
+V模型

+

强调将测试和开发同等重要,对于开发阶段都有与之对应的测试阶段。
+优点:
+相对于瀑布模型,V模型测试能够尽早的进入到开发阶段。
+缺点:
+虽然测试尽早的进入到开发阶段,但是真正进行软件测试是在编码之后,这样忽视了测试对需求分析、系统设计的验证,时间效率上也大打折扣。

+

W模型(双V模型)
+W模型

+

明确表示出了测试与开发的并行关系
+优点:
+W 模型相对于 V 模型来说,测试更早的进入到开发阶段,与开发阶段是并行关系,更早的发现问题,能够及时解决问题,各个阶段分工明确,方便管理。
+缺点: +W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方便。

+

螺旋模型
+螺旋模型

+

大型软件项目通常有很多不确定性和风险,如果采用瀑布式线性过程模型,失败风险很大,因此需要采取一种渐进式的演化过程模型。将产品分解成增量版本,每个版本单独测试。 +敏捷模型
+敏捷模型

+

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。专注于交付对客户有价值的软件(可以工作的)。

+

强调以人为核心,程序员团队和业务专家之间的紧密联系,频繁交付新的软件版本,紧凑的自我组织型团队,更注重软件开发中人的作用。

+

在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

+

《联盟敏捷宣言》

+
    +
  1. 最重要的是通过尽早和不断交付有价值的软件满足客户需要。
  2. +
  3. 我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势。
  4. +
  5. 经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。
  6. +
  7. 业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。
  8. +
  9. 围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务。
  10. +
  11. 在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。
  12. +
  13. 可以工作的软件是进度的主要度量标准。
  14. +
  15. 敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。
  16. +
  17. 对卓越技术与良好设计的不断追求将有助于提高敏捷性。
  18. +
  19. 简单——尽可能减少工作量的艺术至关重要。
  20. +
  21. 最好的架构、需求和设计都源自自我组织的团队。
  22. +
  23. 每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。
  24. +
+

解读:

+
    +
  • +

    个体和互动高于流程和工具
    +以人为本,没有比面对面交流更高效的沟通渠道了,基于互相信任的前提,敏捷提倡自治的全功能团队。 +在工作形式上,整个团队平时坐在一起工作,从物理空间上创造了更加便捷面对面的沟通机会。在团队职责上,团队内部具备完成软件交付的角色(能力),团队所有人对软件的质量负责,开发过程由团队内部把控,业务价值团队内部快速流动,在任何环节都能及时获得反馈。同时,每个角色都更容易从全局视角去思考软件,避免了传统部门墙模式下的视角割裂和协作障碍。

    +
  • +
  • +

    工作的软件高于详尽的文档
    +为客户交付可工作的软件是我们的核心目标,我们应该尽早交付可进行端到端测试的代码,该目标决定了我们不应该花过多精力在面面俱到的文档上,但这不代表我们要抵制任何文档。实践证明,轻量级的文档策略有助于团队高质量交付可工作的软件。

    +
  • +
  • +

    客户合作高于合同谈判
    +主动拥抱变化,及时响应,持续交付。

    +
  • +
  • +

    响应变化高于遵循计划
    +通过高效的协作,获取快速的反馈,从而尽早做出调整,减少浪费

    +
  • +
+

缺点:
+由于其项目周期很长,所以很难保证开发的人员不更换,而缺少文档就会造成在交接的过程中出现很大的困难。

+

敏捷开发流程

+

1.4 软件缺陷

+

1.4.1 缺陷定义

+

IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。

+

符合下面4个条件之一就是缺陷:

+
    +
  1. 软件未达到规格说明书中规定的功能。
  2. +
  3. 软件出现了产品说明数中指明的不会出现的错误。
  4. +
  5. 软件功能超出了产品说明书中指明的范围。
  6. +
  7. 软件难于理解,不易使用,运行速度慢,或者最终用户认为软件使用效果不好。
  8. +
+

1.4.2 产生原因

+
    +
  1. 软件本身复杂性,产生大量不确定因素。
  2. +
  3. 成本、时间限制,导致流程不够完善,文档缺失,缺乏严谨的评审。
  4. +
  5. 人员本身技能水平、责任心、交流沟通不顺畅。
  6. +
  7. 不全面或者没有复审。
  8. +
+

1.4.3 缺陷来源

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
缺陷来源描述
需求说明书需求说明书错误或描述不清
设计文档设计文档描述不准确,与需求不一致
系统集成接口各模块参数不匹配
数据流(库)数据字典、数据库中的错误
程序代码编码问题
+

1.4.4 缺陷类型

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
缺陷类型描述
功能未达到规格说明书中规定的功能,影响系统使用
用户界面未按照原型设计,影响交互,如:显示格式,按钮位置
文档文档内容不完整或不正确,影响发布和维护
软件包由于软件配置库、变更管理或版本控制引发的错误
性能执行时间长、处理速度慢、负载高等方面
接口与其他模块参数不匹配
+

1.4.5 缺陷级别

+

严重性: 表示软件缺陷的恶劣程度,当用户碰到该缺陷时影响的可能性和程度。
+优先级: 表示修复缺陷的重要程度和紧迫程度。

+
严重性
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
级别名称说明示例
S1致命错误严重阻碍开发或测试工作的进行,必须马上解决安装包或App无法安装
网页不能访问
不能启动
死机
核心功能无法使用,比如QQ不能收发消息,邮箱不能收发邮件
S2严重缺陷系统出现重大问题,影响提供的主要功能使用内存泄露
数据无法保存
S3主要错误主要功能实现有问题,易用性不够好某个非核心功能全部或者部分未实现、实现后流程走不通、实现的功能与需求不同、文本框未校验或者校验不全、提示不全(异常提示不合理或者没提示)、手册相关内容缺失、兼容问题、安装界面乱码
S4次要错误次要功能实现有问题或者手册相关问题个别不常用的属性不生效或实现有问题(前提:不影响主要功能使用)
次要功能实现与需求不符或实现有问题(如:日志不能轮转、预警策略不生效、搜索框不能用、快照生成格式有问题等)
错别字
手册描述不合理或样式格式有问题
S5轻微缺陷建议,不属于缺陷
+
优先级
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
级别名称说明
P1不影响整个系统的正常运行,一般指建议性的问题
P2不影响继续测试,但也是必须要修改的,对功能的实现有所影响,如果时间允许应该修复
P3影响整个测试的继续进行,要马上修改
P4系统无法继续执行下去,必须立即修改
+

严重性和优先级对于审查缺陷报告并决定哪些软件缺陷应该修复,以何种顺序修复的人员极为重要。如果一个程序员受命修复10个缺陷,他就应该先从严重性为1 、优先级为1这样的缺陷着手,而不是优先修复简单的,由简到难。

+

综合使用重要性等级和严重性双标准的优先顺序:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
S1. 致命错误S2. 严重缺陷S3. 主要错误S4. 次要错误S5. 轻微缺陷
P4. 急立即修复
3小时内
第2修复
1天内
第4修复
2天内
第7修复
3天内
第11修复
4天内
P3. 高第3修复
1-2天内
第5修复
2-3天内
第8修复
3-4天内
第12修复
4-5天内
第15修复
5-6天内
P2. 中第6修复
3-4天内
第9修复
4-5天内
第13修复
5-6天内
第16修复
6-7天内
第18修复
2-3周内
P1. 低第10修复
8-7天内
第14修复
7-9天内
第17修复
8-12天内
第19修复
3-4周内
第20修复
择期
+

1.4.6 跟踪流程

+

最优化、最简单的生命周期是:(理想情况)

+
    +
  1. 测试员发现缺陷并记录缺陷报告。
  2. +
  3. 缺陷报告交给程序员,此时缺陷状态是打开。(open state)
  4. +
  5. 程序员修改缺陷,此时缺陷状态是解决。(resolved state)
  6. +
  7. 缺陷报告交还测试员。
  8. +
  9. 测试员确认已修复。
  10. +
  11. 测试员关闭缺陷报告,此时缺陷状态是关闭。(closed state)
  12. +
+

一个缺陷很可能会被反复打开→关闭。在日常工作过程中,由于开发修订其他缺陷影响、需求变更等因素缺陷可能会被反复打开→关闭。

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
缺陷状态描述
打开确认提交的缺陷,等待处理
已分配分配开发人员进行修复
已解决经过开发人员修复,等待测试人员验证
已验证测试人员验证修复成功
已关闭修复完成,确认测试通过
重新打开测试验证依然存在缺陷,等待开发修复
推迟暂不解决,可能在下一个版本修复
保留条件不允许,不能修复
不能重现开发不能复现这个缺陷,需要测试人员检查缺陷发现步骤
+

1.4.7 缺陷记录内容

+
    +
  1. bug编号:bug的唯一id,以方便尽快找到此bug。
  2. +
  3. bug标题:bug摘要,阐述bug大体内容。
  4. +
  5. bug严重级别,优先级:作为缺陷是否修复以及缺陷修复优先级的决定性因素。
  6. +
  7. bug产生的模块:记录bug所属模块,方便开发定位问题。
  8. +
  9. bug对应的版本:bug对应的软件版本,方便后续的统计归档以及开发定位问题。
  10. +
  11. bug描述:bug的产生环境、详细步骤、期望结果、实际结果。
  12. +
  13. 附件:包括但不仅限于截图、日志、录像、所用到的示例文件以及应用;同样是方便复现解决缺陷的。
  14. +
+

以上是上报bug、创建bug必须的,在后续我们还会对bug进行修复、复测等工作,那在为了记录后续工作,bug还应该包含:

+
    +
  1. bug状态:开始、修复中、修复完成、提测、测试中、测试通过/失败、关闭等,后续bug周期中会讲到。
  2. +
  3. bug修订人:bug修订人员。
  4. +
  5. bug复测人:通常是谁报的bug最后返回给谁测试,但是在某些情况下比如bug报告人任务积累太多/不在的情况下也会分给其他人,所以通常会记录bug复测责任人。
  6. +
  7. bug修订说明:由bug修订人来写,说明bug产生原因,修改思路等。
  8. +
  9. bug复测说明:由复测人员来写,说明复测过程,复测结果等。
  10. +
  11. bug备注:备注,以便记录一些额外信息。
  12. +
+

1.4.8 缺陷预防

+

差错:人在理解和解决问题的思维和行为过程中出现的问题,沟通不当,理解错误。(产生根源)
+错误:软件内部问题,设计错误、编码错误。(内部原因)
+失效:软件系统运行时偏离了用户需求。(外部表现)

+

1.5 软件测试行业

+

1.5.1 行业现状

+

软件系统越来越复杂,一个软件不能够由单独的软件工程师单独编写,而是由团队进行配合,每个人可能只负责一个模块,对于全局没有过多的了解,这时如果运行软件就会容易产生很多的错误。在行业内将这些错误叫做BUG。并且每一个软件工程师都会有思维的死角,自己不容易发现自己编写出来的错误。所以这个时候就需要专门的软件测试工程师用专业的测试方式来检查软件。检查该软件是否符合客户要求的产品设计,是否能够符合大多数用户的使用习惯,如果发现异常状态及时进行处理。软件市场虽然远远没有达到饱和但是各种各样功能的软件也层出不穷竞争激烈,对软件开发的质量要求也是日益增高。

+

我国软件测试行业起步较晚,发展较慢,直到21世纪初期,我国才逐步开始重视软件测试行业。但近年来,软件行业的快速发展为软件测试行业的发展提供了良好的基础,随着我国软件测试行业的发展,行业内企业向规模化发展将获得规模效应,可以有效降低企业的单位成本;而软件测试技术的不断发展,也将淘汰那些技术实力较弱的企业,促使行业内企业向专业化方向发展。

+

在软件业较发达的国家,软件测试产业已形成规模,比较发达,软件测试不仅早已成为软件开发的一个重要组成部分,而且在整个软件开发的系统工程中占据着相当大的比重。在微软公司内部,软件测试人员与软件开发人员的比例一般为1.5∶1到2.5∶1左右,即一个开发人员背后,有至少两位测试人员在工作,以保证软件产品的质量1。国外优秀的软件开发机构把40%的工作花在软件测试上,软件测试费用占软件开发总费用的30%至50%,对于一些要求高可靠性、高安全性的软件,测试费用甚至相当于整个软件项目开发所有费用的3至5倍。

+

从国内软件公司软件测试部门的独立性来看,多数软件企业没有专门的测试技术部门,软件测试程序也不太规范,多数企业也不懂测试,对测试的投入资金过少。大多数是在经过简单的测试之后,就认为是没有问题了,就交于用户了,让用户去“测试”。于是,软件产品在没有经过严格测试的情况下就发布了。对国内消费类软件而言,经常出现一些已经推向市场的产品由于被发现有严重缺陷而导致大量退货的现象。定制的行业软件,常出现一再返工、无限期的修改和维护的现象。

+

当前国内软件测试行业主要存在以下问题:

+
    +
  1. 软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题。
  2. +
  3. 面向对象的开发技术越来越普及,但是面向对象的测试技术却刚刚起步。
  4. +
  5. 对于分布式系统整体性能还难以进行很好的测试。
  6. +
  7. 对于实时系统缺乏有效的测试手段。
  8. +
  9. 随着安全问题的日益突出,信息系统的安全性如何进行有效的测试与评估,成为世界性的难题。
  10. +
  11. 测试的自动化程度不高,手工测试过多,自动化测试工具和手工测试人员也缺乏较好的结合。
  12. +
  13. 缺乏软件测试意识、对其重视不够。
  14. +
  15. 在软件开发基本完成后才进行测试,也缺乏软件测试的统一标准。
  16. +
  17. 高校从师资储备到专业设置再到人才培养的机制薄弱。
  18. +
+

国内外软件测试差距

+
    +
  1. 测试的理解认识
  2. +
  3. 测试过程的管理
  4. +
  5. 测试工具的使用
  6. +
  7. 测试人员的培养
  8. +
+

1.5.2 未来趋势

+
    +
  1. 以软件为代表的计算机行业正在以一种井喷式的趋势发展
  2. +
  3. 人才缺口大
  4. +
  5. 女性员工受到青睐
  6. +
  7. 未来发展空间大
  8. +
  9. 外包为主
  10. +
+

1.5.3 软件测试职业发展

+
    +
  1. 技术方向 +
      +
    • 敏捷测试专家
    • +
    • 高级测试开发专家
    • +
    • 专项测试专家
    • +
    • QA-Ops 专家
    • +
    +
  2. +
  3. 管理方向 +
      +
    • 测试组长
    • +
    • 测试经理
    • +
    • 项目测试负责人
    • +
    • 测试总监
    • +
    +
  4. +
  5. 易转型方向 +
      +
    • 项目经理
    • +
    • 产品经理
    • +
    +
  6. +
+

1.5.4 测试思维方式

+
    +
  1. 逆向思维方式
  2. +
  3. 组合思维方式
  4. +
  5. 全局思维方式
  6. +
  7. 两级思维方式
  8. +
  9. 比较思维方式
  10. +
  11. 发散思维方式
  12. +
+

1.6 测试认识的误区

+
    +
  1. 使用了测试工具,就进行了有效的测试
  2. +
  3. 存在太多无法测试的东西
  4. +
  5. 软件开发完成后才进行测试
  6. +
  7. 软件发布后发现质量问题,是测试人员的问题
  8. +
  9. 软件测试很简单,就是点点点,是个人就能做
  10. +
  11. 软件测试没有前途,只有程序员才是软件高手
  12. +
  13. 软件测试是测试人员的事情和程序员无关
  14. +
  15. 项目进度吃紧时少做测试,时间多时多做测试
  16. +
  17. 测试要进行穷尽测试
  18. +
  19. 采样是随机抽取过程
  20. +
  21. 测试和开发是对头
  22. +
  23. 测试少报bug开发就会高兴点,报告也会好看点
  24. +
  25. 自动化测试终会取代手工测试
  26. +
  27. 规范化软件测试是增加项目成本
  28. +
  29. 越多测试越有效
  30. +
  31. 软件测试工作只负责项目上线/产品发布之前的部分
  32. +
+

1.7 知识点总结

+

第2章 软件测试基础知识

+

2.1 概述

+
    +
  1. 从软件测试的目的来理解
    +软件的目的是发现软件中的错误,是为了证明软件有错,而不是无错。是在软件投入运行前,对软件需求分析、设计和编码各个阶段产品的最终检查,是为了保证软件开发产品的正确性、完整性和一致性。
  2. +
  3. 从软件测试的性质来理解 +在软件开发过程中,分析、设计和编码都是“建设性的”,唯有测试是“破坏性的”。
  4. +
  5. 从软件开发角度来理解 +软件测试以检查产品的内容和功能特性为核心,是软件质量保证的关键步骤,也是成功实现软件开发目标的重要保障。
  6. +
  7. 从软件工程角度来理解
    +软件测试是软件工程的一部分,是软件工程过程中的重要阶段。
  8. +
  9. 从软件质量保证角度来理解
    +软件测试是软件质量保证的重要措施。
  10. +
+

2.2 测试的目的和原则

+

2.2.1 测试的目的

+
    +
  1. 测试不仅仅是找出错误。通过分析错误产生的原因和错误的发展趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便即时改进。
  2. +
  3. 检测产品是否符合用户要求。
  4. +
  5. 没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
  6. +
  7. 提升用户体验。
  8. +
+

2.2.2 测试的原则

+
    +
  1. 软件测试是证伪而非证实。
  2. +
  3. 尽早地、不断地进行测试。
  4. +
  5. 重视无效数据和非预期的测试。
  6. +
  7. 应当对每一个测试结果做全面的检查。
  8. +
  9. 测试现场保护和资料归档。
  10. +
  11. 程序员应避免检查自己的程序。
  12. +
  13. 充分注意测试中的集群现象。
  14. +
  15. 用例要定期评审,适时补充修改用例。
  16. +
+

2.3 测试分类

+

2.3.1 按照测试阶段划分

+
    +
  1. 单元测试
  2. +
  3. 集成测试
  4. +
  5. 确认测试
  6. +
  7. 系统测试
  8. +
  9. 验收测试
  10. +
+

软件测试阶段对照表:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
测试阶段主要依据参与人员/测试方式主要测试内容
单元测试《详细设计》开发小组执行白盒测试规范、逻辑、路径
集成测试《概要设计》
《需求文档》
开发小组执行白盒测试、黑盒测试接口、路径、功能、性能
系统测试《需求文档》独立测试小组执行黑盒测试功能测试、界面测试、安全测试、兼容性测试、易用性测试、性能测试、压力测试、负载测试
验收测试《需求文档》用户执行黑盒测试同上
+

2.3.2 按照执行状态划分

+
    +
  1. 静态测试
  2. +
  3. 动态测试
  4. +
+

2.3.3 按照测试技术划分

+
    +
  1. 白盒测试
  2. +
  3. 黑盒测试
  4. +
  5. 灰盒测试
  6. +
+

2.3.4 按照执行主体划分

+
    +
  1. α测试
  2. +
  3. β测试
  4. +
  5. 第三方测试
  6. +
+

2.3.5 按照测试内容划分

+
    +
  1. 界面测试
  2. +
  3. 功能测试
  4. +
  5. 安全测试
  6. +
  7. 兼容性测试
  8. +
  9. 易用性测试
  10. +
  11. 性能测试
  12. +
+

2.3.6 按照是否手工操作划分

+
    +
  1. 手工测试
  2. +
  3. 自动化测试
  4. +
+

2.4 测试用例

+

2.4.1 简介

+

测试用例是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括:测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。

+

简单的认为,测试用例是为某个特定目标而编制的一组测试输入、执行条件和预期结果,用于核实是否满足某个特定的软件需求。

+

选择测试用例是软件测试员最重要的一项任务,不正确的选择可能导致测试量过大或者过小,甚至测试目标不对。准确评估风险,把无穷尽的可能性减少到可以控制的范围是软件测试成功的诀窍。

+

2.4.2 测试用例的作用

+
    +
  1. 指导测试的实施
  2. +
  3. 评估测试结果的度量基准
  4. +
  5. 保证软件的可维护性和可复用性
  6. +
  7. 分析缺陷的标准
  8. +
+

2.4.3 测试用例设计准则

+
    +
  1. 有效性
  2. +
  3. 经济性
  4. +
  5. 完备性
  6. +
  7. 可判定性
  8. +
  9. 可再现性
  10. +
+

2.4.4 测试用例维护

+

术语

+
    +
  1. 测试编号:测试用例的编号
  2. +
  3. 测试项:测试的功能点说明
  4. +
  5. 前置条件:该测试用例的前提条件,比如测试wangdachui/dachui12345(用户名/密码)账户是否能正确登录进去,那前提wangdachui/dachui12345已定是注册过的
  6. +
  7. 测试步骤:就是测试的所有操作步骤,最好是每一个步骤应该对应一个期望结果,最少也得一个测试用例对应一个期望结果
  8. +
  9. 期望结果:就是希望得到的结果(正确的结果)
  10. +
  11. 测试结果:实际测试的结果,可选项有:通过、不通过、暂时挂起/锁定(就是暂时不测试);
  12. +
  13. 对应的bug:当期望结果与实际结果不符时测试不通过,此时需要上报bug(纪录缺陷),bug需要与测试用例对应
  14. +
  15. 测试执行人:实际由谁来执行测试用例;也有任务分配人的选项,就是测试用例分配给哪个测试员来测试
  16. +
  17. 备注:做一些备注或者测试的说明
  18. +
  19. 合法用户:就是已经注册过的用户
  20. +
  21. 非法用户:没有注册过;注册过但是用户名/密码不匹配的;本文特指未注册过的用户
  22. +
+

测试用例维护一般分为以下几种情况:

+
    +
  1. 产品特性没变:漏测或者环境变更,这个时候版本没变,测试用例增加和修改均可
  2. +
  3. 原有特性变化:功能变化,只能新增,不能修改,还要兼容老版本
  4. +
  5. 原有功能取消:测试用例在新版本上置为“空”标志或者“无效状态”,对于先前版本有效
  6. +
  7. 新增功能:新增用例,对应新版本标志
  8. +
+

2.4.5 测试用例设计误区

+
    +
  1. 测试用例设计等同于测试输入数据设计
  2. +
  3. 测试用例设计越详细越好
  4. +
  5. 追求测试用例设计“一步到位”
  6. +
  7. 将多个测试条件混在一个用例中
  8. +
+

2.5 测试停止标准

+

2.5.1 软件测试停止总体标准

+
    +
  1. 测试超过了预定时间
  2. +
  3. 执行了所有的测试用例,并没有发现故障
  4. +
  5. 使用特定的测试用例设计方法作为判断测试停止的基础
  6. +
  7. 给出测试停止的要求
  8. +
  9. 根据经单位时间内查出故障的数量决定是否停止测试
  10. +
  11. 软件系统经过了单元、集成、系统测试,分别达到停止标准。通过验收测试,得出验收测试结论。
  12. +
  13. 软件项目暂停以进行调整,测试应随之暂停,并备份暂停点数据。或者软件项目开发生命周期内出现重大估算、进度偏差,需暂停或终止时,测试应随之暂停或终止,并备份数据
  14. +
+

2.5.2 软件测试各阶段停止标准

+
单元测试停止标准
+
    +
  1. 单元测试用例已经通过评审
  2. +
  3. 按照单元测试计划完成了所有规定单元测试
  4. +
  5. 达到了测试计划中关于单元测试所规定的覆盖率要求
  6. +
  7. 被测试的单元每千行代码必须发现至少3个错误
  8. +
  9. 软件单元功能与设计一致
  10. +
  11. 单元测试中发现的错误已经得到修改,各级缺陷修复率达到标准
  12. +
+
集成测试停止标准
+
    +
  1. 集成测试用例已经通过评审
  2. +
  3. 按照集成测试计划和增量集成策略完成了整个系统的集成测试
  4. +
  5. 达到了测试计划中关于集成测试所规定的覆盖率要求
  6. +
  7. 被测试的集成工作版本每千行代码必须发现至少2个错误
  8. +
  9. 集成工作版本满足设计定义的各项功能、性能要求
  10. +
  11. 在集成测试中发现的错误已经得到修改,各级缺陷修复率达到标准
  12. +
+
系统测试停止标准
+
    +
  1. 系统测试用例已经通过评审
  2. +
  3. 按照系统测试计划完成了系统测试
  4. +
  5. 达到了测试计划中关于系统测试所规定的覆盖率要求
  6. +
  7. 被测试的系统每千行代码必须发现至少1个错误
  8. +
  9. 系统测试满足设计需求规格说明书要求
  10. +
  11. 在系统测试中发现的错误已经得到修改,各级缺陷修复率达到标准
  12. +
+

2.6 知识点总结

+

第3章 黑盒测试

+

3.1 概述

+

黑盒测试也称功能测试,通过测试来检测每个功能是否都能正常使用。

+

着眼于程序外部结构,不考虑内部逻辑结构,通过测试检验每个功能是否能正常使用。在程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当的接受输入数据而产生正确的输出信息。

+

黑盒测试从用户的角度出发,以输入数据与输出数据的对应关系进行测试,数据驱动。

+

黑盒测试注重测试软件的功能需求,主要视图发现下列几类错误

+
    +
  1. 功能不正确或遗漏
  2. +
  3. 界面错误
  4. +
  5. 数据库访问错误
  6. +
  7. 性能错误
  8. +
  9. 初始化和终值错误
  10. +
+

3.2 等价类划分

+

等价类是指某个输入域的子集合。在该子集合中,测试某等价类的代表值就等于对这类其他值的测试,对于揭露程序的错误是等效的。

+

要注意的是,在进行等价类划分的过程中,我们不仅要考虑有效等价类划分,也要考虑无效等价类划分。

+

有效等价类:是指输入完全符合程序规格说明的数据集合。利用有效等价类可以测试程序是否满足规格说明书规定的功能和性能。

+

无效等价类:和有效等价类相反,是指对程序的规格说明无意义、不合理的输入数据构成的集合。

+

3.2.1 划分原则

+
    +
  1. 在输入条件规定了取值范围的情况下,可以确立一个有效等价类(在取值范围之内)和两个无效等价类(小于取值范围和大于取值范围)。
  2. +
  3. 在输入条件规定了取回个数的情况下,可以确立一个有效等价类(在取值个数范围之内)和两个无效等价类(小于取值个数和大于取值个数)。
  4. +
  5. 在输入条件规定了输入值的集合的情况下,可以确立一个有效等价类和一个无效等价类。
  6. +
  7. 在输入条件规定了“必须如何”条件的情况下,可以确立一个有效等价类和一个无效等价类。
  8. +
  9. 在输入条件是一个布尔值的情况下,可以确立一个有效等价类和一个无效等价类。
  10. +
  11. 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的将情况下,可以确立n个有效等价类和一个无效等价类。
  12. +
  13. 在规定了输入数据必须遵守规则的情况下,可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
  14. +
  15. 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将改等价类进一步划分为更小的等价类。
  16. +
+

3.2.2 设计测试用例步骤

+
    +
  1. 形成等价类表,每一等价类规定一个唯一编号
  2. +
  3. 设计测试用例,使其尽可能多的覆盖尚未覆盖的有效等价类
  4. +
  5. 设计一个新的测试用例,使其只覆盖一个无效等价类,重复这一步直到所有无效等价类均被覆盖。
  6. +
+

3.2.3 等价类举例

+

我们要测试学习成绩这一输入框(假设总成绩都是100),那么我们就可以如下图划分,有效的成绩是>=0且<=100的,无效的是<0和>100这两部分。

+

等价类举例

+

另外图中还有一个无效等价类没有表现出来--非数字字符(比如:英文字母、中文、特殊的符号等单一或者组合,如a、abc、你好、你abc、你=我、\你\a\等;以及他们分别与数字组合,比如:a123、321a、你123、12你、1你2、1\2、1=你等)。

+

那么根据上述分析,最终设计出来的测试用例如下:

+
    +
  1. 有效等价类1:0~100(包含0和100)之间的任意数,比如:19;
  2. +
  3. 无效等价类1:小于0的负数,比如:-1;
  4. +
  5. 无效等价类2:大于100的数,比如:121;
  6. +
  7. 无效等价类3:其他任意非数字字符,比如:a、你、\;
  8. +
  9. 无效等价类4:空字符
  10. +
+

等价类最终必须是分割到最小单位,只有这样才能保障测试覆盖全面。
+非数字字符可以是包含英文字符、中文、特殊符号的字符串或者字符,所以其实它又可以分为三个无效等价类,分别是:

+
    +
  1. 无效等价类:包含英文字符的字符串,比如:a、a123、a=、b你a;
  2. +
  3. 无效等价类:包含中文的字符串,比如:你、你12、1你2、你=;
  4. +
  5. 无效等价类:包含特殊字符的字符串,比如:\ 。
  6. +
+

3.3 边界值分析

+

边界值分析法是等价类划分法的补充。顾名思义,边界值分析法是对输入的边界值进行测试。从实践中我们可以发现,人们无论是在生活中还是在工作中往往会忽略边界值的条件,所以在输入或者输出的边界上会发生大量的错误。因此,在测试用例设计中,需要对输入的条件进行分析并且提取其中的边界值条件,通过对这些边界值的测试来查出更多的错误。

+

常见的边界值:

+
    +
  1. 文本框接受字符个数,比如用户名长度、密码长度等。
  2. +
  3. 报表的第1行和最后1行。
  4. +
  5. 数组元素的第1个和最后1个。
  6. +
  7. 循环的第1次、第2次和倒数第1次、最后1次。
  8. +
+

3.3.1 设计原则

+
    +
  1. 如果输入条件规定了值的范围,则应取刚达到这个范围边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
  2. +
  3. 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。
  4. +
  5. 如果规格说明书给出的输入域或输出域是有序集合,则应选取集合的第1个元素和最后1个元素作为测试用例。
  6. +
  7. 如果程序中使用了内部数据结构,则应选择内部数据结构边界上的值作为测试用例。
  8. +
  9. 分析规格说明,找出其他可能的边界条件。
  10. +
+

3.3.2 两类方法

+
    +
  1. +

    一般边界值分析 +对于含有n个变量的程序,取值为min、min+、normal,max-、max,测试用例数目为4*N+1。 +一般边界值分析

    +
  2. +
  3. +

    健壮性边界值分析 +健壮性边界值测试是边界值分析的一种扩展。变量除了取min、min+、normal、max-、max 5个边界值外,还要考虑略超过最大值(max+)以及略小于最小值(min-)的取值。因此,对于含有n个变量的程序,健壮性边界值分析产生6*n+1个测试用例。 +健壮性边界值分析

    +
  4. +
+

3.3.3 应用举例

+

延伸上节的例子来说明:学生信息系统中有一个“考试成绩”的输入项,成绩的取值范围是0~100之间的整数,考试成绩及格的分数线是60,优秀的分数线是80。那么这个例子中的边界值数据是哪些呢:

+
+

选取的边界值数据应该包括:

+

-1,0,1,59,60,61,79,80,81,99,100,101

+
+

通常情况下,软件测试所包含的边界检验有以下几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等,而相应地,这些类型的边界值应该在最大/最小,首位/末尾,上/下,最快/最慢,最高/最低,最短/最长,空/满等情况下。

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
测试项边界值测试用例设计思路
数字起始位数-1
结束位数+1
成绩,正确0-100,边界-1,0,100,101
字符起始-1个字符
结束+1个字符
用户名输入框,正确1-32位,边界0、1、32、33,注意中文字符占位不同
方向刚差一点
刚超一点
游戏,通过门口,边界值门内一步和门外一步
空间小于空余空间一点
大于满空间一点
磁盘剩余20G,边界19.9G和20.1G
位置上下左右里面一点
外面一点
按钮,四边内四点,外四点
+

3.3.4 局限性

+

如果被测程序是多个独立变量的函数,这些变量受物理量的限制,则较适合采用边界值分析。这里的关键是 “独立”的“物理量” 。例如,Date是3个变量(年、月、日)的函数,对其采用边界分析测试用例,就会发现测试用例是不充分的,例如,没强调2月和闰年。其存在问题是因为没有考虑月份、日期和年变量之间存在的依赖关系。由于边界值分析假设变量是完全独立的,因此边界值分析测试用例是对物理量的边界独立导出变量极值,不考虑函数的性质,也不考虑变量的语义含义。 +边界值分析对布尔变量和逻辑变量没有多大意义。例如,布尔变量的极值是true和false,但是其余3个值不明确。

+

3.4 决策表

+

等价类划分法和边界值分析法只是孤立地考虑各个输人数据的测试效果,没有考虑输入数据的组合及其相互制约关系,而决策表考虑了多种条件的组合情况。决策表又称为判定表,分析多种逻辑条件(if-else、switch-case等)与执行动之间的关系。

+

决策表由4部分组成:

+
    +
  1. 条件桩:列出了问题的所有条件,通常认为列出的条件次序无关紧要。
  2. +
  3. 动作桩:列出了问题规定可能采取的操作,这些操作的排列顺序没有约束。
  4. +
  5. 条件项:列出针对条件桩的取值,在所有可能情况下的真假值。
  6. +
  7. 动作项:列出在条件项的各种取值情况下应该采取的动作。
  8. +
+

规则:任何条件组合的特定取值及其相应要执行的操作。在决策表中贯穿条件项和动作项的列就是规则。显然,决策表中列出多少条件取值,也就有多少规则,条件项和动作项就有多少列。

+

决策表组成

+

所有条件都是逻辑结果(即真/假、是/否、0/1)的决策表称为有限条件决策表。如果条件有多个值,则对应的决策表叫做扩展条目决策表。决策表设计测试用例,条件解释为输入,动作解释为输出。

+

决策表适合以下特征的应用程序:

+
    +
  1. if-then-else分支逻辑突出。
  2. +
  3. 输入变量之间存在逻辑关系。
  4. +
  5. 涉及输入变量子集的计算。
  6. +
  7. 输入和输出之间存在因果关系。
  8. +
  9. 很高的圈复杂度。
  10. +
+

3.4.1 应用举例

+

决策表(判定表)设计测试用例的具体步骤如下:

+
    +
  1. 确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2种规则。
  2. +
  3. 列出所有的条件桩和动作桩。
  4. +
  5. 填入条件项。
  6. +
  7. 填入动作项,得到初始判定表。
  8. +
  9. 简化,合并相似规则(相同动作)。 +简化就是合并多条具有相同的动作的规则,并且其条件项之间存在极为相似的关系。 +简化规则
  10. +
+

需求:输入三边值,判定是哪种三角形:非三角形、不等边三角形、等腰三角形、等边三角形

+
    +
  1. 绘制初始三角形判定决策表
  2. +
  3. 优化1的产出
  4. +
  5. 设计测试用例
  6. +
+

条件桩:

+
    +
  • abc能构成三角形 +
      +
    • a+b>c
    • +
    • a+c>b
    • +
    • b+c>a
    • +
    +
  • +
  • a=b?
  • +
  • a=c?
  • +
  • b=c?
  • +
+

动作桩:

+
    +
  • 非三角形
  • +
  • 不等边三角形
  • +
  • 等腰三角形
  • +
  • 等边三角形
  • +
+

决策表:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
12345678
a+b>c?NYYYYYYY
a+c>b?NYYYYYY
b+c>a?NYYYYY
a=b?YYNNN
a=c?YNYNN
b=c?YN
非三角形
不等边三角形
等腰三角形
等边三角形
+

测试用例:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
用例IDabc预期输出
TC1124非三角形
TC2142非三角形
TC3421非三角形
TC4333等边三角形
TC5334等腰三角形
TC6343等腰三角形
TC7433等腰三角形
TC8345不等边三角形
+

3.4.2 优点和缺点

+

决策表把复杂问题的各种可能情况一一列出,易于理解。但是,决策表不能表达重复执行动作的缺点。

+

使用判定表设计测试用例的条件如下:

+
    +
  1. 规格说明以判定表形式给出,或很容易转换成判定表。
  2. +
  3. 条件的排列顺序不会也不影响执行哪些操作。
  4. +
  5. 规则的排列顺序不会也不影响执行哪些操作。
  6. +
  7. 每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。
  8. +
  9. 如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。
  10. +
+

这5个必要条件使得操作的执行完全依赖于条件的组合。对于不满足条件的判定表,可增加其他的测试用例。

+

3.5 因果图

+

前面我们介绍的等价类划分法和边界值分析法都没有考虑到输入情况的组合。这样虽然各种输入条件可能出错的情况已经看到了,但是多个输入情况组合起来可能出错的情况却被忽视了

+
+

地铁自动充值机充值

+

假设自动充值机每次只能投入面值50或者面值100的人民币,投入钱后会有充值50和充值100两个选项

+
+

等价类划分法和边界值分析法可能不会测试到投入面值50的人民币,然后点击充值100这种异常情况;因此,当程序的输入条件有多个的话,就需要用到因果图法来设计测试用例了。

+

因果图利用图解法分析输入的各种组合情况,适合描述多种输入条件的组合、相应产生多不动作的方法。因果图法最终生成的是判定表。

+

3.5.1 基本术语

+
    +
  1. 原因结果图: +原因——结果图使用了简单的逻辑符号,以直线连接左右结点,左结点表示输入状态(原因),右结点表示输出状态(结果)。
  2. +
+

原因 - 结果图

+
    +
  • “恒等”:若原因出现,则结果出现;若原因不出现,则结果不出现。
  • +
  • “非”:若原因出现,则结果不出现;若原因不出现,则结果出现。
  • +
  • “或”:若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现。
  • +
  • “与”:若几个原因都出现,结果才出现;若其中有一个原因不出现,则结果不出现。
  • +
+
    +
  1. 约束图: +输入输出状态相互之间存在的某些依赖关系,称为约束。
  2. +
+

约束图

+
    +
  • E(互斥):原因不会同时成立,最多1个成立,可以都不成立
  • +
  • I(包含):原因中至少一个成立,不能同时为0
  • +
  • O(唯一):原因中有且只有一个成立
  • +
  • R(要求):原因中a出现,b必须出现,a=1则b=1,a=0的话,b随便。QQ登录的例子a为自动登录,b是记住密码
  • +
  • M(屏蔽):a为1时,b必须是0,a=1,则b=0,如果a=0,b随便
  • +
+

3.5.2 设计因果图测试用例步骤

+
    +
  1. 分析软件规格说明,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),给每个原因和结果赋予标识符。
  2. +
  3. 分析原因与结果之间、原因与原因之间对应的逻辑关系,用因果图表示。
  4. +
  5. 由于语法或环境限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现,在因果图上用一些记号表明这些特殊情况的约束或限制条件,把因果图转换为判定表。
  6. +
  7. 从判定表的每一列产生出测试用例。
  8. +
+

对于逻辑结构复杂软件,先用因果图进行图形分析,再用判定表进行统计,最后设计测试用例。当然,对于比较简单的测试对象,可以忽略因果图,直接使用决策表。

+

3.5.3 应用举例

+

需求:第一列字符必须是A或者B,第二列为数字,才允许进行文件修改。如果第一列字符不正确,输出提示L,第二列不是数字,输出提示M,采用因果图设计测试用例

+

原因:

+
    +
  1. 第一列是A
  2. +
  3. 第一列是B
  4. +
  5. 第二列是数字
  6. +
+

结果:

+
    +
  1. 修改文件
  2. +
  3. 输出提示L
  4. +
  5. 输出提示M
  6. +
+

因果图: +因果图

+

决策表:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
123456
A110000
B001100
数字101010
修改文件101000
提示L000011
提示M010101
+

测试用例:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
用例ID第一列第二列预期输出
TC1A1修改文件
TC2AC、汉、#提示M
TC3B2修改文件
TC4BD、字、!提示M
TC5E、符、%3提示L
TC6F、特、@G、殊、*提示L和M
+

3.5.4 优点和缺点

+

优点:

+
    +
  1. 考虑多个输入之间的相互组合、相互制约的关系
  2. +
  3. 指出需求规格说明书中存在的不完整性和二义性
  4. +
  5. 帮助测试人员按照一定的步骤高效的开发测试用例
  6. +
+

缺点:

+
    +
  1. 作为输入条件的原因和输出结果之间的因果关系,很难从规格说明书得到
  2. +
  3. 此方法得到的用例数量规模大
  4. +
+

3.6 场景法

+

通过尝尽该描述的业务流程(业务逻辑),设计用例来遍历场景(路径),验证系统功能的正确性。 +场景法重点是测试流程,因此每个流程用一个用例验证即可,流程测试没问题不代表系统功能没问题,还需要单步进行测试,结合前面的方法。

+

流程图:

+
    +
  • 矩形:步骤
  • +
  • 菱形:判断条件
  • +
  • 箭头:流向
  • +
+

3.6.1 ATM取款流程图

+

ATM取款流程图

+

3.6.2 ATM取款场景设计

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
场景编号流程结果
1插入合法的卡
输入正确的密码
ATM有现金
输入正确的金额
余额充足
ATM现金充足
成功提款
2插入不合法的卡提示错误,退卡
3插入合法的卡
输入密码点取消
退卡
4插入合法的卡
输入错误的密码(还有机会)
提示错误,重新输入
5插入合法的卡
输入错误的密码(超出限制次数)
提示错误,退卡/吞卡
6插入合法的卡
输入正确的密码
ATM没有现金
提款选项不可用,退出
7插入合法的卡
输入正确的密码
ATM有现金
输入不合法的金额
提示错误,重新输入
8插入合法的卡
输入正确的密码
ATM有现金
输入正确的金额
余额不足
提示错误,重新输入
9插入合法的卡
输入正确的密码
ATM有现金
输入正确的金额
余额充足
ATM现金不足
提示错误,重新输入
+

3.6.3 测试用例

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
用例ID场景/条件卡片密码ATM内金额账户余额输入金额预期结果
TC1场景1:成功提款合法卡1234562000.005000.00100成功提款,账户余额400.00
TC2场景2:非法的卡非法卡n/a2000.005000.00n/a提示错误,退卡
TC3场景3:点取消合法卡n/a2000.005000.00n/a退卡
TC4场景4:密码错误(还有机会)合法卡6543212000.005000.00n/a提示错误,重新输入
TC5场景5:密码错误(超过限制次数)合法卡2345162000.005000.00n/a提示错误,退卡/吞卡
TC6场景6:ATM无现金合法卡1234560.005000.00n/a提款选项不可用,用例结束
TC7场景7:金额错误合法卡1234562000.005000.0020提示错误,重新输入
TC8场景8:卡内余额不足合法卡1234562000.005000.00600提示错误,重新输入
TC9场景9:ATM现金不足合法卡1234562000.005000.002500提示错误,重新输入
+

3.7 错误推测法

+

3.7.1 概念

+

错误推测法是利用经验和直觉推测出出错的可能类型,列举出程序中所有可能的错误和容易发生错误情况的清单,根据清单设计测试用例。所谓凭经验,是指人们对过去所作测试结果的分析,对所揭示缺陷的规律性直觉的推测来发现缺陷。

+

该方法强调的是对被测试软件的需求理解以及设计实现的细节把握,当然还有个人的能力。那么显而易见地,这个方法的缺点就是太过依赖个人能力,难以系统化。因此,这个方法一般是作为测试用例设计的补充,而不是单独用来设计测试用例。在回归测试中应用较多。

+

错误推测法一般采用如下技术:

+
    +
  1. 有关软件设计方法和实现技术。
  2. +
  3. 有关前期测试阶段结果的知识。
  4. +
  5. 测试类似或相关系统的经验,了解以前这些系统曾在哪些地方出现缺陷。
  6. +
  7. 典型的产生错误的知识,如被零除错误。
  8. +
+

3.7.2 优点和缺点

+

优点:

+
    +
  1. 不用设计等价类的测试用例,将多个等价类的测试合成一个随机测试,可以以较少代码实现测试代码的编写。
  2. +
  3. 当等价类设计不确切或不完全时,测试会产生遗漏,而使用错误推测法则是按照概率进行等价类覆盖。不论存在多少个等价类,只要随机数据个数足够,就能保证各个等价类被覆盖的概率足够高,能够有效弥补等价类分法设计不充分的缺陷。
  4. +
  5. 采用错误推测法进行测试,每次执行测试时,测试的样本数据可能都不相同,执行次数愈多,错误暴露的概率愈大。
  6. +
+

缺点:

+
    +
  1. 错误推测法中的随机数据很难覆盖到边界值,无法保证测试的充分性。
  2. +
  3. 错误推测法进行自动化测试的难度较大。有些程序很难用程序来自动验证,这使得程序结果的验证工作难度变大。
  4. +
  5. 当等价类的范围较小,这些范围较小的等价类被覆盖的概率也是很小的,错误推测法难以测试到。
  6. +
  7. 随机测试不可以代替常规的功能或非功能测试,因为其随意性大,没有一套完整严格的方法且并非有章可循的测试技术。
  8. +
+

3.7.3 常见错误

+
    +
  1. 页面规范相关部分(跟公司甚至项目需求有关系)
  2. +
+
    +
  • 命名、注释、字体、颜色、缩进等
  • +
  • 文本框长度/范围限制
  • +
  • 支持的浏览器、操作系统、jdk等做兼容性测试
  • +
+
    +
  1. 常识性问题
  2. +
+
    +
  • 密码用密文
  • +
  • 手机号码是11位,且是特定三位数开头
  • +
  • 文本框自动忽略前后空格
  • +
  • 支持模糊查询
  • +
+
    +
  1. 常见的异常测试情况
  2. +
+
    +
  • 输入框不输入任何内容(为空)或者输入空格的情况
  • +
  • 输入框输入非法字符
  • +
  • 用户注销后,是否仍然能操作;再登录是否能成功
  • +
  • 断电重连后是否能继续使用且信息未丢失
  • +
+
    +
  1. 功能相关的常见异常问题
  2. +
+
    +
  • C++软件的内存泄漏、内存分配
  • +
  • web程序的session失效问题
  • +
  • JavaScript字符转义
  • +
+

3.8 综合策略

+

黑盒测试方法有等价类划分、边界值分析、决策表、因果图、场景法、错误推测法等,每种测试方法都有其各自的特点和适用场合。
+软件测试专家Myers给出了黑盒测试方法中各种测试方法的使用策略:

+
    +
  1. 在任何情况下都必须使用边界值分析方法。经验表明,用这种方法设计的测试用例发现程序错误的能力最强。
  2. +
  3. 必要时使用等价类划分方法补充一些测试用例。
  4. +
  5. 用错误推测法再追加一些测试用例。
  6. +
  7. 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例。
  8. +
  9. 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。
  10. +
+

对于功能性测试技术,可以根据如下条件进行选择:

+
    +
  1. 如果变量是独立的,则可以用定义域测试和等价类测试。
  2. +
  3. 如果变量不是独立的,可采用决策表测试。
  4. +
  5. 如果为单缺陷假设,则可采用边界值分析和健壮性测试。
  6. +
  7. 如果为多缺陷假设,可采用最坏情况测试、健壮最坏情况测试和决策表测试。
  8. +
  9. 如果程序包含大量例外处理,可采用健壮性测试和决策表测试。
  10. +
  11. 如果变量引用的是逻辑量,可采用等价类测试用例和决策表测试。
  12. +
+

第4章 白盒测试

+

4.1 概述

+

4.2 静态测试

+

4.3 逻辑覆盖

+

4.4 路径分析

+

4.5 控制结构测试

+

4.6 数据流测试

+

4.7 程序插桩

+

4.8 测试方法综述

+

4.9 知识点总结

+

第5章 性能测试

+

5.1 基本概念

+

5.2 性能测试分类

+

5.2.1 负载测试

+

5.2.2 压力测试

+

5.2.3 可靠性测试

+

5.2.4 数据库测试

+

5.2.5 安全性测试

+

5.2.6 兼容性测试

+

5.2.7 可用性测试

+

5.3 性能测试步骤

+

5.4 Web测试

+

5.5知识点总结

+

第6章 软件测试流程

+

6.1 软件测试流程概述

+

6.2 测试需求

+

6.3 测试计划

+

6.4 测试设计

+

6.5 测试执行

+

6.5.1 单元测试

+

6.5.2 集成测试

+

6.5.3 系统测试

+

6.5.4 验收测试

+

6.5.5 α测试

+

6.5.6 β测试

+

6.6 回归测试

+

6.7 测试评估

+

6.8 知识点总结

+

第7章 软件测试自动化

+

7.1 自动化测试和手工测试

+

7.2 测试成熟度模型

+

7.3 自动化测试体系

+

7.4 测试工具介绍

+

7.5 知识点总结

+

第8章 软件测试管理

+

8.1 软件测试管理概述

+

8.2 测试过程改进

+

8.3 人力资源

+

8.4 知识点总结

+ + + -- Gitee From d1c0fd2e60b09d63c843d1a49ba6552748a5fb71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E8=AF=9A?= Date: Tue, 14 Sep 2021 10:48:45 +0000 Subject: [PATCH 07/63] add LICENSE. --- LICENSE | 127 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..ee58399 --- /dev/null +++ b/LICENSE @@ -0,0 +1,127 @@ + 木兰宽松许可证, 第2版 + + 木兰宽松许可证, 第2版 + 2020年1月 http://license.coscl.org.cn/MulanPSL2 + + + 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: + + 0. 定义 + + “软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 + + “贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 + + “贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 + + “法人实体”是指提交贡献的机构及其“关联实体”。 + + “关联实体”是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 + + 1. 授予版权许可 + + 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 + + 2. 授予专利许可 + + 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 + + 3. 无商标许可 + + “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 + + 4. 分发限制 + + 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 + + 5. 免责声明与责任限制 + + “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 + + 6. 语言 + “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 + + 条款结束 + + 如何将木兰宽松许可证,第2版,应用到您的软件 + + 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: + + 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; + + 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; + + 3, 请将如下声明文本放入每个源文件的头部注释中。 + + Copyright (c) [Year] [name of copyright holder] + [Software Name] is licensed under Mulan PSL v2. + You can use this software according to the terms and conditions of the Mulan PSL v2. + You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 + THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + See the Mulan PSL v2 for more details. + + + Mulan Permissive Software License,Version 2 + + Mulan Permissive Software License,Version 2 (Mulan PSL v2) + January 2020 http://license.coscl.org.cn/MulanPSL2 + + Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: + + 0. Definition + + Software means the program and related documents which are licensed under this License and comprise all Contribution(s). + + Contribution means the copyrightable work licensed by a particular Contributor under this License. + + Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. + + Legal Entity means the entity making a Contribution and all its Affiliates. + + Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. + + 1. Grant of Copyright License + + Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. + + 2. Grant of Patent License + + Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. + + 3. No Trademark License + + No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. + + 4. Distribution Restriction + + You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. + + 5. Disclaimer of Warranty and Limitation of Liability + + THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + 6. Language + + THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. + + END OF THE TERMS AND CONDITIONS + + How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software + + To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: + + i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; + + ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; + + iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. + + + Copyright (c) [Year] [name of copyright holder] + [Software Name] is licensed under Mulan PSL v2. + You can use this software according to the terms and conditions of the Mulan PSL v2. + You may obtain a copy of Mulan PSL v2 at: + http://license.coscl.org.cn/MulanPSL2 + THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. + See the Mulan PSL v2 for more details. -- Gitee From 8852db024f6071135bec77f01bc63a50105c17d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E8=AF=9A?= Date: Tue, 14 Sep 2021 19:00:28 +0800 Subject: [PATCH 08/63] modify --- README.md | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 5bd826c..dbaae73 100644 --- a/README.md +++ b/README.md @@ -68,9 +68,9 @@ * 《软件支持手册》 #### 1.1.3 软件发展史 -1. 程序设计阶段:个体化生产、专用软件、规模小、功能单一、开发者即使用者。软件 = 程序 +1. 程序设计阶段:个体化生产、专用软件、规模小、功能单一、开发者即使用者。(软件 = 程序) 2. 程序系统阶段:多用户人机交互,实时系统和数据库管理系统。 -3. 软件工程阶段:以软件的产品化,系列化、工程化和标准化为特征的软件产业发展起来,软件开发有了可以遵循的软件工程化的设计准则、方法和标准。 +3. 软件工程阶段:以软件的产品化、系列化、工程化和标准化为特征的软件产业发展起来,软件开发有了可以遵循的软件工程化的设计准则、方法和标准。 4. 多层分布结构,面向服务架构 #### 1.1.4 软件项目 @@ -106,12 +106,12 @@ **描述:** 开发人员完成一个小迭代/小功能,且完成自测(开发编码完成后,一般都会自己检测下),于是向测试部门发起提测,一般以邮件方式或者任务管理工具的任务流方式向测试部门通知xxx模块/功能可以测试。 **参与者:** 任务责任人(开发)、测试 #### 1.2.8 测试 - - 测试需求 - - 测试计划 - - 测试设计 - - 测试执行 - - 回归测试 - - 测试评估 + - 测试需求 + - 测试计划 + - 测试设计 + - 测试执行 + - 回归测试 + - 测试评估 #### 1.2.9 部署/发版 **描述:** 经过前面的各个阶段,产品已经可以出售或者面向大众了。配置管理人员进行封版、版本制作(针对产品来说)/部署上线(针对项目应用来说)。 **参与人:** 配置管理人员、测试 @@ -140,9 +140,9 @@ The process of executing a program with the intent of finding errors. 这个观点较之前证明为主的思路,是一个很大的进步。我们不仅要证明软件做了该做的事情,也要保证它没做不该做的事情,这会使测试更加全面,更容易发现问题。 4. 1983–1987-评估为主(Evaluation Oriented) -软件行业进入了大发展时期,软件趋向大型化、复杂度,质量越来越重要。软件测试的基础理论和实用技术开始形成。提出了在软件生命周期中使用分析、评审、测试来评估产品的理论。 +软件行业进入了大发展时期,软件趋向大型化、复杂化,质量越来越重要。软件测试的基础理论和实用技术开始形成。提出了在软件生命周期中使用分析、评审、测试来评估产品的理论。 5. 1988–至今-预防为主(Prevention Oriented) -尽量早的介入,尽量早的发现这些明显的或隐藏的bug,发现得越早,修复起来的成本越低,产生的风险也越小。 +尽量早的介入并发现这些明显的或隐藏的bug,发现得越早,修复起来的成本越低,产生的风险也越小。 #### 1.3.3 测试与开发的关系 **瀑布模型** @@ -183,6 +183,7 @@ W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方 ![螺旋模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/lx-model.png) 大型软件项目通常有很多不确定性和风险,如果采用瀑布式线性过程模型,失败风险很大,因此需要采取一种渐进式的演化过程模型。将产品分解成增量版本,每个版本单独测试。 + **敏捷模型** ![敏捷模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/mj-model.png) -- Gitee From 63711303b5527bd0de1aacfd985c66b2330f0ab4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=91=A8=E8=AF=9A?= Date: Tue, 14 Sep 2021 19:01:39 +0800 Subject: [PATCH 09/63] modify --- LICENSE | 127 ---- README.html | 2063 --------------------------------------------------- 2 files changed, 2190 deletions(-) delete mode 100644 LICENSE delete mode 100644 README.html diff --git a/LICENSE b/LICENSE deleted file mode 100644 index ee58399..0000000 --- a/LICENSE +++ /dev/null @@ -1,127 +0,0 @@ - 木兰宽松许可证, 第2版 - - 木兰宽松许可证, 第2版 - 2020年1月 http://license.coscl.org.cn/MulanPSL2 - - - 您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束: - - 0. 定义 - - “软件”是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。 - - “贡献”是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。 - - “贡献者”是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。 - - “法人实体”是指提交贡献的机构及其“关联实体”。 - - “关联实体”是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。 - - 1. 授予版权许可 - - 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。 - - 2. 授予专利许可 - - 每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。 - - 3. 无商标许可 - - “本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。 - - 4. 分发限制 - - 您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。 - - 5. 免责声明与责任限制 - - “软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。 - - 6. 语言 - “本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。 - - 条款结束 - - 如何将木兰宽松许可证,第2版,应用到您的软件 - - 如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步: - - 1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字; - - 2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中; - - 3, 请将如下声明文本放入每个源文件的头部注释中。 - - Copyright (c) [Year] [name of copyright holder] - [Software Name] is licensed under Mulan PSL v2. - You can use this software according to the terms and conditions of the Mulan PSL v2. - You may obtain a copy of Mulan PSL v2 at: - http://license.coscl.org.cn/MulanPSL2 - THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - See the Mulan PSL v2 for more details. - - - Mulan Permissive Software License,Version 2 - - Mulan Permissive Software License,Version 2 (Mulan PSL v2) - January 2020 http://license.coscl.org.cn/MulanPSL2 - - Your reproduction, use, modification and distribution of the Software shall be subject to Mulan PSL v2 (this License) with the following terms and conditions: - - 0. Definition - - Software means the program and related documents which are licensed under this License and comprise all Contribution(s). - - Contribution means the copyrightable work licensed by a particular Contributor under this License. - - Contributor means the Individual or Legal Entity who licenses its copyrightable work under this License. - - Legal Entity means the entity making a Contribution and all its Affiliates. - - Affiliates means entities that control, are controlled by, or are under common control with the acting entity under this License, ‘control’ means direct or indirect ownership of at least fifty percent (50%) of the voting power, capital or other securities of controlled or commonly controlled entity. - - 1. Grant of Copyright License - - Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable copyright license to reproduce, use, modify, or distribute its Contribution, with modification or not. - - 2. Grant of Patent License - - Subject to the terms and conditions of this License, each Contributor hereby grants to you a perpetual, worldwide, royalty-free, non-exclusive, irrevocable (except for revocation under this Section) patent license to make, have made, use, offer for sale, sell, import or otherwise transfer its Contribution, where such patent license is only limited to the patent claims owned or controlled by such Contributor now or in future which will be necessarily infringed by its Contribution alone, or by combination of the Contribution with the Software to which the Contribution was contributed. The patent license shall not apply to any modification of the Contribution, and any other combination which includes the Contribution. If you or your Affiliates directly or indirectly institute patent litigation (including a cross claim or counterclaim in a litigation) or other patent enforcement activities against any individual or entity by alleging that the Software or any Contribution in it infringes patents, then any patent license granted to you under this License for the Software shall terminate as of the date such litigation or activity is filed or taken. - - 3. No Trademark License - - No trademark license is granted to use the trade names, trademarks, service marks, or product names of Contributor, except as required to fulfill notice requirements in Section 4. - - 4. Distribution Restriction - - You may distribute the Software in any medium with or without modification, whether in source or executable forms, provided that you provide recipients with a copy of this License and retain copyright, patent, trademark and disclaimer statements in the Software. - - 5. Disclaimer of Warranty and Limitation of Liability - - THE SOFTWARE AND CONTRIBUTION IN IT ARE PROVIDED WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED. IN NO EVENT SHALL ANY CONTRIBUTOR OR COPYRIGHT HOLDER BE LIABLE TO YOU FOR ANY DAMAGES, INCLUDING, BUT NOT LIMITED TO ANY DIRECT, OR INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES ARISING FROM YOUR USE OR INABILITY TO USE THE SOFTWARE OR THE CONTRIBUTION IN IT, NO MATTER HOW IT’S CAUSED OR BASED ON WHICH LEGAL THEORY, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. - - 6. Language - - THIS LICENSE IS WRITTEN IN BOTH CHINESE AND ENGLISH, AND THE CHINESE VERSION AND ENGLISH VERSION SHALL HAVE THE SAME LEGAL EFFECT. IN THE CASE OF DIVERGENCE BETWEEN THE CHINESE AND ENGLISH VERSIONS, THE CHINESE VERSION SHALL PREVAIL. - - END OF THE TERMS AND CONDITIONS - - How to Apply the Mulan Permissive Software License,Version 2 (Mulan PSL v2) to Your Software - - To apply the Mulan PSL v2 to your work, for easy identification by recipients, you are suggested to complete following three steps: - - i Fill in the blanks in following statement, including insert your software name, the year of the first publication of your software, and your name identified as the copyright owner; - - ii Create a file named “LICENSE” which contains the whole context of this License in the first directory of your software package; - - iii Attach the statement to the appropriate annotated syntax at the beginning of each source file. - - - Copyright (c) [Year] [name of copyright holder] - [Software Name] is licensed under Mulan PSL v2. - You can use this software according to the terms and conditions of the Mulan PSL v2. - You may obtain a copy of Mulan PSL v2 at: - http://license.coscl.org.cn/MulanPSL2 - THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. - See the Mulan PSL v2 for more details. diff --git a/README.html b/README.html deleted file mode 100644 index 21201f8..0000000 --- a/README.html +++ /dev/null @@ -1,2063 +0,0 @@ - - - -README.md - - - - - - - - - - - - -

软件测试

-

写在最前面

-

1 课程目标

-
    -
  • 掌握基础的软件测试理论、测试方法和策略
  • -
  • 掌握常用工具使用
  • -
  • 根据需求和设计文档独立编写测试计划、测试方案、测试用例以及测试报告
  • -
-

2 主要内容

-
    -
  • 软件测试基础知识
  • -
  • 软件测试通用技术
  • -
  • 软件测试流程
  • -
  • 黑盒测试
  • -
  • 白盒测试
  • -
  • 性能测试
  • -
  • 软件测试自动化
  • -
  • 软件测试管理
  • -
-

3 课程安排

-

学时安排:72课时(理论36+实践36)
-教材:清华大学出版社 《软件测试》(第2版) 周元哲 编著

-

4 课程资源

- -

第1章 软件测试概论

-

1.1 软件

-

1.1.1 软件定义

-

软件是一系列按照特定顺序组织的计算机数据和指令的集合。
-软件 ≠ 程序(代码)
-软件包含如下内容:

-
    -
  1. 运行时,能够提供所要求功能和性能的指令或计算机程序。
  2. -
  3. 程序能够处理信息的数据结构。
  4. -
  5. 用于描述程序功能需求、程序如何操作和如何使用的文档。
  6. -
-

1.1.2 文档

-
开发文档
-

开发文档是描述软件开发过程,包括软件需求、软件设计、软件测试、保证软件质量的一类文档,开发文档也包括软件的详细技术描述、程序逻辑、程序间相互关系、数据格式和存储等。

-
    -
  • 《可行性研究》
  • -
  • 《项目任务书》
  • -
  • 《需求规格说明书》
  • -
  • 《概要设计》
  • -
  • 《详细设计》
  • -
  • 《代码规范说明书》
  • -
  • 《数据字典》
  • -
  • 《开发计划》
  • -
-
管理文档
-

从管理的角度规定涉及软件生存的信息:

-
    -
  1. 职责定义
  2. -
  3. 开发过程的每个阶段的进度和进度变更的记录
  4. -
  5. 软件变更情况的记录
  6. -
  7. 相对于开发的判定记录
  8. -
-
    -
  • 《工作报告》
  • -
  • 《工作日志》
  • -
  • 《会议记录》
  • -
  • 《里程碑报告》
  • -
  • 《软件项目配置管理计划》
  • -
  • 《实施方案》
  • -
-
产品文档
-

为使用和运行软件产品的任何人规定培训和参考信息,促进软件产品的市场流通或提高可接受性。使得那些未参加开发本软件的程序员维护它。

-
    -
  • 《产品手册》
  • -
  • 《用户指南》
  • -
  • 《培训手册》
  • -
  • 《软件支持手册》
  • -
-

1.1.3 软件发展史

-
    -
  1. 程序设计阶段:个体化生产、专用软件、规模小、功能单一、开发者即使用者。软件 = 程序
  2. -
  3. 程序系统阶段:多用户人机交互,实时系统和数据库管理系统。
  4. -
  5. 软件工程阶段:以软件的产品化,系列化、工程化和标准化为特征的软件产业发展起来,软件开发有了可以遵循的软件工程化的设计准则、方法和标准。
  6. -
  7. 多层分布结构,面向服务架构
  8. -
-

1.1.4 软件项目

-

软件项目是一种特殊的项目,具有如下特点:

-
    -
  1. 知识密集型,技术含量高
  2. -
  3. 涉及多个专业领域,多种技术综合应用
  4. -
  5. 项目范围和目标的灵活性
  6. -
  7. 风险大,收益大
  8. -
  9. 客户化程度高
  10. -
  11. 过程管理重要
  12. -
-

1.2 软件生命周期

-

1.2.1 需求定义

-

描述: 定义出本次任务都需要做什么,做成什么样子。
-参与者: 产品经理、需求分析师、客户

-

1.2.2 可行性分析

-

描述: 由项目组相关成员去研究需求是否可行,能不能做出来。
-参与者: 产品经理、架构师、项目经理、开发

-

1.2.3 需求分析

-

描述: 需求分析其实是在做需求细化,按照任务说明书中的任务内容和指标具体细化各个点,细化到每个输入框、每个按钮的样式,输入输出等各项值。
-参与者: 产品经理、架构师、项目经理、测试/质量管理员(很多公司把这个统称为QA)、开发
-输出:《需求规格说明书》

-

1.2.4 评审

-

描述: 评审就是做审查,对这个阶段的工作进行审查,看是否偏离或者有遗漏(比如:设计和工厂的各个环节都有相关的审查,审查材料是否合格、设计是否符合规定、按照工人/设计出的材料需求是否足够或者多余等等,这些审查都是评审);评审一般由相应工作人员来参与。
-参与者: 每个阶段的评审一般都是各职能部门内部审核,也可以申请其他相关人员审核,比如需求评审,一般是产品经理、项目经理、测试、开发一起评审;系统设计一般是项目经理、开发评审;测试策略评审一般是测试组内部评审等等

-

1.2.5 设计

-

描述: 架构师根据需求确定产品或者项目的场景、特点,选择合适的框架,技术使项目实现最优化。在此基础上将系统进行概要设计,包括系统总体数据结构、数据库结构、模块结构以及它们之间的关系等。开发人员根据概要设计对具体模块进行详细设计,包括接口、参数等。此处设计会形成概要设计文档和详细设计文档。
-参与者: 项目经理、架构师、开发、测试

-

1.2.6 编码

-

描述: 开发人员根据详细设计文档对系统进行模块化开发,在确定参数和接口的情况下,根据需求对模块内部进行方法级别的设计和编码以及自测,对产品功能进行一一实现。
-参与者: 开发

-

1.2.7 提测

-

描述: 开发人员完成一个小迭代/小功能,且完成自测(开发编码完成后,一般都会自己检测下),于是向测试部门发起提测,一般以邮件方式或者任务管理工具的任务流方式向测试部门通知xxx模块/功能可以测试。
-参与者: 任务责任人(开发)、测试

-

1.2.8 测试

-
- 测试需求
-- 测试计划
-- 测试设计
-- 测试执行
-- 回归测试
-- 测试评估
-
-

1.2.9 部署/发版

-

描述: 经过前面的各个阶段,产品已经可以出售或者面向大众了。配置管理人员进行封版、版本制作(针对产品来说)/部署上线(针对项目应用来说)。
-参与人: 配置管理人员、测试 -10. 支持维护
-描述: 支持维护类似于我们日常中的售后,主要是对已卖出的产品/已上线的项目进行日常维护。包括纠错性维护和改进性维护两个方面。
-参与人: 支持维护人员/售后工程师

-

1.3 软件测试概述

-

1.3.1 软件测试定义

-

软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
-IEEE:使用人工或自动手段来运行或测定某个软件系统的过程,其目的在于检测他是否满足规定的需求或弄清预期结果和实际结果的差别。

-

1.3.2 测试发展历程

-
    -
  1. 1957年之前-调试为主(Debugging Oriented)
    -软件规模小,复杂度低,开发人员承担需求分析、设计、开发、测试等所有工作,等同于调试。
  2. -
  3. 1957–1978-证明为主(Demonstration Oriented)
    -与调试区分开,这是软件测试史上一个重要的里程碑,主要目是确认软件是满足需求的。
  4. -
  5. 1979–1982-破坏为主(Destruction Oriented)
    -1979年,《软件测试的艺术》 (The Art of Software Testing)第一版问世,这本书是测试界的经典之作。书中给出了软件测试的经典定义:
  6. -
-
The process of executing a program with the intent of finding errors. -测试是为发现错误而执行程序的过程。 -
-

这个观点较之前证明为主的思路,是一个很大的进步。我们不仅要证明软件做了该做的事情,也要保证它没做不该做的事情,这会使测试更加全面,更容易发现问题。

-
    -
  1. 1983–1987-评估为主(Evaluation Oriented)
    -软件行业进入了大发展时期,软件趋向大型化、复杂度,质量越来越重要。软件测试的基础理论和实用技术开始形成。提出了在软件生命周期中使用分析、评审、测试来评估产品的理论。
  2. -
  3. 1988–至今-预防为主(Prevention Oriented)
    -尽量早的介入,尽量早的发现这些明显的或隐藏的bug,发现得越早,修复起来的成本越低,产生的风险也越小。
  4. -
-

1.3.3 测试与开发的关系

-

瀑布模型
-瀑布模型

-

这是一种经典模型,提供了软件开发的基本框架。
-强调开发工作(计划、设计、开发、测试、维护等)各阶段之间的先后顺序,不可以并行操作。
-瀑布模型认为,测试是指代码完成后,处于运行维护阶段之前。如果需求和设计上存在缺陷,就会造成大量返工,增加成本。为了更早的发现问题,测试应延伸到需求评审,设计审查活动中,软件生命周期的每个阶段都应包含测试。
-优点:

-
    -
  1. 各阶段划分清晰
  2. -
  3. 强调计划与需求分析
  4. -
  5. 适合需求稳定的产品开发
  6. -
-

缺点:

-
    -
  1. 单一流程,不可逆
  2. -
  3. 风险显露得晚,纠正机会少
  4. -
  5. 测试只是其中一个阶段,缺乏全过程测试思想
  6. -
-

V模型
-V模型

-

强调将测试和开发同等重要,对于开发阶段都有与之对应的测试阶段。
-优点:
-相对于瀑布模型,V模型测试能够尽早的进入到开发阶段。
-缺点:
-虽然测试尽早的进入到开发阶段,但是真正进行软件测试是在编码之后,这样忽视了测试对需求分析、系统设计的验证,时间效率上也大打折扣。

-

W模型(双V模型)
-W模型

-

明确表示出了测试与开发的并行关系
-优点:
-W 模型相对于 V 模型来说,测试更早的进入到开发阶段,与开发阶段是并行关系,更早的发现问题,能够及时解决问题,各个阶段分工明确,方便管理。
-缺点: -W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方便。

-

螺旋模型
-螺旋模型

-

大型软件项目通常有很多不确定性和风险,如果采用瀑布式线性过程模型,失败风险很大,因此需要采取一种渐进式的演化过程模型。将产品分解成增量版本,每个版本单独测试。 -敏捷模型
-敏捷模型

-

敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。专注于交付对客户有价值的软件(可以工作的)。

-

强调以人为核心,程序员团队和业务专家之间的紧密联系,频繁交付新的软件版本,紧凑的自我组织型团队,更注重软件开发中人的作用。

-

在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。

-

《联盟敏捷宣言》

-
    -
  1. 最重要的是通过尽早和不断交付有价值的软件满足客户需要。
  2. -
  3. 我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势。
  4. -
  5. 经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。
  6. -
  7. 业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。
  8. -
  9. 围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务。
  10. -
  11. 在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。
  12. -
  13. 可以工作的软件是进度的主要度量标准。
  14. -
  15. 敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。
  16. -
  17. 对卓越技术与良好设计的不断追求将有助于提高敏捷性。
  18. -
  19. 简单——尽可能减少工作量的艺术至关重要。
  20. -
  21. 最好的架构、需求和设计都源自自我组织的团队。
  22. -
  23. 每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。
  24. -
-

解读:

-
    -
  • -

    个体和互动高于流程和工具
    -以人为本,没有比面对面交流更高效的沟通渠道了,基于互相信任的前提,敏捷提倡自治的全功能团队。 -在工作形式上,整个团队平时坐在一起工作,从物理空间上创造了更加便捷面对面的沟通机会。在团队职责上,团队内部具备完成软件交付的角色(能力),团队所有人对软件的质量负责,开发过程由团队内部把控,业务价值团队内部快速流动,在任何环节都能及时获得反馈。同时,每个角色都更容易从全局视角去思考软件,避免了传统部门墙模式下的视角割裂和协作障碍。

    -
  • -
  • -

    工作的软件高于详尽的文档
    -为客户交付可工作的软件是我们的核心目标,我们应该尽早交付可进行端到端测试的代码,该目标决定了我们不应该花过多精力在面面俱到的文档上,但这不代表我们要抵制任何文档。实践证明,轻量级的文档策略有助于团队高质量交付可工作的软件。

    -
  • -
  • -

    客户合作高于合同谈判
    -主动拥抱变化,及时响应,持续交付。

    -
  • -
  • -

    响应变化高于遵循计划
    -通过高效的协作,获取快速的反馈,从而尽早做出调整,减少浪费

    -
  • -
-

缺点:
-由于其项目周期很长,所以很难保证开发的人员不更换,而缺少文档就会造成在交接的过程中出现很大的困难。

-

敏捷开发流程

-

1.4 软件缺陷

-

1.4.1 缺陷定义

-

IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。

-

符合下面4个条件之一就是缺陷:

-
    -
  1. 软件未达到规格说明书中规定的功能。
  2. -
  3. 软件出现了产品说明数中指明的不会出现的错误。
  4. -
  5. 软件功能超出了产品说明书中指明的范围。
  6. -
  7. 软件难于理解,不易使用,运行速度慢,或者最终用户认为软件使用效果不好。
  8. -
-

1.4.2 产生原因

-
    -
  1. 软件本身复杂性,产生大量不确定因素。
  2. -
  3. 成本、时间限制,导致流程不够完善,文档缺失,缺乏严谨的评审。
  4. -
  5. 人员本身技能水平、责任心、交流沟通不顺畅。
  6. -
  7. 不全面或者没有复审。
  8. -
-

1.4.3 缺陷来源

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
缺陷来源描述
需求说明书需求说明书错误或描述不清
设计文档设计文档描述不准确,与需求不一致
系统集成接口各模块参数不匹配
数据流(库)数据字典、数据库中的错误
程序代码编码问题
-

1.4.4 缺陷类型

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
缺陷类型描述
功能未达到规格说明书中规定的功能,影响系统使用
用户界面未按照原型设计,影响交互,如:显示格式,按钮位置
文档文档内容不完整或不正确,影响发布和维护
软件包由于软件配置库、变更管理或版本控制引发的错误
性能执行时间长、处理速度慢、负载高等方面
接口与其他模块参数不匹配
-

1.4.5 缺陷级别

-

严重性: 表示软件缺陷的恶劣程度,当用户碰到该缺陷时影响的可能性和程度。
-优先级: 表示修复缺陷的重要程度和紧迫程度。

-
严重性
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
级别名称说明示例
S1致命错误严重阻碍开发或测试工作的进行,必须马上解决安装包或App无法安装
网页不能访问
不能启动
死机
核心功能无法使用,比如QQ不能收发消息,邮箱不能收发邮件
S2严重缺陷系统出现重大问题,影响提供的主要功能使用内存泄露
数据无法保存
S3主要错误主要功能实现有问题,易用性不够好某个非核心功能全部或者部分未实现、实现后流程走不通、实现的功能与需求不同、文本框未校验或者校验不全、提示不全(异常提示不合理或者没提示)、手册相关内容缺失、兼容问题、安装界面乱码
S4次要错误次要功能实现有问题或者手册相关问题个别不常用的属性不生效或实现有问题(前提:不影响主要功能使用)
次要功能实现与需求不符或实现有问题(如:日志不能轮转、预警策略不生效、搜索框不能用、快照生成格式有问题等)
错别字
手册描述不合理或样式格式有问题
S5轻微缺陷建议,不属于缺陷
-
优先级
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
级别名称说明
P1不影响整个系统的正常运行,一般指建议性的问题
P2不影响继续测试,但也是必须要修改的,对功能的实现有所影响,如果时间允许应该修复
P3影响整个测试的继续进行,要马上修改
P4系统无法继续执行下去,必须立即修改
-

严重性和优先级对于审查缺陷报告并决定哪些软件缺陷应该修复,以何种顺序修复的人员极为重要。如果一个程序员受命修复10个缺陷,他就应该先从严重性为1 、优先级为1这样的缺陷着手,而不是优先修复简单的,由简到难。

-

综合使用重要性等级和严重性双标准的优先顺序:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
S1. 致命错误S2. 严重缺陷S3. 主要错误S4. 次要错误S5. 轻微缺陷
P4. 急立即修复
3小时内
第2修复
1天内
第4修复
2天内
第7修复
3天内
第11修复
4天内
P3. 高第3修复
1-2天内
第5修复
2-3天内
第8修复
3-4天内
第12修复
4-5天内
第15修复
5-6天内
P2. 中第6修复
3-4天内
第9修复
4-5天内
第13修复
5-6天内
第16修复
6-7天内
第18修复
2-3周内
P1. 低第10修复
8-7天内
第14修复
7-9天内
第17修复
8-12天内
第19修复
3-4周内
第20修复
择期
-

1.4.6 跟踪流程

-

最优化、最简单的生命周期是:(理想情况)

-
    -
  1. 测试员发现缺陷并记录缺陷报告。
  2. -
  3. 缺陷报告交给程序员,此时缺陷状态是打开。(open state)
  4. -
  5. 程序员修改缺陷,此时缺陷状态是解决。(resolved state)
  6. -
  7. 缺陷报告交还测试员。
  8. -
  9. 测试员确认已修复。
  10. -
  11. 测试员关闭缺陷报告,此时缺陷状态是关闭。(closed state)
  12. -
-

一个缺陷很可能会被反复打开→关闭。在日常工作过程中,由于开发修订其他缺陷影响、需求变更等因素缺陷可能会被反复打开→关闭。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
缺陷状态描述
打开确认提交的缺陷,等待处理
已分配分配开发人员进行修复
已解决经过开发人员修复,等待测试人员验证
已验证测试人员验证修复成功
已关闭修复完成,确认测试通过
重新打开测试验证依然存在缺陷,等待开发修复
推迟暂不解决,可能在下一个版本修复
保留条件不允许,不能修复
不能重现开发不能复现这个缺陷,需要测试人员检查缺陷发现步骤
-

1.4.7 缺陷记录内容

-
    -
  1. bug编号:bug的唯一id,以方便尽快找到此bug。
  2. -
  3. bug标题:bug摘要,阐述bug大体内容。
  4. -
  5. bug严重级别,优先级:作为缺陷是否修复以及缺陷修复优先级的决定性因素。
  6. -
  7. bug产生的模块:记录bug所属模块,方便开发定位问题。
  8. -
  9. bug对应的版本:bug对应的软件版本,方便后续的统计归档以及开发定位问题。
  10. -
  11. bug描述:bug的产生环境、详细步骤、期望结果、实际结果。
  12. -
  13. 附件:包括但不仅限于截图、日志、录像、所用到的示例文件以及应用;同样是方便复现解决缺陷的。
  14. -
-

以上是上报bug、创建bug必须的,在后续我们还会对bug进行修复、复测等工作,那在为了记录后续工作,bug还应该包含:

-
    -
  1. bug状态:开始、修复中、修复完成、提测、测试中、测试通过/失败、关闭等,后续bug周期中会讲到。
  2. -
  3. bug修订人:bug修订人员。
  4. -
  5. bug复测人:通常是谁报的bug最后返回给谁测试,但是在某些情况下比如bug报告人任务积累太多/不在的情况下也会分给其他人,所以通常会记录bug复测责任人。
  6. -
  7. bug修订说明:由bug修订人来写,说明bug产生原因,修改思路等。
  8. -
  9. bug复测说明:由复测人员来写,说明复测过程,复测结果等。
  10. -
  11. bug备注:备注,以便记录一些额外信息。
  12. -
-

1.4.8 缺陷预防

-

差错:人在理解和解决问题的思维和行为过程中出现的问题,沟通不当,理解错误。(产生根源)
-错误:软件内部问题,设计错误、编码错误。(内部原因)
-失效:软件系统运行时偏离了用户需求。(外部表现)

-

1.5 软件测试行业

-

1.5.1 行业现状

-

软件系统越来越复杂,一个软件不能够由单独的软件工程师单独编写,而是由团队进行配合,每个人可能只负责一个模块,对于全局没有过多的了解,这时如果运行软件就会容易产生很多的错误。在行业内将这些错误叫做BUG。并且每一个软件工程师都会有思维的死角,自己不容易发现自己编写出来的错误。所以这个时候就需要专门的软件测试工程师用专业的测试方式来检查软件。检查该软件是否符合客户要求的产品设计,是否能够符合大多数用户的使用习惯,如果发现异常状态及时进行处理。软件市场虽然远远没有达到饱和但是各种各样功能的软件也层出不穷竞争激烈,对软件开发的质量要求也是日益增高。

-

我国软件测试行业起步较晚,发展较慢,直到21世纪初期,我国才逐步开始重视软件测试行业。但近年来,软件行业的快速发展为软件测试行业的发展提供了良好的基础,随着我国软件测试行业的发展,行业内企业向规模化发展将获得规模效应,可以有效降低企业的单位成本;而软件测试技术的不断发展,也将淘汰那些技术实力较弱的企业,促使行业内企业向专业化方向发展。

-

在软件业较发达的国家,软件测试产业已形成规模,比较发达,软件测试不仅早已成为软件开发的一个重要组成部分,而且在整个软件开发的系统工程中占据着相当大的比重。在微软公司内部,软件测试人员与软件开发人员的比例一般为1.5∶1到2.5∶1左右,即一个开发人员背后,有至少两位测试人员在工作,以保证软件产品的质量1。国外优秀的软件开发机构把40%的工作花在软件测试上,软件测试费用占软件开发总费用的30%至50%,对于一些要求高可靠性、高安全性的软件,测试费用甚至相当于整个软件项目开发所有费用的3至5倍。

-

从国内软件公司软件测试部门的独立性来看,多数软件企业没有专门的测试技术部门,软件测试程序也不太规范,多数企业也不懂测试,对测试的投入资金过少。大多数是在经过简单的测试之后,就认为是没有问题了,就交于用户了,让用户去“测试”。于是,软件产品在没有经过严格测试的情况下就发布了。对国内消费类软件而言,经常出现一些已经推向市场的产品由于被发现有严重缺陷而导致大量退货的现象。定制的行业软件,常出现一再返工、无限期的修改和维护的现象。

-

当前国内软件测试行业主要存在以下问题:

-
    -
  1. 软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题。
  2. -
  3. 面向对象的开发技术越来越普及,但是面向对象的测试技术却刚刚起步。
  4. -
  5. 对于分布式系统整体性能还难以进行很好的测试。
  6. -
  7. 对于实时系统缺乏有效的测试手段。
  8. -
  9. 随着安全问题的日益突出,信息系统的安全性如何进行有效的测试与评估,成为世界性的难题。
  10. -
  11. 测试的自动化程度不高,手工测试过多,自动化测试工具和手工测试人员也缺乏较好的结合。
  12. -
  13. 缺乏软件测试意识、对其重视不够。
  14. -
  15. 在软件开发基本完成后才进行测试,也缺乏软件测试的统一标准。
  16. -
  17. 高校从师资储备到专业设置再到人才培养的机制薄弱。
  18. -
-

国内外软件测试差距

-
    -
  1. 测试的理解认识
  2. -
  3. 测试过程的管理
  4. -
  5. 测试工具的使用
  6. -
  7. 测试人员的培养
  8. -
-

1.5.2 未来趋势

-
    -
  1. 以软件为代表的计算机行业正在以一种井喷式的趋势发展
  2. -
  3. 人才缺口大
  4. -
  5. 女性员工受到青睐
  6. -
  7. 未来发展空间大
  8. -
  9. 外包为主
  10. -
-

1.5.3 软件测试职业发展

-
    -
  1. 技术方向 -
      -
    • 敏捷测试专家
    • -
    • 高级测试开发专家
    • -
    • 专项测试专家
    • -
    • QA-Ops 专家
    • -
    -
  2. -
  3. 管理方向 -
      -
    • 测试组长
    • -
    • 测试经理
    • -
    • 项目测试负责人
    • -
    • 测试总监
    • -
    -
  4. -
  5. 易转型方向 -
      -
    • 项目经理
    • -
    • 产品经理
    • -
    -
  6. -
-

1.5.4 测试思维方式

-
    -
  1. 逆向思维方式
  2. -
  3. 组合思维方式
  4. -
  5. 全局思维方式
  6. -
  7. 两级思维方式
  8. -
  9. 比较思维方式
  10. -
  11. 发散思维方式
  12. -
-

1.6 测试认识的误区

-
    -
  1. 使用了测试工具,就进行了有效的测试
  2. -
  3. 存在太多无法测试的东西
  4. -
  5. 软件开发完成后才进行测试
  6. -
  7. 软件发布后发现质量问题,是测试人员的问题
  8. -
  9. 软件测试很简单,就是点点点,是个人就能做
  10. -
  11. 软件测试没有前途,只有程序员才是软件高手
  12. -
  13. 软件测试是测试人员的事情和程序员无关
  14. -
  15. 项目进度吃紧时少做测试,时间多时多做测试
  16. -
  17. 测试要进行穷尽测试
  18. -
  19. 采样是随机抽取过程
  20. -
  21. 测试和开发是对头
  22. -
  23. 测试少报bug开发就会高兴点,报告也会好看点
  24. -
  25. 自动化测试终会取代手工测试
  26. -
  27. 规范化软件测试是增加项目成本
  28. -
  29. 越多测试越有效
  30. -
  31. 软件测试工作只负责项目上线/产品发布之前的部分
  32. -
-

1.7 知识点总结

-

第2章 软件测试基础知识

-

2.1 概述

-
    -
  1. 从软件测试的目的来理解
    -软件的目的是发现软件中的错误,是为了证明软件有错,而不是无错。是在软件投入运行前,对软件需求分析、设计和编码各个阶段产品的最终检查,是为了保证软件开发产品的正确性、完整性和一致性。
  2. -
  3. 从软件测试的性质来理解 -在软件开发过程中,分析、设计和编码都是“建设性的”,唯有测试是“破坏性的”。
  4. -
  5. 从软件开发角度来理解 -软件测试以检查产品的内容和功能特性为核心,是软件质量保证的关键步骤,也是成功实现软件开发目标的重要保障。
  6. -
  7. 从软件工程角度来理解
    -软件测试是软件工程的一部分,是软件工程过程中的重要阶段。
  8. -
  9. 从软件质量保证角度来理解
    -软件测试是软件质量保证的重要措施。
  10. -
-

2.2 测试的目的和原则

-

2.2.1 测试的目的

-
    -
  1. 测试不仅仅是找出错误。通过分析错误产生的原因和错误的发展趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便即时改进。
  2. -
  3. 检测产品是否符合用户要求。
  4. -
  5. 没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
  6. -
  7. 提升用户体验。
  8. -
-

2.2.2 测试的原则

-
    -
  1. 软件测试是证伪而非证实。
  2. -
  3. 尽早地、不断地进行测试。
  4. -
  5. 重视无效数据和非预期的测试。
  6. -
  7. 应当对每一个测试结果做全面的检查。
  8. -
  9. 测试现场保护和资料归档。
  10. -
  11. 程序员应避免检查自己的程序。
  12. -
  13. 充分注意测试中的集群现象。
  14. -
  15. 用例要定期评审,适时补充修改用例。
  16. -
-

2.3 测试分类

-

2.3.1 按照测试阶段划分

-
    -
  1. 单元测试
  2. -
  3. 集成测试
  4. -
  5. 确认测试
  6. -
  7. 系统测试
  8. -
  9. 验收测试
  10. -
-

软件测试阶段对照表:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
测试阶段主要依据参与人员/测试方式主要测试内容
单元测试《详细设计》开发小组执行白盒测试规范、逻辑、路径
集成测试《概要设计》
《需求文档》
开发小组执行白盒测试、黑盒测试接口、路径、功能、性能
系统测试《需求文档》独立测试小组执行黑盒测试功能测试、界面测试、安全测试、兼容性测试、易用性测试、性能测试、压力测试、负载测试
验收测试《需求文档》用户执行黑盒测试同上
-

2.3.2 按照执行状态划分

-
    -
  1. 静态测试
  2. -
  3. 动态测试
  4. -
-

2.3.3 按照测试技术划分

-
    -
  1. 白盒测试
  2. -
  3. 黑盒测试
  4. -
  5. 灰盒测试
  6. -
-

2.3.4 按照执行主体划分

-
    -
  1. α测试
  2. -
  3. β测试
  4. -
  5. 第三方测试
  6. -
-

2.3.5 按照测试内容划分

-
    -
  1. 界面测试
  2. -
  3. 功能测试
  4. -
  5. 安全测试
  6. -
  7. 兼容性测试
  8. -
  9. 易用性测试
  10. -
  11. 性能测试
  12. -
-

2.3.6 按照是否手工操作划分

-
    -
  1. 手工测试
  2. -
  3. 自动化测试
  4. -
-

2.4 测试用例

-

2.4.1 简介

-

测试用例是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括:测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。

-

简单的认为,测试用例是为某个特定目标而编制的一组测试输入、执行条件和预期结果,用于核实是否满足某个特定的软件需求。

-

选择测试用例是软件测试员最重要的一项任务,不正确的选择可能导致测试量过大或者过小,甚至测试目标不对。准确评估风险,把无穷尽的可能性减少到可以控制的范围是软件测试成功的诀窍。

-

2.4.2 测试用例的作用

-
    -
  1. 指导测试的实施
  2. -
  3. 评估测试结果的度量基准
  4. -
  5. 保证软件的可维护性和可复用性
  6. -
  7. 分析缺陷的标准
  8. -
-

2.4.3 测试用例设计准则

-
    -
  1. 有效性
  2. -
  3. 经济性
  4. -
  5. 完备性
  6. -
  7. 可判定性
  8. -
  9. 可再现性
  10. -
-

2.4.4 测试用例维护

-

术语

-
    -
  1. 测试编号:测试用例的编号
  2. -
  3. 测试项:测试的功能点说明
  4. -
  5. 前置条件:该测试用例的前提条件,比如测试wangdachui/dachui12345(用户名/密码)账户是否能正确登录进去,那前提wangdachui/dachui12345已定是注册过的
  6. -
  7. 测试步骤:就是测试的所有操作步骤,最好是每一个步骤应该对应一个期望结果,最少也得一个测试用例对应一个期望结果
  8. -
  9. 期望结果:就是希望得到的结果(正确的结果)
  10. -
  11. 测试结果:实际测试的结果,可选项有:通过、不通过、暂时挂起/锁定(就是暂时不测试);
  12. -
  13. 对应的bug:当期望结果与实际结果不符时测试不通过,此时需要上报bug(纪录缺陷),bug需要与测试用例对应
  14. -
  15. 测试执行人:实际由谁来执行测试用例;也有任务分配人的选项,就是测试用例分配给哪个测试员来测试
  16. -
  17. 备注:做一些备注或者测试的说明
  18. -
  19. 合法用户:就是已经注册过的用户
  20. -
  21. 非法用户:没有注册过;注册过但是用户名/密码不匹配的;本文特指未注册过的用户
  22. -
-

测试用例维护一般分为以下几种情况:

-
    -
  1. 产品特性没变:漏测或者环境变更,这个时候版本没变,测试用例增加和修改均可
  2. -
  3. 原有特性变化:功能变化,只能新增,不能修改,还要兼容老版本
  4. -
  5. 原有功能取消:测试用例在新版本上置为“空”标志或者“无效状态”,对于先前版本有效
  6. -
  7. 新增功能:新增用例,对应新版本标志
  8. -
-

2.4.5 测试用例设计误区

-
    -
  1. 测试用例设计等同于测试输入数据设计
  2. -
  3. 测试用例设计越详细越好
  4. -
  5. 追求测试用例设计“一步到位”
  6. -
  7. 将多个测试条件混在一个用例中
  8. -
-

2.5 测试停止标准

-

2.5.1 软件测试停止总体标准

-
    -
  1. 测试超过了预定时间
  2. -
  3. 执行了所有的测试用例,并没有发现故障
  4. -
  5. 使用特定的测试用例设计方法作为判断测试停止的基础
  6. -
  7. 给出测试停止的要求
  8. -
  9. 根据经单位时间内查出故障的数量决定是否停止测试
  10. -
  11. 软件系统经过了单元、集成、系统测试,分别达到停止标准。通过验收测试,得出验收测试结论。
  12. -
  13. 软件项目暂停以进行调整,测试应随之暂停,并备份暂停点数据。或者软件项目开发生命周期内出现重大估算、进度偏差,需暂停或终止时,测试应随之暂停或终止,并备份数据
  14. -
-

2.5.2 软件测试各阶段停止标准

-
单元测试停止标准
-
    -
  1. 单元测试用例已经通过评审
  2. -
  3. 按照单元测试计划完成了所有规定单元测试
  4. -
  5. 达到了测试计划中关于单元测试所规定的覆盖率要求
  6. -
  7. 被测试的单元每千行代码必须发现至少3个错误
  8. -
  9. 软件单元功能与设计一致
  10. -
  11. 单元测试中发现的错误已经得到修改,各级缺陷修复率达到标准
  12. -
-
集成测试停止标准
-
    -
  1. 集成测试用例已经通过评审
  2. -
  3. 按照集成测试计划和增量集成策略完成了整个系统的集成测试
  4. -
  5. 达到了测试计划中关于集成测试所规定的覆盖率要求
  6. -
  7. 被测试的集成工作版本每千行代码必须发现至少2个错误
  8. -
  9. 集成工作版本满足设计定义的各项功能、性能要求
  10. -
  11. 在集成测试中发现的错误已经得到修改,各级缺陷修复率达到标准
  12. -
-
系统测试停止标准
-
    -
  1. 系统测试用例已经通过评审
  2. -
  3. 按照系统测试计划完成了系统测试
  4. -
  5. 达到了测试计划中关于系统测试所规定的覆盖率要求
  6. -
  7. 被测试的系统每千行代码必须发现至少1个错误
  8. -
  9. 系统测试满足设计需求规格说明书要求
  10. -
  11. 在系统测试中发现的错误已经得到修改,各级缺陷修复率达到标准
  12. -
-

2.6 知识点总结

-

第3章 黑盒测试

-

3.1 概述

-

黑盒测试也称功能测试,通过测试来检测每个功能是否都能正常使用。

-

着眼于程序外部结构,不考虑内部逻辑结构,通过测试检验每个功能是否能正常使用。在程序接口进行测试,只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当的接受输入数据而产生正确的输出信息。

-

黑盒测试从用户的角度出发,以输入数据与输出数据的对应关系进行测试,数据驱动。

-

黑盒测试注重测试软件的功能需求,主要视图发现下列几类错误

-
    -
  1. 功能不正确或遗漏
  2. -
  3. 界面错误
  4. -
  5. 数据库访问错误
  6. -
  7. 性能错误
  8. -
  9. 初始化和终值错误
  10. -
-

3.2 等价类划分

-

等价类是指某个输入域的子集合。在该子集合中,测试某等价类的代表值就等于对这类其他值的测试,对于揭露程序的错误是等效的。

-

要注意的是,在进行等价类划分的过程中,我们不仅要考虑有效等价类划分,也要考虑无效等价类划分。

-

有效等价类:是指输入完全符合程序规格说明的数据集合。利用有效等价类可以测试程序是否满足规格说明书规定的功能和性能。

-

无效等价类:和有效等价类相反,是指对程序的规格说明无意义、不合理的输入数据构成的集合。

-

3.2.1 划分原则

-
    -
  1. 在输入条件规定了取值范围的情况下,可以确立一个有效等价类(在取值范围之内)和两个无效等价类(小于取值范围和大于取值范围)。
  2. -
  3. 在输入条件规定了取回个数的情况下,可以确立一个有效等价类(在取值个数范围之内)和两个无效等价类(小于取值个数和大于取值个数)。
  4. -
  5. 在输入条件规定了输入值的集合的情况下,可以确立一个有效等价类和一个无效等价类。
  6. -
  7. 在输入条件规定了“必须如何”条件的情况下,可以确立一个有效等价类和一个无效等价类。
  8. -
  9. 在输入条件是一个布尔值的情况下,可以确立一个有效等价类和一个无效等价类。
  10. -
  11. 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的将情况下,可以确立n个有效等价类和一个无效等价类。
  12. -
  13. 在规定了输入数据必须遵守规则的情况下,可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
  14. -
  15. 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将改等价类进一步划分为更小的等价类。
  16. -
-

3.2.2 设计测试用例步骤

-
    -
  1. 形成等价类表,每一等价类规定一个唯一编号
  2. -
  3. 设计测试用例,使其尽可能多的覆盖尚未覆盖的有效等价类
  4. -
  5. 设计一个新的测试用例,使其只覆盖一个无效等价类,重复这一步直到所有无效等价类均被覆盖。
  6. -
-

3.2.3 等价类举例

-

我们要测试学习成绩这一输入框(假设总成绩都是100),那么我们就可以如下图划分,有效的成绩是>=0且<=100的,无效的是<0和>100这两部分。

-

等价类举例

-

另外图中还有一个无效等价类没有表现出来--非数字字符(比如:英文字母、中文、特殊的符号等单一或者组合,如a、abc、你好、你abc、你=我、\你\a\等;以及他们分别与数字组合,比如:a123、321a、你123、12你、1你2、1\2、1=你等)。

-

那么根据上述分析,最终设计出来的测试用例如下:

-
    -
  1. 有效等价类1:0~100(包含0和100)之间的任意数,比如:19;
  2. -
  3. 无效等价类1:小于0的负数,比如:-1;
  4. -
  5. 无效等价类2:大于100的数,比如:121;
  6. -
  7. 无效等价类3:其他任意非数字字符,比如:a、你、\;
  8. -
  9. 无效等价类4:空字符
  10. -
-

等价类最终必须是分割到最小单位,只有这样才能保障测试覆盖全面。
-非数字字符可以是包含英文字符、中文、特殊符号的字符串或者字符,所以其实它又可以分为三个无效等价类,分别是:

-
    -
  1. 无效等价类:包含英文字符的字符串,比如:a、a123、a=、b你a;
  2. -
  3. 无效等价类:包含中文的字符串,比如:你、你12、1你2、你=;
  4. -
  5. 无效等价类:包含特殊字符的字符串,比如:\ 。
  6. -
-

3.3 边界值分析

-

边界值分析法是等价类划分法的补充。顾名思义,边界值分析法是对输入的边界值进行测试。从实践中我们可以发现,人们无论是在生活中还是在工作中往往会忽略边界值的条件,所以在输入或者输出的边界上会发生大量的错误。因此,在测试用例设计中,需要对输入的条件进行分析并且提取其中的边界值条件,通过对这些边界值的测试来查出更多的错误。

-

常见的边界值:

-
    -
  1. 文本框接受字符个数,比如用户名长度、密码长度等。
  2. -
  3. 报表的第1行和最后1行。
  4. -
  5. 数组元素的第1个和最后1个。
  6. -
  7. 循环的第1次、第2次和倒数第1次、最后1次。
  8. -
-

3.3.1 设计原则

-
    -
  1. 如果输入条件规定了值的范围,则应取刚达到这个范围边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。
  2. -
  3. 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。
  4. -
  5. 如果规格说明书给出的输入域或输出域是有序集合,则应选取集合的第1个元素和最后1个元素作为测试用例。
  6. -
  7. 如果程序中使用了内部数据结构,则应选择内部数据结构边界上的值作为测试用例。
  8. -
  9. 分析规格说明,找出其他可能的边界条件。
  10. -
-

3.3.2 两类方法

-
    -
  1. -

    一般边界值分析 -对于含有n个变量的程序,取值为min、min+、normal,max-、max,测试用例数目为4*N+1。 -一般边界值分析

    -
  2. -
  3. -

    健壮性边界值分析 -健壮性边界值测试是边界值分析的一种扩展。变量除了取min、min+、normal、max-、max 5个边界值外,还要考虑略超过最大值(max+)以及略小于最小值(min-)的取值。因此,对于含有n个变量的程序,健壮性边界值分析产生6*n+1个测试用例。 -健壮性边界值分析

    -
  4. -
-

3.3.3 应用举例

-

延伸上节的例子来说明:学生信息系统中有一个“考试成绩”的输入项,成绩的取值范围是0~100之间的整数,考试成绩及格的分数线是60,优秀的分数线是80。那么这个例子中的边界值数据是哪些呢:

-
-

选取的边界值数据应该包括:

-

-1,0,1,59,60,61,79,80,81,99,100,101

-
-

通常情况下,软件测试所包含的边界检验有以下几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等,而相应地,这些类型的边界值应该在最大/最小,首位/末尾,上/下,最快/最慢,最高/最低,最短/最长,空/满等情况下。

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
测试项边界值测试用例设计思路
数字起始位数-1
结束位数+1
成绩,正确0-100,边界-1,0,100,101
字符起始-1个字符
结束+1个字符
用户名输入框,正确1-32位,边界0、1、32、33,注意中文字符占位不同
方向刚差一点
刚超一点
游戏,通过门口,边界值门内一步和门外一步
空间小于空余空间一点
大于满空间一点
磁盘剩余20G,边界19.9G和20.1G
位置上下左右里面一点
外面一点
按钮,四边内四点,外四点
-

3.3.4 局限性

-

如果被测程序是多个独立变量的函数,这些变量受物理量的限制,则较适合采用边界值分析。这里的关键是 “独立”的“物理量” 。例如,Date是3个变量(年、月、日)的函数,对其采用边界分析测试用例,就会发现测试用例是不充分的,例如,没强调2月和闰年。其存在问题是因为没有考虑月份、日期和年变量之间存在的依赖关系。由于边界值分析假设变量是完全独立的,因此边界值分析测试用例是对物理量的边界独立导出变量极值,不考虑函数的性质,也不考虑变量的语义含义。 -边界值分析对布尔变量和逻辑变量没有多大意义。例如,布尔变量的极值是true和false,但是其余3个值不明确。

-

3.4 决策表

-

等价类划分法和边界值分析法只是孤立地考虑各个输人数据的测试效果,没有考虑输入数据的组合及其相互制约关系,而决策表考虑了多种条件的组合情况。决策表又称为判定表,分析多种逻辑条件(if-else、switch-case等)与执行动之间的关系。

-

决策表由4部分组成:

-
    -
  1. 条件桩:列出了问题的所有条件,通常认为列出的条件次序无关紧要。
  2. -
  3. 动作桩:列出了问题规定可能采取的操作,这些操作的排列顺序没有约束。
  4. -
  5. 条件项:列出针对条件桩的取值,在所有可能情况下的真假值。
  6. -
  7. 动作项:列出在条件项的各种取值情况下应该采取的动作。
  8. -
-

规则:任何条件组合的特定取值及其相应要执行的操作。在决策表中贯穿条件项和动作项的列就是规则。显然,决策表中列出多少条件取值,也就有多少规则,条件项和动作项就有多少列。

-

决策表组成

-

所有条件都是逻辑结果(即真/假、是/否、0/1)的决策表称为有限条件决策表。如果条件有多个值,则对应的决策表叫做扩展条目决策表。决策表设计测试用例,条件解释为输入,动作解释为输出。

-

决策表适合以下特征的应用程序:

-
    -
  1. if-then-else分支逻辑突出。
  2. -
  3. 输入变量之间存在逻辑关系。
  4. -
  5. 涉及输入变量子集的计算。
  6. -
  7. 输入和输出之间存在因果关系。
  8. -
  9. 很高的圈复杂度。
  10. -
-

3.4.1 应用举例

-

决策表(判定表)设计测试用例的具体步骤如下:

-
    -
  1. 确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2种规则。
  2. -
  3. 列出所有的条件桩和动作桩。
  4. -
  5. 填入条件项。
  6. -
  7. 填入动作项,得到初始判定表。
  8. -
  9. 简化,合并相似规则(相同动作)。 -简化就是合并多条具有相同的动作的规则,并且其条件项之间存在极为相似的关系。 -简化规则
  10. -
-

需求:输入三边值,判定是哪种三角形:非三角形、不等边三角形、等腰三角形、等边三角形

-
    -
  1. 绘制初始三角形判定决策表
  2. -
  3. 优化1的产出
  4. -
  5. 设计测试用例
  6. -
-

条件桩:

-
    -
  • abc能构成三角形 -
      -
    • a+b>c
    • -
    • a+c>b
    • -
    • b+c>a
    • -
    -
  • -
  • a=b?
  • -
  • a=c?
  • -
  • b=c?
  • -
-

动作桩:

-
    -
  • 非三角形
  • -
  • 不等边三角形
  • -
  • 等腰三角形
  • -
  • 等边三角形
  • -
-

决策表:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
12345678
a+b>c?NYYYYYYY
a+c>b?NYYYYYY
b+c>a?NYYYYY
a=b?YYNNN
a=c?YNYNN
b=c?YN
非三角形
不等边三角形
等腰三角形
等边三角形
-

测试用例:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
用例IDabc预期输出
TC1124非三角形
TC2142非三角形
TC3421非三角形
TC4333等边三角形
TC5334等腰三角形
TC6343等腰三角形
TC7433等腰三角形
TC8345不等边三角形
-

3.4.2 优点和缺点

-

决策表把复杂问题的各种可能情况一一列出,易于理解。但是,决策表不能表达重复执行动作的缺点。

-

使用判定表设计测试用例的条件如下:

-
    -
  1. 规格说明以判定表形式给出,或很容易转换成判定表。
  2. -
  3. 条件的排列顺序不会也不影响执行哪些操作。
  4. -
  5. 规则的排列顺序不会也不影响执行哪些操作。
  6. -
  7. 每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。
  8. -
  9. 如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。
  10. -
-

这5个必要条件使得操作的执行完全依赖于条件的组合。对于不满足条件的判定表,可增加其他的测试用例。

-

3.5 因果图

-

前面我们介绍的等价类划分法和边界值分析法都没有考虑到输入情况的组合。这样虽然各种输入条件可能出错的情况已经看到了,但是多个输入情况组合起来可能出错的情况却被忽视了

-
-

地铁自动充值机充值

-

假设自动充值机每次只能投入面值50或者面值100的人民币,投入钱后会有充值50和充值100两个选项

-
-

等价类划分法和边界值分析法可能不会测试到投入面值50的人民币,然后点击充值100这种异常情况;因此,当程序的输入条件有多个的话,就需要用到因果图法来设计测试用例了。

-

因果图利用图解法分析输入的各种组合情况,适合描述多种输入条件的组合、相应产生多不动作的方法。因果图法最终生成的是判定表。

-

3.5.1 基本术语

-
    -
  1. 原因结果图: -原因——结果图使用了简单的逻辑符号,以直线连接左右结点,左结点表示输入状态(原因),右结点表示输出状态(结果)。
  2. -
-

原因 - 结果图

-
    -
  • “恒等”:若原因出现,则结果出现;若原因不出现,则结果不出现。
  • -
  • “非”:若原因出现,则结果不出现;若原因不出现,则结果出现。
  • -
  • “或”:若几个原因中有一个出现,则结果出现;若几个原因都不出现,则结果不出现。
  • -
  • “与”:若几个原因都出现,结果才出现;若其中有一个原因不出现,则结果不出现。
  • -
-
    -
  1. 约束图: -输入输出状态相互之间存在的某些依赖关系,称为约束。
  2. -
-

约束图

-
    -
  • E(互斥):原因不会同时成立,最多1个成立,可以都不成立
  • -
  • I(包含):原因中至少一个成立,不能同时为0
  • -
  • O(唯一):原因中有且只有一个成立
  • -
  • R(要求):原因中a出现,b必须出现,a=1则b=1,a=0的话,b随便。QQ登录的例子a为自动登录,b是记住密码
  • -
  • M(屏蔽):a为1时,b必须是0,a=1,则b=0,如果a=0,b随便
  • -
-

3.5.2 设计因果图测试用例步骤

-
    -
  1. 分析软件规格说明,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),给每个原因和结果赋予标识符。
  2. -
  3. 分析原因与结果之间、原因与原因之间对应的逻辑关系,用因果图表示。
  4. -
  5. 由于语法或环境限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现,在因果图上用一些记号表明这些特殊情况的约束或限制条件,把因果图转换为判定表。
  6. -
  7. 从判定表的每一列产生出测试用例。
  8. -
-

对于逻辑结构复杂软件,先用因果图进行图形分析,再用判定表进行统计,最后设计测试用例。当然,对于比较简单的测试对象,可以忽略因果图,直接使用决策表。

-

3.5.3 应用举例

-

需求:第一列字符必须是A或者B,第二列为数字,才允许进行文件修改。如果第一列字符不正确,输出提示L,第二列不是数字,输出提示M,采用因果图设计测试用例

-

原因:

-
    -
  1. 第一列是A
  2. -
  3. 第一列是B
  4. -
  5. 第二列是数字
  6. -
-

结果:

-
    -
  1. 修改文件
  2. -
  3. 输出提示L
  4. -
  5. 输出提示M
  6. -
-

因果图: -因果图

-

决策表:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
123456
A110000
B001100
数字101010
修改文件101000
提示L000011
提示M010101
-

测试用例:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
用例ID第一列第二列预期输出
TC1A1修改文件
TC2AC、汉、#提示M
TC3B2修改文件
TC4BD、字、!提示M
TC5E、符、%3提示L
TC6F、特、@G、殊、*提示L和M
-

3.5.4 优点和缺点

-

优点:

-
    -
  1. 考虑多个输入之间的相互组合、相互制约的关系
  2. -
  3. 指出需求规格说明书中存在的不完整性和二义性
  4. -
  5. 帮助测试人员按照一定的步骤高效的开发测试用例
  6. -
-

缺点:

-
    -
  1. 作为输入条件的原因和输出结果之间的因果关系,很难从规格说明书得到
  2. -
  3. 此方法得到的用例数量规模大
  4. -
-

3.6 场景法

-

通过尝尽该描述的业务流程(业务逻辑),设计用例来遍历场景(路径),验证系统功能的正确性。 -场景法重点是测试流程,因此每个流程用一个用例验证即可,流程测试没问题不代表系统功能没问题,还需要单步进行测试,结合前面的方法。

-

流程图:

-
    -
  • 矩形:步骤
  • -
  • 菱形:判断条件
  • -
  • 箭头:流向
  • -
-

3.6.1 ATM取款流程图

-

ATM取款流程图

-

3.6.2 ATM取款场景设计

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
场景编号流程结果
1插入合法的卡
输入正确的密码
ATM有现金
输入正确的金额
余额充足
ATM现金充足
成功提款
2插入不合法的卡提示错误,退卡
3插入合法的卡
输入密码点取消
退卡
4插入合法的卡
输入错误的密码(还有机会)
提示错误,重新输入
5插入合法的卡
输入错误的密码(超出限制次数)
提示错误,退卡/吞卡
6插入合法的卡
输入正确的密码
ATM没有现金
提款选项不可用,退出
7插入合法的卡
输入正确的密码
ATM有现金
输入不合法的金额
提示错误,重新输入
8插入合法的卡
输入正确的密码
ATM有现金
输入正确的金额
余额不足
提示错误,重新输入
9插入合法的卡
输入正确的密码
ATM有现金
输入正确的金额
余额充足
ATM现金不足
提示错误,重新输入
-

3.6.3 测试用例

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
用例ID场景/条件卡片密码ATM内金额账户余额输入金额预期结果
TC1场景1:成功提款合法卡1234562000.005000.00100成功提款,账户余额400.00
TC2场景2:非法的卡非法卡n/a2000.005000.00n/a提示错误,退卡
TC3场景3:点取消合法卡n/a2000.005000.00n/a退卡
TC4场景4:密码错误(还有机会)合法卡6543212000.005000.00n/a提示错误,重新输入
TC5场景5:密码错误(超过限制次数)合法卡2345162000.005000.00n/a提示错误,退卡/吞卡
TC6场景6:ATM无现金合法卡1234560.005000.00n/a提款选项不可用,用例结束
TC7场景7:金额错误合法卡1234562000.005000.0020提示错误,重新输入
TC8场景8:卡内余额不足合法卡1234562000.005000.00600提示错误,重新输入
TC9场景9:ATM现金不足合法卡1234562000.005000.002500提示错误,重新输入
-

3.7 错误推测法

-

3.7.1 概念

-

错误推测法是利用经验和直觉推测出出错的可能类型,列举出程序中所有可能的错误和容易发生错误情况的清单,根据清单设计测试用例。所谓凭经验,是指人们对过去所作测试结果的分析,对所揭示缺陷的规律性直觉的推测来发现缺陷。

-

该方法强调的是对被测试软件的需求理解以及设计实现的细节把握,当然还有个人的能力。那么显而易见地,这个方法的缺点就是太过依赖个人能力,难以系统化。因此,这个方法一般是作为测试用例设计的补充,而不是单独用来设计测试用例。在回归测试中应用较多。

-

错误推测法一般采用如下技术:

-
    -
  1. 有关软件设计方法和实现技术。
  2. -
  3. 有关前期测试阶段结果的知识。
  4. -
  5. 测试类似或相关系统的经验,了解以前这些系统曾在哪些地方出现缺陷。
  6. -
  7. 典型的产生错误的知识,如被零除错误。
  8. -
-

3.7.2 优点和缺点

-

优点:

-
    -
  1. 不用设计等价类的测试用例,将多个等价类的测试合成一个随机测试,可以以较少代码实现测试代码的编写。
  2. -
  3. 当等价类设计不确切或不完全时,测试会产生遗漏,而使用错误推测法则是按照概率进行等价类覆盖。不论存在多少个等价类,只要随机数据个数足够,就能保证各个等价类被覆盖的概率足够高,能够有效弥补等价类分法设计不充分的缺陷。
  4. -
  5. 采用错误推测法进行测试,每次执行测试时,测试的样本数据可能都不相同,执行次数愈多,错误暴露的概率愈大。
  6. -
-

缺点:

-
    -
  1. 错误推测法中的随机数据很难覆盖到边界值,无法保证测试的充分性。
  2. -
  3. 错误推测法进行自动化测试的难度较大。有些程序很难用程序来自动验证,这使得程序结果的验证工作难度变大。
  4. -
  5. 当等价类的范围较小,这些范围较小的等价类被覆盖的概率也是很小的,错误推测法难以测试到。
  6. -
  7. 随机测试不可以代替常规的功能或非功能测试,因为其随意性大,没有一套完整严格的方法且并非有章可循的测试技术。
  8. -
-

3.7.3 常见错误

-
    -
  1. 页面规范相关部分(跟公司甚至项目需求有关系)
  2. -
-
    -
  • 命名、注释、字体、颜色、缩进等
  • -
  • 文本框长度/范围限制
  • -
  • 支持的浏览器、操作系统、jdk等做兼容性测试
  • -
-
    -
  1. 常识性问题
  2. -
-
    -
  • 密码用密文
  • -
  • 手机号码是11位,且是特定三位数开头
  • -
  • 文本框自动忽略前后空格
  • -
  • 支持模糊查询
  • -
-
    -
  1. 常见的异常测试情况
  2. -
-
    -
  • 输入框不输入任何内容(为空)或者输入空格的情况
  • -
  • 输入框输入非法字符
  • -
  • 用户注销后,是否仍然能操作;再登录是否能成功
  • -
  • 断电重连后是否能继续使用且信息未丢失
  • -
-
    -
  1. 功能相关的常见异常问题
  2. -
-
    -
  • C++软件的内存泄漏、内存分配
  • -
  • web程序的session失效问题
  • -
  • JavaScript字符转义
  • -
-

3.8 综合策略

-

黑盒测试方法有等价类划分、边界值分析、决策表、因果图、场景法、错误推测法等,每种测试方法都有其各自的特点和适用场合。
-软件测试专家Myers给出了黑盒测试方法中各种测试方法的使用策略:

-
    -
  1. 在任何情况下都必须使用边界值分析方法。经验表明,用这种方法设计的测试用例发现程序错误的能力最强。
  2. -
  3. 必要时使用等价类划分方法补充一些测试用例。
  4. -
  5. 用错误推测法再追加一些测试用例。
  6. -
  7. 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例。
  8. -
  9. 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。
  10. -
-

对于功能性测试技术,可以根据如下条件进行选择:

-
    -
  1. 如果变量是独立的,则可以用定义域测试和等价类测试。
  2. -
  3. 如果变量不是独立的,可采用决策表测试。
  4. -
  5. 如果为单缺陷假设,则可采用边界值分析和健壮性测试。
  6. -
  7. 如果为多缺陷假设,可采用最坏情况测试、健壮最坏情况测试和决策表测试。
  8. -
  9. 如果程序包含大量例外处理,可采用健壮性测试和决策表测试。
  10. -
  11. 如果变量引用的是逻辑量,可采用等价类测试用例和决策表测试。
  12. -
-

第4章 白盒测试

-

4.1 概述

-

4.2 静态测试

-

4.3 逻辑覆盖

-

4.4 路径分析

-

4.5 控制结构测试

-

4.6 数据流测试

-

4.7 程序插桩

-

4.8 测试方法综述

-

4.9 知识点总结

-

第5章 性能测试

-

5.1 基本概念

-

5.2 性能测试分类

-

5.2.1 负载测试

-

5.2.2 压力测试

-

5.2.3 可靠性测试

-

5.2.4 数据库测试

-

5.2.5 安全性测试

-

5.2.6 兼容性测试

-

5.2.7 可用性测试

-

5.3 性能测试步骤

-

5.4 Web测试

-

5.5知识点总结

-

第6章 软件测试流程

-

6.1 软件测试流程概述

-

6.2 测试需求

-

6.3 测试计划

-

6.4 测试设计

-

6.5 测试执行

-

6.5.1 单元测试

-

6.5.2 集成测试

-

6.5.3 系统测试

-

6.5.4 验收测试

-

6.5.5 α测试

-

6.5.6 β测试

-

6.6 回归测试

-

6.7 测试评估

-

6.8 知识点总结

-

第7章 软件测试自动化

-

7.1 自动化测试和手工测试

-

7.2 测试成熟度模型

-

7.3 自动化测试体系

-

7.4 测试工具介绍

-

7.5 知识点总结

-

第8章 软件测试管理

-

8.1 软件测试管理概述

-

8.2 测试过程改进

-

8.3 人力资源

-

8.4 知识点总结

- - - -- Gitee From 93c6bcc6a6fdaea1b79c1cad6818de9d2e3ffe47 Mon Sep 17 00:00:00 2001 From: Future100 Date: Wed, 15 Sep 2021 00:14:23 +0800 Subject: [PATCH 10/63] =?UTF-8?q?19990124=E9=AD=8F=E6=9D=A5=E4=BF=AE?= =?UTF-8?q?=E6=94=B9README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 149 ++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 112 insertions(+), 37 deletions(-) diff --git a/README.md b/README.md index dbaae73..7e1c2f1 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,14 @@ + + # 软件测试 + ## 写在最前面 ### 1 课程目标 * 掌握基础的软件测试理论、测试方法和策略 * 掌握常用工具使用 * 根据需求和设计文档独立编写测试计划、测试方案、测试用例以及测试报告 ### 2 主要内容 +* 软件测试概论 * 软件测试基础知识 * 软件测试通用技术 * 软件测试流程 @@ -68,7 +72,7 @@ * 《软件支持手册》 #### 1.1.3 软件发展史 -1. 程序设计阶段:个体化生产、专用软件、规模小、功能单一、开发者即使用者。(软件 = 程序) +1. 程序设计阶段:个体化生产、专用软件、规模小、功能单一、开发者即使用者。(软件 ≠ 程序) 2. 程序系统阶段:多用户人机交互,实时系统和数据库管理系统。 3. 软件工程阶段:以软件的产品化、系列化、工程化和标准化为特征的软件产业发展起来,软件开发有了可以遵循的软件工程化的设计准则、方法和标准。 4. 多层分布结构,面向服务架构 @@ -85,26 +89,41 @@ ### 1.2 软件生命周期 #### 1.2.1 需求定义 **描述:** 定义出本次任务都需要做什么,做成什么样子。 + **参与者:** 产品经理、需求分析师、客户 + #### 1.2.2 可行性分析 **描述:** 由项目组相关成员去研究需求是否可行,能不能做出来。 + **参与者:** 产品经理、架构师、项目经理、开发 + #### 1.2.3 需求分析 **描述:** 需求分析其实是在做需求细化,按照任务说明书中的任务内容和指标具体细化各个点,细化到每个输入框、每个按钮的样式,输入输出等各项值。 + **参与者:** 产品经理、架构师、项目经理、测试/质量管理员(很多公司把这个统称为QA)、开发 + **输出:**《需求规格说明书》 + #### 1.2.4 评审 **描述:** 评审就是做审查,对这个阶段的工作进行审查,看是否偏离或者有遗漏(比如:设计和工厂的各个环节都有相关的审查,审查材料是否合格、设计是否符合规定、按照工人/设计出的材料需求是否足够或者多余等等,这些审查都是评审);评审一般由相应工作人员来参与。 + **参与者:** 每个阶段的评审一般都是各职能部门内部审核,也可以申请其他相关人员审核,比如需求评审,一般是产品经理、项目经理、测试、开发一起评审;系统设计一般是项目经理、开发评审;测试策略评审一般是测试组内部评审等等 + #### 1.2.5 设计 **描述:** 架构师根据需求确定产品或者项目的场景、特点,选择合适的框架,技术使项目实现最优化。在此基础上将系统进行概要设计,包括系统总体数据结构、数据库结构、模块结构以及它们之间的关系等。开发人员根据概要设计对具体模块进行详细设计,包括接口、参数等。此处设计会形成概要设计文档和详细设计文档。 + **参与者:** 项目经理、架构师、开发、测试 + #### 1.2.6 编码 **描述:** 开发人员根据详细设计文档对系统进行模块化开发,在确定参数和接口的情况下,根据需求对模块内部进行方法级别的设计和编码以及自测,对产品功能进行一一实现。 + **参与者:** 开发 + #### 1.2.7 提测 **描述:** 开发人员完成一个小迭代/小功能,且完成自测(开发编码完成后,一般都会自己检测下),于是向测试部门发起提测,一般以邮件方式或者任务管理工具的任务流方式向测试部门通知xxx模块/功能可以测试。 + **参与者:** 任务责任人(开发)、测试 + #### 1.2.8 测试 - 测试需求 - 测试计划 @@ -113,10 +132,15 @@ - 回归测试 - 测试评估 #### 1.2.9 部署/发版 + **描述:** 经过前面的各个阶段,产品已经可以出售或者面向大众了。配置管理人员进行封版、版本制作(针对产品来说)/部署上线(针对项目应用来说)。 + **参与人:** 配置管理人员、测试 -10. 支持维护 + +#### 1.2.10 支持维护 + **描述:** 支持维护类似于我们日常中的售后,主要是对已卖出的产品/已上线的项目进行日常维护。包括纠错性维护和改进性维护两个方面。 + **参与人:** 支持维护人员/售后工程师 ### 1.3 软件测试概述 @@ -126,11 +150,16 @@ IEEE:使用人工或自动手段来运行或测定某个软件系统的过程, #### 1.3.2 测试发展历程 1. 1957年之前-调试为主(Debugging Oriented) -软件规模小,复杂度低,开发人员承担需求分析、设计、开发、测试等所有工作,等同于调试。 + + 软件规模小,复杂度低,开发人员承担需求分析、设计、开发、测试等所有工作,等同于调试。 + 2. 1957–1978-证明为主(Demonstration Oriented) -与调试区分开,这是软件测试史上一个重要的里程碑,主要目是确认软件是满足需求的。 + + 与调试区分开,这是软件测试史上一个重要的里程碑,主要目是确认软件是满足需求的。 + 3. 1979–1982-破坏为主(Destruction Oriented) -1979年,《软件测试的艺术》 (The Art of Software Testing)第一版问世,这本书是测试界的经典之作。书中给出了软件测试的经典定义: + + 1979年,《软件测试的艺术》 (The Art of Software Testing)第一版问世,这本书是测试界的经典之作。书中给出了软件测试的经典定义: ``` The process of executing a program with the intent of finding errors. @@ -140,51 +169,74 @@ The process of executing a program with the intent of finding errors. 这个观点较之前证明为主的思路,是一个很大的进步。我们不仅要证明软件做了该做的事情,也要保证它没做不该做的事情,这会使测试更加全面,更容易发现问题。 4. 1983–1987-评估为主(Evaluation Oriented) -软件行业进入了大发展时期,软件趋向大型化、复杂化,质量越来越重要。软件测试的基础理论和实用技术开始形成。提出了在软件生命周期中使用分析、评审、测试来评估产品的理论。 + + 软件行业进入了大发展时期,软件趋向大型化、复杂化,质量越来越重要。软件测试的基础理论和实用技术开始形成。提出了在软件生命周期中使用分析、评审、测试来评估产品的理论。 + 5. 1988–至今-预防为主(Prevention Oriented) -尽量早的介入并发现这些明显的或隐藏的bug,发现得越早,修复起来的成本越低,产生的风险也越小。 + + 尽量早的介入并发现这些明显的或隐藏的bug,发现得越早,修复起来的成本越低,产生的风险也越小。 #### 1.3.3 测试与开发的关系 **瀑布模型** + ![瀑布模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/pb-model.png) 这是一种经典模型,提供了软件开发的基本框架。 + 强调开发工作(计划、设计、开发、测试、维护等)各阶段之间的先后顺序,不可以并行操作。 -瀑布模型认为,测试是指代码完成后,处于运行维护阶段之前。如果需求和设计上存在缺陷,就会造成大量返工,增加成本。为了更早的发现问题,测试应延伸到需求评审,设计审查活动中,软件生命周期的每个阶段都应包含测试。 + +瀑布模型认为,测试是指代码完成后,处于运行维护阶段之前。如果需求和设计上存在缺陷,就会造成大量返工,增加成本。 + +为了更早的发现问题,测试应延伸需求评审,设计审查活动中,软件生命周期的每个阶段都应包含测试。 + **优点:** + 1. 各阶段划分清晰 2. 强调计划与需求分析 3. 适合需求稳定的产品开发 **缺点:** + 1. 单一流程,不可逆 2. 风险显露得晚,纠正机会少 3. 测试只是其中一个阶段,缺乏全过程测试思想 **V模型** + ![V模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/v-model.png) 强调将测试和开发同等重要,对于开发阶段都有与之对应的测试阶段。 + **优点:** + 相对于瀑布模型,V模型测试能够尽早的进入到开发阶段。 + **缺点:** + 虽然测试尽早的进入到开发阶段,但是真正进行软件测试是在编码之后,这样忽视了测试对需求分析、系统设计的验证,时间效率上也大打折扣。 **W模型(双V模型)** + ![W模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/w-model.png) 明确表示出了测试与开发的并行关系 + **优点:** + W 模型相对于 V 模型来说,测试更早的进入到开发阶段,与开发阶段是并行关系,更早的发现问题,能够及时解决问题,各个阶段分工明确,方便管理。 + **缺点:** + W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方便。 **螺旋模型** + ![螺旋模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/lx-model.png) 大型软件项目通常有很多不确定性和风险,如果采用瀑布式线性过程模型,失败风险很大,因此需要采取一种渐进式的演化过程模型。将产品分解成增量版本,每个版本单独测试。 **敏捷模型** + ![敏捷模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/mj-model.png) 敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。专注于交付对客户有价值的软件(可以工作的)。 @@ -210,19 +262,25 @@ W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方 **解读:** * 个体和互动高于流程和工具 -以人为本,没有比面对面交流更高效的沟通渠道了,基于互相信任的前提,敏捷提倡自治的全功能团队。 -在工作形式上,整个团队平时坐在一起工作,从物理空间上创造了更加便捷面对面的沟通机会。在团队职责上,团队内部具备完成软件交付的角色(能力),团队所有人对软件的质量负责,开发过程由团队内部把控,业务价值团队内部快速流动,在任何环节都能及时获得反馈。同时,每个角色都更容易从全局视角去思考软件,避免了传统部门墙模式下的视角割裂和协作障碍。 + + 以人为本,没有比面对面交流更高效的沟通渠道了,基于互相信任的前提,敏捷提倡自治的全功能团队。 + + 在工作形式上,整个团队平时坐在一起工作,从物理空间上创造了更加便捷面对面的沟通机会。在团队职责上,团队内部具备完成软件交付的角色(能力),团队所有人对软件的质量负责,开发过程由团队内部把控,业务价值团队内部快速流动,在任何环节都能及时获得反馈。同时,每个角色都更容易从全局视角去思考软件,避免了传统部门墙模式下的视角割裂和协作障碍。 * 工作的软件高于详尽的文档 -为客户交付可工作的软件是我们的核心目标,我们应该尽早交付可进行端到端测试的代码,该目标决定了我们不应该花过多精力在面面俱到的文档上,但这不代表我们要抵制任何文档。实践证明,轻量级的文档策略有助于团队高质量交付可工作的软件。 + + 为客户交付可工作的软件是我们的核心目标,我们应该尽早交付可进行端到端测试的代码,该目标决定了我们不应该花过多精力在面面俱到的文档上,但这不代表我们要抵制任何文档。实践证明,轻量级的文档策略有助于团队高质量交付可工作的软件。 * 客户合作高于合同谈判 -主动拥抱变化,及时响应,持续交付。 + + 主动拥抱变化,及时响应,持续交付。 * 响应变化高于遵循计划 -通过高效的协作,获取快速的反馈,从而尽早做出调整,减少浪费 + + 通过高效的协作,获取快速的反馈,从而尽早做出调整,减少浪费 **缺点:** + 由于其项目周期很长,所以很难保证开发的人员不更换,而缺少文档就会造成在交接的过程中出现很大的困难。 ![敏捷开发流程](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/mj-process.png) @@ -264,6 +322,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 #### 1.4.5 缺陷级别 **严重性:** 表示软件缺陷的恶劣程度,当用户碰到该缺陷时影响的可能性和程度。 + **优先级:** 表示修复缺陷的重要程度和紧迫程度。 ##### 严重性 @@ -273,7 +332,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 | S2 | 严重缺陷 | 系统出现重大问题,影响提供的主要功能使用 | 内存泄露
数据无法保存 | | S3 | 主要错误 | 主要功能实现有问题,易用性不够好 | 某个非核心功能全部或者部分未实现、实现后流程走不通、实现的功能与需求不同、文本框未校验或者校验不全、提示不全(异常提示不合理或者没提示)、手册相关内容缺失、兼容问题、安装界面乱码 | | S4 | 次要错误 | 次要功能实现有问题或者手册相关问题 | 个别不常用的属性不生效或实现有问题(前提:不影响主要功能使用)
次要功能实现与需求不符或实现有问题(如:日志不能轮转、预警策略不生效、搜索框不能用、快照生成格式有问题等)
错别字
手册描述不合理或样式格式有问题 | -| S5 | 轻微缺陷 | 建议,不属于缺陷 | +| S5 | 轻微缺陷 | 建议,不属于缺陷 || ##### 优先级 @@ -327,7 +386,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 6. bug描述:bug的产生环境、详细步骤、期望结果、实际结果。 7. 附件:包括但不仅限于截图、日志、录像、所用到的示例文件以及应用;同样是方便复现解决缺陷的。 -以上是上报bug、创建bug必须的,在后续我们还会对bug进行修复、复测等工作,那在为了记录后续工作,bug还应该包含: +以上是上报bug、创建bug必须要做的,在后续我们还会对bug进行修复、复测等工作,那在为了记录后续工作,bug还应该包含: 1. bug状态:开始、修复中、修复完成、提测、测试中、测试通过/失败、关闭等,后续bug周期中会讲到。 2. bug修订人:bug修订人员。 @@ -337,9 +396,9 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 6. bug备注:备注,以便记录一些额外信息。 #### 1.4.8 缺陷预防 -差错:人在理解和解决问题的思维和行为过程中出现的问题,沟通不当,理解错误。(产生根源) -错误:软件内部问题,设计错误、编码错误。(内部原因) -失效:软件系统运行时偏离了用户需求。(外部表现) +**差错**:人在理解和解决问题的思维和行为过程中出现的问题,沟通不当,理解错误。(产生根源) +**错误**:软件内部问题,设计错误、编码错误。(内部原因) +**失效**:软件系统运行时偏离了用户需求。(外部表现) ### 1.5 软件测试行业 #### 1.5.1 行业现状 @@ -399,7 +458,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 6. 发散思维方式 ### 1.6 测试认识的误区 -1. 使用了测试工具,就进行了有效的测试 +1. 使用了测试工具,就是进行了有效的测试 2. 存在太多无法测试的东西 3. 软件开发完成后才进行测试 4. 软件发布后发现质量问题,是测试人员的问题 @@ -420,15 +479,24 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 ## 第2章 软件测试基础知识 ### 2.1 概述 1. 从软件测试的目的来理解 -软件的目的是发现软件中的错误,是为了证明软件有错,而不是无错。是在软件投入运行前,对软件需求分析、设计和编码各个阶段产品的最终检查,是为了保证软件开发产品的正确性、完整性和一致性。 + + 软件的目的是发现软件中的错误,是为了证明软件有错,而不是无错。是在软件投入运行前,对软件需求分析、设计和编码各个阶段产品的最终检查,是为了保证软件开发产品的正确性、完整性和一致性。 + 2. 从软件测试的性质来理解 -在软件开发过程中,分析、设计和编码都是“建设性的”,唯有测试是“破坏性的”。 + + 在软件开发过程中,分析、设计和编码都是“建设性的”,唯有测试是“破坏性的”。 + 3. 从软件开发角度来理解 -软件测试以检查产品的内容和功能特性为核心,是软件质量保证的关键步骤,也是成功实现软件开发目标的重要保障。 + + 软件测试以检查产品的内容和功能特性为核心,是软件质量保证的关键步骤,也是成功实现软件开发目标的重要保障。 + 4. 从软件工程角度来理解 -软件测试是软件工程的一部分,是软件工程过程中的重要阶段。 + + 软件测试是软件工程的一部分,是软件工程过程中的重要阶段。 + 5. 从软件质量保证角度来理解 -软件测试是软件质量保证的重要措施。 + + 软件测试是软件质量保证的重要措施。 ### 2.2 测试的目的和原则 #### 2.2.1 测试的目的 @@ -619,7 +687,9 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 5. 无效等价类4:空字符 **等价类最终必须是分割到最小单位,只有这样才能保障测试覆盖全面。** + 非数字字符可以是包含英文字符、中文、特殊符号的字符串或者字符,所以其实它又可以分为三个无效等价类,分别是: + 1. 无效等价类:包含英文字符的字符串,比如:a、a123、a=、b你a; 2. 无效等价类:包含中文的字符串,比如:你、你12、1你2、你=; 3. 无效等价类:包含特殊字符的字符串,比如:\ 。 @@ -666,7 +736,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 | 位置 | 上下左右里面一点
外面一点 | 按钮,四边内四点,外四点 | #### 3.3.4 局限性 - 如果被测程序是多个独立变量的函数,这些变量受物理量的限制,则较适合采用边界值分析。这里的关键是 **“独立”的“物理量”** 。例如,Date是3个变量(年、月、日)的函数,对其采用边界分析测试用例,就会发现测试用例是不充分的,例如,没强调2月和闰年。其存在问题是因为没有考虑月份、日期和年变量之间存在的依赖关系。由于边界值分析假设变量是完全独立的,因此边界值分析测试用例是对物理量的边界独立导出变量极值,不考虑函数的性质,也不考虑变量的语义含义。 +如果被测程序是多个独立变量的函数,这些变量受物理量的限制,则较适合采用边界值分析。这里的关键是 **“独立”的“物理量”** 。例如,Date是3个变量(年、月、日)的函数,对其采用边界分析测试用例,就会发现测试用例是不充分的,例如,没强调2月和闰年。其存在问题是因为没有考虑月份、日期和年变量之间存在的依赖关系。由于边界值分析假设变量是完全独立的,因此边界值分析测试用例是对物理量的边界独立导出变量极值,不考虑函数的性质,也不考虑变量的语义含义。 边界值分析对布尔变量和逻辑变量没有多大意义。例如,布尔变量的极值是true和false,但是其余3个值不明确。 ### 3.4 决策表 @@ -835,7 +905,9 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 | TC5 | E、符、% | 3 | 提示L | | TC6 | F、特、@ | G、殊、* | 提示L和M | #### 3.5.4 优点和缺点 -优点: + +优点: + 1. 考虑多个输入之间的相互组合、相互制约的关系 2. 指出需求规格说明书中存在的不完整性和二义性 3. 帮助测试人员按照一定的步骤高效的开发测试用例 @@ -867,20 +939,23 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 | 7 | 插入合法的卡
输入正确的密码
ATM有现金
输入不合法的金额 | 提示错误,重新输入 | | 8 | 插入合法的卡
输入正确的密码
ATM有现金
输入正确的金额
余额不足 | 提示错误,重新输入 | | 9 | 插入合法的卡
输入正确的密码
ATM有现金
输入正确的金额
余额充足
ATM现金不足 | 提示错误,重新输入 | + #### 3.6.3 测试用例 -| 用例ID | 场景/条件 | 卡片 | 密码 | ATM内金额 | 账户余额 | 输入金额 | 预期结果 | -| :----: | ------------------------------- | ------ | ------ | --------: | -------: | -------: | ------------------------ | -| TC1 | 场景1:成功提款 | 合法卡 | 123456 | 2000.00 | 5000.00 | 100 | 成功提款,账户余额400.00 | -| TC2 | 场景2:非法的卡 | 非法卡 | n/a | 2000.00 | 5000.00 | n/a | 提示错误,退卡 | -| TC3 | 场景3:点取消 | 合法卡 | n/a | 2000.00 | 5000.00 | n/a | 退卡 | -| TC4 | 场景4:密码错误(还有机会) | 合法卡 | 654321 | 2000.00 | 5000.00 | n/a | 提示错误,重新输入 | -| TC5 | 场景5:密码错误(超过限制次数) | 合法卡 | 234516 | 2000.00 | 5000.00 | n/a | 提示错误,退卡/吞卡 | -| TC6 | 场景6:ATM无现金 | 合法卡 | 123456 | 0.00 | 5000.00 | n/a | 提款选项不可用,用例结束 | -| TC7 | 场景7:金额错误 | 合法卡 | 123456 | 2000.00 | 5000.00 | 20 | 提示错误,重新输入 | -| TC8 | 场景8:卡内余额不足 | 合法卡 | 123456 | 2000.00 | 5000.00 | 600 | 提示错误,重新输入 | -| TC9 | 场景9:ATM现金不足 | 合法卡 | 123456 | 2000.00 | 5000.00 | 2500 | 提示错误,重新输入 | + +| 用例ID | 场景/条件 | 卡片 | +| :----: | ------------------------------- | ------ | +| TC1 | 场景1:成功提款 | 合法卡 | +| TC2 | 场景2:非法的卡 | 非法卡 | +| TC3 | 场景3:点取消 | 合法卡 | +| TC4 | 场景4:密码错误(还有机会) | 合法卡 | +| TC5 | 场景5:密码错误(超过限制次数) | 合法卡 | +| TC6 | 场景6:ATM无现金 | 合法卡 | +| TC7 | 场景7:金额错误 | 合法卡 | +| TC8 | 场景8:卡内余额不足 | 合法卡 | +| TC9 | 场景9:ATM现金不足 | 合法卡 | ### 3.7 错误推测法 + #### 3.7.1 概念 错误推测法是利用经验和直觉推测出出错的可能类型,列举出程序中所有可能的错误和容易发生错误情况的清单,根据清单设计测试用例。所谓凭经验,是指人们对过去所作测试结果的分析,对所揭示缺陷的规律性直觉的推测来发现缺陷。 -- Gitee From 635bfdd9a6ab60535b2c08a04f898368dd39fe0a Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Thu, 16 Sep 2021 12:15:38 +0800 Subject: [PATCH 11/63] =?UTF-8?q?=E6=89=8B=E5=B7=A5merge=E9=AD=8F=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index 7e1c2f1..35f64ef 100644 --- a/README.md +++ b/README.md @@ -72,7 +72,7 @@ * 《软件支持手册》 #### 1.1.3 软件发展史 -1. 程序设计阶段:个体化生产、专用软件、规模小、功能单一、开发者即使用者。(软件 ≠ 程序) +1. 程序设计阶段:个体化生产、专用软件、规模小、功能单一、开发者即使用者。(软件 = 程序) 2. 程序系统阶段:多用户人机交互,实时系统和数据库管理系统。 3. 软件工程阶段:以软件的产品化、系列化、工程化和标准化为特征的软件产业发展起来,软件开发有了可以遵循的软件工程化的设计准则、方法和标准。 4. 多层分布结构,面向服务架构 @@ -317,7 +317,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 | 用户界面 | 未按照原型设计,影响交互,如:显示格式,按钮位置 | | 文档 | 文档内容不完整或不正确,影响发布和维护 | | 软件包 | 由于软件配置库、变更管理或版本控制引发的错误 | - | 性能 | 执行时间长、处理速度慢、负载高等方面 | + | 性能 | 执行时间长、处理速度慢、负载高等方面 | | 接口 | 与其他模块参数不匹配 | #### 1.4.5 缺陷级别 @@ -326,13 +326,13 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 **优先级:** 表示修复缺陷的重要程度和紧迫程度。 ##### 严重性 -| 级别 | 名称 | 说明 | 示例 | -| :---: | :------: | :----------------------------------------: | ---- | -| S1 | 致命错误 | 严重阻碍开发或测试工作的进行,必须马上解决 | 安装包或App无法安装
网页不能访问
不能启动
死机
核心功能无法使用,比如QQ不能收发消息,邮箱不能收发邮件 | -| S2 | 严重缺陷 | 系统出现重大问题,影响提供的主要功能使用 | 内存泄露
数据无法保存 | -| S3 | 主要错误 | 主要功能实现有问题,易用性不够好 | 某个非核心功能全部或者部分未实现、实现后流程走不通、实现的功能与需求不同、文本框未校验或者校验不全、提示不全(异常提示不合理或者没提示)、手册相关内容缺失、兼容问题、安装界面乱码 | +| 级别 | 名称 | 说明 | 示例 | +| :---: | :------: | :----------------------------------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| S1 | 致命错误 | 严重阻碍开发或测试工作的进行,必须马上解决 | 安装包或App无法安装
网页不能访问
不能启动
死机
核心功能无法使用,比如QQ不能收发消息,邮箱不能收发邮件 | +| S2 | 严重缺陷 | 系统出现重大问题,影响提供的主要功能使用 | 内存泄露
数据无法保存 | +| S3 | 主要错误 | 主要功能实现有问题,易用性不够好 | 某个非核心功能全部或者部分未实现、实现后流程走不通、实现的功能与需求不同、文本框未校验或者校验不全、提示不全(异常提示不合理或者没提示)、手册相关内容缺失、兼容问题、安装界面乱码 | | S4 | 次要错误 | 次要功能实现有问题或者手册相关问题 | 个别不常用的属性不生效或实现有问题(前提:不影响主要功能使用)
次要功能实现与需求不符或实现有问题(如:日志不能轮转、预警策略不生效、搜索框不能用、快照生成格式有问题等)
错别字
手册描述不合理或样式格式有问题 | -| S5 | 轻微缺陷 | 建议,不属于缺陷 || +| S5 | 轻微缺陷 | 建议,不属于缺陷 | | ##### 优先级 @@ -942,17 +942,17 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 #### 3.6.3 测试用例 -| 用例ID | 场景/条件 | 卡片 | -| :----: | ------------------------------- | ------ | -| TC1 | 场景1:成功提款 | 合法卡 | -| TC2 | 场景2:非法的卡 | 非法卡 | -| TC3 | 场景3:点取消 | 合法卡 | -| TC4 | 场景4:密码错误(还有机会) | 合法卡 | -| TC5 | 场景5:密码错误(超过限制次数) | 合法卡 | -| TC6 | 场景6:ATM无现金 | 合法卡 | -| TC7 | 场景7:金额错误 | 合法卡 | -| TC8 | 场景8:卡内余额不足 | 合法卡 | -| TC9 | 场景9:ATM现金不足 | 合法卡 | +| 用例ID | 场景/条件 | 卡片 | 密码 | ATM内金额 | 账户余额 | 输入金额 | 预期结果 | +| :----: | ------------------------------- | ------ | ------ | --------: | -------: | -------: | ------------------------ | +| TC1 | 场景1:成功提款 | 合法卡 | 123456 | 2000.00 | 5000.00 | 100 | 成功提款,账户余额400.00 | +| TC2 | 场景2:非法的卡 | 非法卡 | n/a | 2000.00 | 5000.00 | n/a | 提示错误,退卡 | +| TC3 | 场景3:点取消 | 合法卡 | n/a | 2000.00 | 5000.00 | n/a | 退卡 | +| TC4 | 场景4:密码错误(还有机会) | 合法卡 | 654321 | 2000.00 | 5000.00 | n/a | 提示错误,重新输入 | +| TC5 | 场景5:密码错误(超过限制次数) | 合法卡 | 234516 | 2000.00 | 5000.00 | n/a | 提示错误,退卡/吞卡 | +| TC6 | 场景6:ATM无现金 | 合法卡 | 123456 | 0.00 | 5000.00 | n/a | 提款选项不可用,用例结束 | +| TC7 | 场景7:金额错误 | 合法卡 | 123456 | 2000.00 | 5000.00 | 20 | 提示错误,重新输入 | +| TC8 | 场景8:卡内余额不足 | 合法卡 | 123456 | 2000.00 | 5000.00 | 600 | 提示错误,重新输入 | +| TC9 | 场景9:ATM现金不足 | 合法卡 | 123456 | 2000.00 | 5000.00 | 2500 | 提示错误,重新输入 | ### 3.7 错误推测法 -- Gitee From 618f3fa7c9a9e6c2e3f5f27b461bddeade36df6d Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Thu, 16 Sep 2021 12:23:17 +0800 Subject: [PATCH 12/63] =?UTF-8?q?=E6=89=8B=E5=B7=A5=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=8D=93=E5=AD=90=E6=B4=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 35f64ef..154f986 100644 --- a/README.md +++ b/README.md @@ -577,11 +577,11 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 **术语** 1. 测试编号:测试用例的编号 2. 测试项:测试的功能点说明 -3. 前置条件:该测试用例的前提条件,比如测试wangdachui/dachui12345(用户名/密码)账户是否能正确登录进去,那前提wangdachui/dachui12345已定是注册过的 +3. 前置条件:该测试用例的前提条件,比如测试wangdachui/dachui12345(用户名/密码)账户是否能正确登录进去,那前提wangdachui/dachui12345一定是注册过的 4. 测试步骤:就是测试的所有操作步骤,最好是每一个步骤应该对应一个期望结果,最少也得一个测试用例对应一个期望结果 5. 期望结果:就是希望得到的结果(正确的结果) 6. 测试结果:实际测试的结果,可选项有:通过、不通过、暂时挂起/锁定(就是暂时不测试); -7. 对应的bug:当期望结果与实际结果不符时测试不通过,此时需要上报bug(纪录缺陷),bug需要与测试用例对应 +7. 对应的bug:当期望结果与实际结果不符时测试不通过,此时需要上报bug(记录缺陷),bug需要与测试用例对应 8. 测试执行人:实际由谁来执行测试用例;也有任务分配人的选项,就是测试用例分配给哪个测试员来测试 9. 备注:做一些备注或者测试的说明 10. 合法用户:就是已经注册过的用户 -- Gitee From e4e3b0a6d8be8f9b631820b7609044347226c49e Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Thu, 16 Sep 2021 12:30:33 +0800 Subject: [PATCH 13/63] =?UTF-8?q?=E6=89=8B=E5=B7=A5=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E7=8E=8B=E6=99=93=E6=B0=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 154f986..cc26bc3 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ ## 写在最前面 ### 1 课程目标 * 掌握基础的软件测试理论、测试方法和策略 -* 掌握常用工具使用 +* 掌握常用工具的使用方法 * 根据需求和设计文档独立编写测试计划、测试方案、测试用例以及测试报告 ### 2 主要内容 * 软件测试概论 @@ -75,7 +75,7 @@ 1. 程序设计阶段:个体化生产、专用软件、规模小、功能单一、开发者即使用者。(软件 = 程序) 2. 程序系统阶段:多用户人机交互,实时系统和数据库管理系统。 3. 软件工程阶段:以软件的产品化、系列化、工程化和标准化为特征的软件产业发展起来,软件开发有了可以遵循的软件工程化的设计准则、方法和标准。 -4. 多层分布结构,面向服务架构 +4. 多层分布结构,面向服务架构。 #### 1.1.4 软件项目 软件项目是一种特殊的项目,具有如下特点: @@ -174,7 +174,7 @@ The process of executing a program with the intent of finding errors. 5. 1988–至今-预防为主(Prevention Oriented) - 尽量早的介入并发现这些明显的或隐藏的bug,发现得越早,修复起来的成本越低,产生的风险也越小。 + 尽量早地介入并发现这些明显的或隐藏的bug,发现得越早,修复起来的成本越低,产生的风险也越小。 #### 1.3.3 测试与开发的关系 **瀑布模型** @@ -277,7 +277,7 @@ W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方 * 响应变化高于遵循计划 - 通过高效的协作,获取快速的反馈,从而尽早做出调整,减少浪费 + 通过高效的协作,获取快速的反馈,从而尽早做出调整,减少浪费。 **缺点:** @@ -287,11 +287,11 @@ W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方 ### 1.4 软件缺陷 #### 1.4.1 缺陷定义 -IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。 +IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。 符合下面4个条件之一就是缺陷: 1. 软件未达到规格说明书中规定的功能。 -2. 软件出现了产品说明数中指明的不会出现的错误。 +2. 软件出现了产品说明书中指明的不会出现的错误。 3. 软件功能超出了产品说明书中指明的范围。 4. 软件难于理解,不易使用,运行速度慢,或者最终用户认为软件使用效果不好。 @@ -386,7 +386,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 6. bug描述:bug的产生环境、详细步骤、期望结果、实际结果。 7. 附件:包括但不仅限于截图、日志、录像、所用到的示例文件以及应用;同样是方便复现解决缺陷的。 -以上是上报bug、创建bug必须要做的,在后续我们还会对bug进行修复、复测等工作,那在为了记录后续工作,bug还应该包含: +以上是上报bug、创建bug必须要做的,在后续我们还会对bug进行修复、复测等工作,那么为了记录后续工作,bug还应该包含: 1. bug状态:开始、修复中、修复完成、提测、测试中、测试通过/失败、关闭等,后续bug周期中会讲到。 2. bug修订人:bug修订人员。 @@ -406,7 +406,7 @@ IEEE729-1983 对缺陷有一个标准的定义:从产品内部看,缺陷是 我国软件测试行业起步较晚,发展较慢,直到21世纪初期,我国才逐步开始重视软件测试行业。但近年来,软件行业的快速发展为软件测试行业的发展提供了良好的基础,随着我国软件测试行业的发展,行业内企业向规模化发展将获得规模效应,可以有效降低企业的单位成本;而软件测试技术的不断发展,也将淘汰那些技术实力较弱的企业,促使行业内企业向专业化方向发展。 -在软件业较发达的国家,软件测试产业已形成规模,比较发达,软件测试不仅早已成为软件开发的一个重要组成部分,而且在整个软件开发的系统工程中占据着相当大的比重。在微软公司内部,软件测试人员与软件开发人员的比例一般为1.5∶1到2.5∶1左右,即一个开发人员背后,有至少两位测试人员在工作,以保证软件产品的质量1。国外优秀的软件开发机构把40%的工作花在软件测试上,软件测试费用占软件开发总费用的30%至50%,对于一些要求高可靠性、高安全性的软件,测试费用甚至相当于整个软件项目开发所有费用的3至5倍。 +在软件业较发达的国家,软件测试产业已形成规模,比较发达,软件测试不仅早已成为软件开发的一个重要组成部分,而且在整个软件开发的系统工程中占据着相当大的比重。在微软公司内部,软件测试人员与软件开发人员的比例一般为1.5∶1到2.5∶1左右,即一个开发人员背后,有至少两位测试人员在工作,以保证软件产品的质量。国外优秀的软件开发机构把40%的工作花在软件测试上,软件测试费用占软件开发总费用的30%至50%,对于一些要求高可靠性、高安全性的软件,测试费用甚至相当于整个软件项目开发所有费用的3至5倍。 从国内软件公司软件测试部门的独立性来看,多数软件企业没有专门的测试技术部门,软件测试程序也不太规范,多数企业也不懂测试,对测试的投入资金过少。大多数是在经过简单的测试之后,就认为是没有问题了,就交于用户了,让用户去“测试”。于是,软件产品在没有经过严格测试的情况下就发布了。对国内消费类软件而言,经常出现一些已经推向市场的产品由于被发现有严重缺陷而导致大量退货的现象。定制的行业软件,常出现一再返工、无限期的修改和维护的现象。 -- Gitee From 93db300c0ce8d285942052c09e76446472f515fc Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Thu, 16 Sep 2021 12:34:20 +0800 Subject: [PATCH 14/63] =?UTF-8?q?=E6=89=8B=E5=B7=A5=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E4=BD=95=E6=98=95=E6=98=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 50 +++++++++++++++++++++++++------------------------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index cc26bc3..0d4a356 100644 --- a/README.md +++ b/README.md @@ -422,17 +422,17 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 9. 高校从师资储备到专业设置再到人才培养的机制薄弱。 国内外软件测试差距 -1. 测试的理解认识 -2. 测试过程的管理 -3. 测试工具的使用 -4. 测试人员的培养 +1. 测试的理解认识; +2. 测试过程的管理; +3. 测试工具的使用; +4. 测试人员的培养。 #### 1.5.2 未来趋势 -1. 以软件为代表的计算机行业正在以一种井喷式的趋势发展 -2. 人才缺口大 -3. 女性员工受到青睐 -4. 未来发展空间大 -5. 外包为主 +1. 以软件为代表的计算机行业正在以一种井喷式的趋势发展; +2. 人才缺口大; +3. 女性员工受到青睐; +4. 未来发展空间大; +5. 外包为主。 #### 1.5.3 软件测试职业发展 1. 技术方向 @@ -458,22 +458,22 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 6. 发散思维方式 ### 1.6 测试认识的误区 -1. 使用了测试工具,就是进行了有效的测试 -2. 存在太多无法测试的东西 -3. 软件开发完成后才进行测试 -4. 软件发布后发现质量问题,是测试人员的问题 -5. 软件测试很简单,就是点点点,是个人就能做 -6. 软件测试没有前途,只有程序员才是软件高手 -7. 软件测试是测试人员的事情和程序员无关 -8. 项目进度吃紧时少做测试,时间多时多做测试 -9. 测试要进行穷尽测试 -10. 采样是随机抽取过程 -11. 测试和开发是对头 -12. 测试少报bug开发就会高兴点,报告也会好看点 -13. 自动化测试终会取代手工测试 -14. 规范化软件测试是增加项目成本 -15. 越多测试越有效 -16. 软件测试工作只负责项目上线/产品发布之前的部分 +1. 使用了测试工具,就是进行了有效的测试; +2. 存在太多无法测试的东西; +3. 软件开发完成后才进行测试; +4. 软件发布后发现质量问题,是测试人员的问题; +5. 软件测试很简单,就是点点点,是个人就能做; +6. 软件测试没有前途,只有程序员才是软件高手; +7. 软件测试是测试人员的事情和程序员无关; +8. 项目进度吃紧时少做测试,时间多时多做测试; +9. 测试要进行穷尽测试; +10. 采样是随机抽取过程; +11. 测试和开发是对头; +12. 测试少报bug开发就会高兴点,报告也会好看点; +13. 自动化测试终会取代手工测试; +14. 规范化软件测试是增加项目成本; +15. 越多测试越有效; +16. 软件测试工作只负责项目上线/产品发布之前的部分。 ### 1.7 知识点总结 ## 第2章 软件测试基础知识 -- Gitee From 19303aef2e2611ebc1402c25749caeda8a0353e0 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Thu, 16 Sep 2021 12:38:18 +0800 Subject: [PATCH 15/63] =?UTF-8?q?=E6=89=8B=E5=B7=A5=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=86=AF=E6=99=93=E7=BF=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 0d4a356..fa76ab8 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ 软件项目是一种特殊的项目,具有如下特点: 1. 知识密集型,技术含量高 2. 涉及多个专业领域,多种技术综合应用 -3. 项目范围和目标的灵活性 +3. 项目范围广和目标的灵活性高 4. 风险大,收益大 5. 客户化程度高 6. 过程管理重要 @@ -155,7 +155,7 @@ IEEE:使用人工或自动手段来运行或测定某个软件系统的过程, 2. 1957–1978-证明为主(Demonstration Oriented) - 与调试区分开,这是软件测试史上一个重要的里程碑,主要目是确认软件是满足需求的。 + 与调试区分开,这是软件测试史上一个重要的里程碑,主要目的是确认软件是满足需求的。 3. 1979–1982-破坏为主(Destruction Oriented) @@ -219,7 +219,7 @@ The process of executing a program with the intent of finding errors. ![W模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/w-model.png) -明确表示出了测试与开发的并行关系 +明确表示出了测试与开发的并行关系。 **优点:** @@ -396,9 +396,9 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 6. bug备注:备注,以便记录一些额外信息。 #### 1.4.8 缺陷预防 -**差错**:人在理解和解决问题的思维和行为过程中出现的问题,沟通不当,理解错误。(产生根源) -**错误**:软件内部问题,设计错误、编码错误。(内部原因) -**失效**:软件系统运行时偏离了用户需求。(外部表现) +**差错:**人在理解和解决问题的思维和行为过程中出现的问题,沟通不当,理解错误。(产生根源) +**错误:**软件内部问题,设计错误、编码错误。(内部原因) +**失效:**软件系统运行时偏离了用户需求。(外部表现) ### 1.5 软件测试行业 #### 1.5.1 行业现状 @@ -719,7 +719,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 ![健壮性边界值分析](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/bianjiezhi2.jpg) #### 3.3.3 应用举例 -延伸上节的例子来说明:学生信息系统中有一个“考试成绩”的输入项,成绩的取值范围是0~100之间的整数,考试成绩及格的分数线是60,优秀的分数线是80。那么这个例子中的边界值数据是哪些呢: +延伸上节的例子来说明:学生信息系统中有一个“考试成绩”的输入项,成绩的取值范围是0~100之间的整数,考试成绩及格的分数线是60,优秀的分数线是80。那么这个例子中的边界值数据是哪些呢? > 选取的边界值数据应该包括: > @@ -740,7 +740,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 边界值分析对布尔变量和逻辑变量没有多大意义。例如,布尔变量的极值是true和false,但是其余3个值不明确。 ### 3.4 决策表 -等价类划分法和边界值分析法只是孤立地考虑各个输人数据的测试效果,没有考虑输入数据的组合及其相互制约关系,而决策表考虑了多种条件的组合情况。决策表又称为判定表,分析多种逻辑条件(if-else、switch-case等)与执行动之间的关系。 +等价类划分法和边界值分析法只是孤立地考虑各个输人数据的测试效果,没有考虑输入数据的组合及其相互制约关系,而决策表考虑了多种条件的组合情况。决策表又称为判定表,分析多种逻辑条件(if-else、switch-case等)与执行之间的关系。 决策表由4部分组成: 1. 条件桩:列出了问题的所有条件,通常认为列出的条件次序无关紧要。 @@ -906,13 +906,13 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 | TC6 | F、特、@ | G、殊、* | 提示L和M | #### 3.5.4 优点和缺点 -优点: +**优点:** 1. 考虑多个输入之间的相互组合、相互制约的关系 2. 指出需求规格说明书中存在的不完整性和二义性 3. 帮助测试人员按照一定的步骤高效的开发测试用例 -缺点: +**缺点:** 1. 作为输入条件的原因和输出结果之间的因果关系,很难从规格说明书得到 2. 此方法得到的用例数量规模大 ### 3.6 场景法 @@ -952,7 +952,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 | TC6 | 场景6:ATM无现金 | 合法卡 | 123456 | 0.00 | 5000.00 | n/a | 提款选项不可用,用例结束 | | TC7 | 场景7:金额错误 | 合法卡 | 123456 | 2000.00 | 5000.00 | 20 | 提示错误,重新输入 | | TC8 | 场景8:卡内余额不足 | 合法卡 | 123456 | 2000.00 | 5000.00 | 600 | 提示错误,重新输入 | -| TC9 | 场景9:ATM现金不足 | 合法卡 | 123456 | 2000.00 | 5000.00 | 2500 | 提示错误,重新输入 | +| TC9 | 场景9:ATM现金不足 | 合法卡 | 123456 | 2000.00 | 5000.00 | 2500 | 提示错误,重新输入 | ### 3.7 错误推测法 -- Gitee From d602d949ea31b773e7ed9421aee8b000ddaadfb2 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Thu, 16 Sep 2021 12:45:21 +0800 Subject: [PATCH 16/63] =?UTF-8?q?=E6=89=8B=E5=B7=A5=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E9=82=B5=E9=9C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index fa76ab8..7edbc23 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ### 1 课程目标 * 掌握基础的软件测试理论、测试方法和策略 * 掌握常用工具的使用方法 -* 根据需求和设计文档独立编写测试计划、测试方案、测试用例以及测试报告 +* 根据需求和设计文档,独立编写测试计划、测试方案、测试用例以及测试报告 ### 2 主要内容 * 软件测试概论 * 软件测试基础知识 @@ -95,24 +95,24 @@ #### 1.2.2 可行性分析 **描述:** 由项目组相关成员去研究需求是否可行,能不能做出来。 -**参与者:** 产品经理、架构师、项目经理、开发 +**参与者:** 产品经理、架构师、项目经理、开发人员 #### 1.2.3 需求分析 **描述:** 需求分析其实是在做需求细化,按照任务说明书中的任务内容和指标具体细化各个点,细化到每个输入框、每个按钮的样式,输入输出等各项值。 -**参与者:** 产品经理、架构师、项目经理、测试/质量管理员(很多公司把这个统称为QA)、开发 +**参与者:** 产品经理、架构师、项目经理、测试人员/质量管理员(很多公司把这个统称为QA)、开发人员 **输出:**《需求规格说明书》 #### 1.2.4 评审 **描述:** 评审就是做审查,对这个阶段的工作进行审查,看是否偏离或者有遗漏(比如:设计和工厂的各个环节都有相关的审查,审查材料是否合格、设计是否符合规定、按照工人/设计出的材料需求是否足够或者多余等等,这些审查都是评审);评审一般由相应工作人员来参与。 -**参与者:** 每个阶段的评审一般都是各职能部门内部审核,也可以申请其他相关人员审核,比如需求评审,一般是产品经理、项目经理、测试、开发一起评审;系统设计一般是项目经理、开发评审;测试策略评审一般是测试组内部评审等等 +**参与者:** 每个阶段的评审一般都是各职能部门内部审核,也可以申请其他相关人员审核,比如需求评审,一般是产品经理、项目经理、测试人员、开发人员一起评审;系统设计一般是项目经理、开发人员评审;测试策略评审一般是测试组内部评审等等 #### 1.2.5 设计 **描述:** 架构师根据需求确定产品或者项目的场景、特点,选择合适的框架,技术使项目实现最优化。在此基础上将系统进行概要设计,包括系统总体数据结构、数据库结构、模块结构以及它们之间的关系等。开发人员根据概要设计对具体模块进行详细设计,包括接口、参数等。此处设计会形成概要设计文档和详细设计文档。 -**参与者:** 项目经理、架构师、开发、测试 +**参与者:** 项目经理、架构师、开发人员、测试人员 #### 1.2.6 编码 **描述:** 开发人员根据详细设计文档对系统进行模块化开发,在确定参数和接口的情况下,根据需求对模块内部进行方法级别的设计和编码以及自测,对产品功能进行一一实现。 @@ -122,7 +122,7 @@ #### 1.2.7 提测 **描述:** 开发人员完成一个小迭代/小功能,且完成自测(开发编码完成后,一般都会自己检测下),于是向测试部门发起提测,一般以邮件方式或者任务管理工具的任务流方式向测试部门通知xxx模块/功能可以测试。 -**参与者:** 任务责任人(开发)、测试 +**参与者:** 任务责任人(开发)、测试人员 #### 1.2.8 测试 - 测试需求 @@ -135,7 +135,7 @@ **描述:** 经过前面的各个阶段,产品已经可以出售或者面向大众了。配置管理人员进行封版、版本制作(针对产品来说)/部署上线(针对项目应用来说)。 -**参与人:** 配置管理人员、测试 +**参与人:** 配置管理人员、测试人员 #### 1.2.10 支持维护 @@ -408,7 +408,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 在软件业较发达的国家,软件测试产业已形成规模,比较发达,软件测试不仅早已成为软件开发的一个重要组成部分,而且在整个软件开发的系统工程中占据着相当大的比重。在微软公司内部,软件测试人员与软件开发人员的比例一般为1.5∶1到2.5∶1左右,即一个开发人员背后,有至少两位测试人员在工作,以保证软件产品的质量。国外优秀的软件开发机构把40%的工作花在软件测试上,软件测试费用占软件开发总费用的30%至50%,对于一些要求高可靠性、高安全性的软件,测试费用甚至相当于整个软件项目开发所有费用的3至5倍。 -从国内软件公司软件测试部门的独立性来看,多数软件企业没有专门的测试技术部门,软件测试程序也不太规范,多数企业也不懂测试,对测试的投入资金过少。大多数是在经过简单的测试之后,就认为是没有问题了,就交于用户了,让用户去“测试”。于是,软件产品在没有经过严格测试的情况下就发布了。对国内消费类软件而言,经常出现一些已经推向市场的产品由于被发现有严重缺陷而导致大量退货的现象。定制的行业软件,常出现一再返工、无限期的修改和维护的现象。 +从国内软件公司软件测试部门的独立性来看,多数软件企业没有专门的测试技术部门,软件测试程序也不太规范,多数企业也不懂测试,对测试的投入资金过少。大多数是在经过简单地测试之后,就认为是没有问题了,就交于用户了,让用户去“测试”。于是,软件产品在没有经过严格测试的情况下就发布了。对国内消费类软件而言,经常出现一些已经推向市场的产品由于被发现有严重缺陷而导致大量退货的现象。定制的行业软件,常出现一再返工、无限期的修改和维护的现象。 当前国内软件测试行业主要存在以下问题: 1. 软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题。 -- Gitee From 577979866d02d261e50f5a7ee90433d8b3844a19 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Thu, 16 Sep 2021 23:16:29 +0800 Subject: [PATCH 17/63] =?UTF-8?q?=E6=89=8B=E5=B7=A5=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E7=A7=A6=E5=85=B6=E4=B9=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7edbc23..9fc0102 100644 --- a/README.md +++ b/README.md @@ -343,7 +343,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 | P3 | 高 | 影响整个测试的继续进行,要马上修改 | | P4 | 急 | 系统无法继续执行下去,必须立即修改 | -严重性和优先级对于审查缺陷报告并决定哪些软件缺陷应该修复,以何种顺序修复的人员极为重要。如果一个程序员受命修复10个缺陷,他就应该先从严重性为1 、优先级为1这样的缺陷着手,而不是优先修复简单的,由简到难。 +严重性和优先级对于审查缺陷报告并决定哪些软件缺陷应该修复,以何种顺序修复的人员极为重要。如果一个程序员受命修复10个缺陷,他就应该先从严重性为1 、优先级为4这样的缺陷着手,而不是优先修复简单的,由简到难。 综合使用重要性等级和严重性双标准的优先顺序: -- Gitee From 9a1f3000849c90aa4610d865fa993f2e59938859 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Thu, 16 Sep 2021 23:18:24 +0800 Subject: [PATCH 18/63] =?UTF-8?q?=E6=89=8B=E5=B7=A5=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=B4=94=E6=80=80=E5=8D=9A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 9fc0102..999c3d2 100644 --- a/README.md +++ b/README.md @@ -390,10 +390,10 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 1. bug状态:开始、修复中、修复完成、提测、测试中、测试通过/失败、关闭等,后续bug周期中会讲到。 2. bug修订人:bug修订人员。 -3. bug复测人:通常是谁报的bug最后返回给谁测试,但是在某些情况下比如bug报告人任务积累太多/不在的情况下也会分给其他人,所以通常会记录bug复测责任人。 -4. bug修订说明:由bug修订人来写,说明bug产生原因,修改思路等。 -5. bug复测说明:由复测人员来写,说明复测过程,复测结果等。 -6. bug备注:备注,以便记录一些额外信息。 +3. bug复测人:通常是谁报的bug最后返回给谁测试,但是在某些情况下比如bug报告人任务积累太多/不在的情况下也会分给其他人,所以通常会记录bug复测责任人。 +4. bug修订说明:由bug修订人来写,说明bug产生原因,修改思路等。 +5. bug复测说明:由复测人员来写,说明复测过程,复测结果等。 +6. bug备注:备注,以便记录一些额外信息。 #### 1.4.8 缺陷预防 **差错:**人在理解和解决问题的思维和行为过程中出现的问题,沟通不当,理解错误。(产生根源) -- Gitee From cd6b59f4d383946ca8d3caf96620cfe423654158 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Thu, 16 Sep 2021 23:24:17 +0800 Subject: [PATCH 19/63] =?UTF-8?q?=E6=9D=8E=E4=BD=B3=E9=BD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 999c3d2..00e0f6a 100644 --- a/README.md +++ b/README.md @@ -480,7 +480,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 ### 2.1 概述 1. 从软件测试的目的来理解 - 软件的目的是发现软件中的错误,是为了证明软件有错,而不是无错。是在软件投入运行前,对软件需求分析、设计和编码各个阶段产品的最终检查,是为了保证软件开发产品的正确性、完整性和一致性。 + 软件测试的目的是发现软件中的错误,是为了证明软件有错,而不是无错。是在软件投入运行前,对软件需求分析、设计和编码各个阶段产品的最终检查,是为了保证软件开发产品的正确性、完整性和一致性。 2. 从软件测试的性质来理解 -- Gitee From 9b5da89f1ba015dd1d671b881c49c950b27b681c Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Fri, 17 Sep 2021 11:39:32 +0800 Subject: [PATCH 20/63] =?UTF-8?q?=E6=89=8B=E5=B7=A5=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E6=9B=B9=E9=9D=99=E9=93=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index 00e0f6a..a85254b 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ ### 1.3 软件测试概述 #### 1.3.1 软件测试定义 软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 -IEEE:使用人工或自动手段来运行或测定某个软件系统的过程,其目的在于检测他是否满足规定的需求或弄清预期结果和实际结果的差别。 +IEEE:使用人工或自动手段来运行或测定某个软件系统的过程,其目的在于检测他是否满足规定的需求或弄清预期结果和实际结果的差别。 #### 1.3.2 测试发展历程 1. 1957年之前-调试为主(Debugging Oriented) @@ -189,13 +189,13 @@ The process of executing a program with the intent of finding errors. 为了更早的发现问题,测试应延伸需求评审,设计审查活动中,软件生命周期的每个阶段都应包含测试。 -**优点:** +**优点:** 1. 各阶段划分清晰 2. 强调计划与需求分析 3. 适合需求稳定的产品开发 -**缺点:** +**缺点:** 1. 单一流程,不可逆 2. 风险显露得晚,纠正机会少 @@ -754,7 +754,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 所有条件都是逻辑结果(即真/假、是/否、0/1)的决策表称为有限条件决策表。如果条件有多个值,则对应的决策表叫做扩展条目决策表。决策表设计测试用例,条件解释为输入,动作解释为输出。 -决策表适合以下特征的应用程序: +决策表适合以下特征的应用程序: 1. if-then-else分支逻辑突出。 2. 输入变量之间存在逻辑关系。 3. 涉及输入变量子集的计算。 @@ -762,7 +762,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 5. 很高的圈复杂度。 #### 3.4.1 应用举例 -决策表(判定表)设计测试用例的具体步骤如下: +决策表(判定表)设计测试用例的具体步骤如下: 1. 确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2种规则。 2. 列出所有的条件桩和动作桩。 3. 填入条件项。 @@ -912,7 +912,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 2. 指出需求规格说明书中存在的不完整性和二义性 3. 帮助测试人员按照一定的步骤高效的开发测试用例 -**缺点:** +**缺点:** 1. 作为输入条件的原因和输出结果之间的因果关系,很难从规格说明书得到 2. 此方法得到的用例数量规模大 ### 3.6 场景法 @@ -961,7 +961,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 该方法强调的是对被测试软件的需求理解以及设计实现的细节把握,当然还有个人的能力。那么显而易见地,这个方法的缺点就是太过依赖个人能力,难以系统化。因此,这个方法一般是作为测试用例设计的补充,而不是单独用来设计测试用例。在回归测试中应用较多。 -错误推测法一般采用如下技术: +错误推测法一般采用如下技术: 1. 有关软件设计方法和实现技术。 2. 有关前期测试阶段结果的知识。 3. 测试类似或相关系统的经验,了解以前这些系统曾在哪些地方出现缺陷。 @@ -1000,14 +1000,14 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 - JavaScript字符转义 ### 3.8 综合策略 黑盒测试方法有等价类划分、边界值分析、决策表、因果图、场景法、错误推测法等,每种测试方法都有其各自的特点和适用场合。 -软件测试专家Myers给出了黑盒测试方法中各种测试方法的使用策略: +软件测试专家Myers给出了黑盒测试方法中各种测试方法的使用策略: 1. 在任何情况下都必须使用边界值分析方法。经验表明,用这种方法设计的测试用例发现程序错误的能力最强。 2. 必要时使用等价类划分方法补充一些测试用例。 3. 用错误推测法再追加一些测试用例。 4. 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例。 5. 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。 -对于功能性测试技术,可以根据如下条件进行选择: +对于功能性测试技术,可以根据如下条件进行选择: 1. 如果变量是独立的,则可以用定义域测试和等价类测试。 2. 如果变量不是独立的,可采用决策表测试。 3. 如果为单缺陷假设,则可采用边界值分析和健壮性测试。 -- Gitee From 6fd0d156af2ad728e2f4bc6dca2b35f5de33c74b Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Fri, 17 Sep 2021 22:33:39 +0800 Subject: [PATCH 21/63] =?UTF-8?q?=E6=89=8B=E5=B7=A5=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=88=98=E8=B6=85=E9=9C=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a85254b..8e34400 100644 --- a/README.md +++ b/README.md @@ -580,7 +580,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 3. 前置条件:该测试用例的前提条件,比如测试wangdachui/dachui12345(用户名/密码)账户是否能正确登录进去,那前提wangdachui/dachui12345一定是注册过的 4. 测试步骤:就是测试的所有操作步骤,最好是每一个步骤应该对应一个期望结果,最少也得一个测试用例对应一个期望结果 5. 期望结果:就是希望得到的结果(正确的结果) -6. 测试结果:实际测试的结果,可选项有:通过、不通过、暂时挂起/锁定(就是暂时不测试); +6. 测试结果:实际测试的结果,可选项有:通过、不通过、暂时挂起/锁定(就是暂时不测试) 7. 对应的bug:当期望结果与实际结果不符时测试不通过,此时需要上报bug(记录缺陷),bug需要与测试用例对应 8. 测试执行人:实际由谁来执行测试用例;也有任务分配人的选项,就是测试用例分配给哪个测试员来测试 9. 备注:做一些备注或者测试的说明 -- Gitee From 3a1d547e362868b59f8f81d450b6d899d1b63a11 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Fri, 17 Sep 2021 23:08:52 +0800 Subject: [PATCH 22/63] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E9=98=B6=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/README.md b/README.md index 8e34400..54421c9 100644 --- a/README.md +++ b/README.md @@ -1047,9 +1047,60 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 ### 6.4 测试设计 ### 6.5 测试执行 #### 6.5.1 单元测试 +单元测试即为将整个软件分解为各个单元,随后对单元进行测试。此类测试策略的优点在于所需分析数据较少,且针对性较强,程序开发者于开发过程中可通过操作经验明确出现问题的大致区域,随后针对此类问题对相关单元展开分析,进行问题排查。但需注意的是,某些程序中无具体单元驱动程序,即单个单元无法有效驱动,易出现问题,若针对此类软件展开测试,需重点注意此类分解单元。 + +单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。 + +* 测试阶段:编码后 +* 测试对象:最小模块 +* 测试人员:白盒测试工程师或开发工程师 +* 测试依据:代码和注释+详细设计文档 +* 测试方法:白盒测试 +* 测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试 + +单元测试针对模块进行测试,主要有一下5个任务: +* 模块接口:全局量定义一致性,调用参数 +* 局部数据结构:数据的定义和使用 +* 边界条件:循环边界和输入边界 +* 执行路径:关键路径和重要路径 +* 错误处理:非合理输入和系统错误 + #### 6.5.2 集成测试 +集成测试与单元测试相反,原理为将部分需测试部分作为整体进行集成,随后针对此类集成部分进行测试。测试要求为此类被测试集成题应具有一定的结构,且属于非渐增方式集成。对于较大软件而言,集成测试方式较单元测试方式而言较为繁琐,多数大型软件的测试皆采取渐增方式进行测试。渐增测试方式为集成测试方式的衍生,其能够按照不同次序对软件进行测试,日常测试中,常将两类方式进行集成测试,随后按照次序展开选择。 + +集成测试也称联合测试、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。主要目的是检查软件单位之间的接口是否正确。 + +* 测试阶段:一般单元测试之后进行 +* 测试对象:模块间的接口 +* 测试人员:白盒测试工程师或开发工程师 +* 测试依据:单元测试的模块+概要设计文档 +* 测试方法:黑盒测试与白盒测试相结合 +* 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响 + #### 6.5.3 系统测试 +一般情况下,系统测试采用黑盒法来进行测试的,以此来检查该系统是否符合软件需求。本阶段的主要测试内容包括健壮性测试、性能测试、功能测试、安装或反安装测试、用户界面测试、压力测试、可靠性及安全性测试等。为了有效保证这一阶段测试的客观性,必须由独立的测试小组来进行相关的系统测试。另外,系统测试过程较为复杂,由于在系统测试阶段不断变更需求造成功能的删除或增加,从而使程序不断出现相应的更改,而程序在更改后可能会出现新的问题,或者原本没有问题的功能由于更改导致出现问题。所以,测试人员必须进行回归测试。 + +将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。时间大部分在系统测试执行阶段。 + +* 测试阶段:集成测试通过之后 +* 测试对象:整个系统(软、硬件) +* 测试人员:黑盒测试工程师 +* 测试依据:需求规格说明文档 +* 测试方法:黑盒测试 +* 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等 + #### 6.5.4 验收测试 +验收测试是最后一个阶段的测试操作,在软件产品投入正式运行前的所要进行的测试工作。和系统测试相比而言,验收测试与之的区别就只是测试人员不同,验收测试则是由用户来执行这一操作的。验收测试的主要目标是为向用户展示所开发出来的软件符合预定的要求和有关标准,并验证软件实际工作的有效性和可靠性,确保用户能用该软件顺利完成既定的任务和功能。通过了验收测试,该产品就可进行发布。但是,在实际交付给用户之后,开发人员是无法预测该软件用户在实际运用过程中是如何使用该程序的,所以从用户的角度出发,测试人员还应进行Alpha测试或Beta测试这两种情形的测试。Alpha测试是在软件开发环境下由用户进行的测试,或者模拟实际操作环境进而进行的测试。Alpha测试主要是对软件产品的功能、局域化、界面、可使用性以及性能等等方面进行评价。而Beta测试是在实际环境中由多个用户对其进行测试,并将在测试过程中发现的错误有效反馈给软件开发者。所以在测试过程中用户必须定期将所遇到的问题反馈给开发者。 + +验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。阿旺总结验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。 + +* 测试阶段:系统测试通过之后 +* 测试对象:整个系统(包括软硬件)。 +* 测试人员:主要是最终用户或者需求方。 +* 测试依据:用户需求、验收标准 +* 测试方法:黑盒测试 +* 测试内容:同系统测试(功能...各类文档等) + #### 6.5.5 α测试 #### 6.5.6 β测试 ### 6.6 回归测试 -- Gitee From a5381ef2e63578ebce7053baf8e24ead71a2c1f1 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Fri, 17 Sep 2021 23:20:34 +0800 Subject: [PATCH 23/63] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 54421c9..fcb2bd8 100644 --- a/README.md +++ b/README.md @@ -1052,7 +1052,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。 * 测试阶段:编码后 -* 测试对象:最小模块 +* 测试对象:最小模块(函数、类、模块) * 测试人员:白盒测试工程师或开发工程师 * 测试依据:代码和注释+详细设计文档 * 测试方法:白盒测试 -- Gitee From edfb6bbe49f7d189e0f64345bb2e37a236735f48 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Fri, 17 Sep 2021 23:57:44 +0800 Subject: [PATCH 24/63] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=AE=A4=E8=AF=86?= =?UTF-8?q?=E8=AF=AF=E5=8C=BA=E8=A1=A5=E5=85=85=E5=92=8C=E7=AB=A0=E8=8A=82?= =?UTF-8?q?=E5=B0=8F=E7=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 63 ++++++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 56 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index fcb2bd8..893a888 100644 --- a/README.md +++ b/README.md @@ -459,22 +459,71 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 ### 1.6 测试认识的误区 1. 使用了测试工具,就是进行了有效的测试; +>有效的测试首先是指该软件具有可测试性。可测试性反映了软件质量的内在属性,是一个强内聚、弱耦合、接口明确的软件,它不会因为使用了某种测试工具,就证明被测试的软件具有可测试性。 + 2. 存在太多无法测试的东西; +>在软件开发领域,确实存在一些看起来比另外一些东西难测试的东西,但是远非无法测试。在大多数情况下,发生这种情况还是由于被测试软件本身在设计时没有考虑到可测试性的问题。只不过这种不可测试性不是由于被测试软件内部的过紧耦合造成的,而是和外部某些很难测试的部分耦合过紧,从而表现出被测试软件本身很难测试的特征。这些很难测试的部分,比较常见的有图形界面、硬件、数据库等。 + 3. 软件开发完成后才进行测试; +>软件测试是一个系列过程活动,包括软件测试需求分析、测试计划设计、测试用例设计、执行测试,软件测试贯穿软件项目的整个生命过程,每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅包括软件代码,还包括软件需求文档和设计等各类文档。软件开发与软件测试是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试。如果等到软件编码结束后才进行测试,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将很差。更严重的是,如果发现了软件需求阶段或概要设计阶段的错误,要修复该类错误,将会耗费大量的时间和人力。 + 4. 软件发布后发现质量问题,是测试人员的问题; +>这种错误的认识非常伤害软件测试人员的积极性。软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因此从根本上讲,软件测试不可能发现全部错误。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。如果出现软件错误,不能简单地归结为某一个人的责任,有些错误可能是技术原因,也可能是混乱的管理所致。因此,应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。 + 5. 软件测试很简单,就是点点点,是个人就能做; +>随着软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。软件测试技术不断更新和完善,新工具、新流程、新方法都在不断出现,因此,软件测试需要学习很多测试知识,更需要不断的实践经验和学习精神。 + 6. 软件测试没有前途,只有程序员才是软件高手; +>随着市场对软件质量要求的不断提高,软件测试将变得越来越重要,对测试人员的要求也越来越高。测试人员不仅要懂得如何测试,还要懂得被测软件的业务知识和专业知识.而开发人员往往只需要对自己开发的模块了解比较深,对算法掌握的程度要求高一些,所以,软件测试和开发人员只是工作的侧重点不同,并不存在水平差异的问题。 + 7. 软件测试是测试人员的事情和程序员无关; +>开发和测试是相辅相成的过程,需要测试人员、程序员和系统分析师等保持密切的联系,需要交流和协调,以便提高测试效率。另外,对于单元测试,主要应该由程序员完成,必要时测试人员可以帮助设计测试样例。对于测试中发现的软件错误,很多都需要程序员通过修改编码才能修复。程序员通过有目的地分析软件错误的类型、数量,找出产生错误的位置和原因,以避免同样的错误发生,积累编程经验,提高软件开发能力。 + 8. 项目进度吃紧时少做测试,时间多时多做测试; -9. 测试要进行穷尽测试; +>这是在软件开发过程中不重视软件测试的常见表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。软件项目开发需要合理的项目进度计划,其中就包括测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单地缩短测试时间,压缩人力和资源。因为缩短测试时间使测试不完整,引入潜在风险,往往造成更大的软件缺陷。避免这种现象的最好办法是加强软件过程的计划和控制,包括软件测试计划、测试设计、测试执行、测试度量和测试控制。 + +9. 测试要进行穷尽测试; +>测试最多只是采样。 + 10. 采样是随机抽取过程; -11. 测试和开发是对头; -12. 测试少报bug开发就会高兴点,报告也会好看点; -13. 自动化测试终会取代手工测试; -14. 规范化软件测试是增加项目成本; -15. 越多测试越有效; -16. 软件测试工作只负责项目上线/产品发布之前的部分。 +>测试采样过程需要使用正确的测试用例设计方法来操作。 + +11. 测试和开发是对头; +>开发和测试是合作伙伴的关系,在日常生活中要注意沟通技巧和方式,如意见不一致且不能说服对方的问题,上报给负责人去决定。 + +12. 测试少报bug开发就会高兴点,报告也会好看点; +>遇到缺陷一定要上报,即使他不能稳定复现(当然测试要尽可能的再现缺陷,并且找出再现问题的具体步骤)。但是一定不要不负责任的乱报。 + +13. 自动化测试终会取代手工测试; +>我们在选择用哪种方法的测试的时候,坚持“效率最高化,利益最大化”的原则来选择用最适合的方法。我们工作的目的是为了利益,而不是显得高端。 +> +>自动化测试的初衷是将测试从繁重的、重复的回归工作中解放出来,从而提高测试效率的。并不是为了取代手工测试的,当然以目前的情况来看也取代不了手工测试。另外自动化测试需要在前期投入大量的人力资源和时间,且维护成本很高,故不能盲目推崇测试自动化。 + +||手工测试|自动化测试| +|----|----|----| +|概念|手工测试是由专门的测试人员从用户视角来验证软件是否满足设计要求的行为,更适合用于深度的测试和强调主观判断的测试。|自动化测试利用测试工具软件来控制测试的自动化执行以及对预期和结果进行检查。一般来说单元测试、接口测试和性能测试等就是利用自动化测试完成。| +|优点|易发现缺陷
容易实施
创造性、灵活性|高效率、速度快
高复用性
覆盖率容易度量
准确、可靠
不知疲劳| +|缺点|覆盖量化难
重复测试效率低
不一致性,可靠性低
人力资源依赖|机械、发现缺陷率低
一次性投入较大
对人员要求高| + +14. 规范化软件测试是增加项目成本; +>大家常说“磨刀不误砍柴工”,但是真正用时又拿“能省则省”的理论来操作,殊不知此时省了相当于埋了颗雷。不仅要规范化软件测试,更要规范化整个软件过程,规避个人水平、责任心、经验的差距。 + +15. 测出bug越多测试越有效; +>测试过程中bug的数量并不能说明测试的有效性,只能说明开发人员的技术水平高低。项目上线后/产品卖出后现场反馈回来的线上bug数量才能反应测试的有效性。 + +16. 软件测试工作只负责项目上线/产品发布之前的部分。 +>测试活动贯穿整个软件生命周期。 + ### 1.7 知识点总结 +1. 软件定义与发展 +2. 软件测试定义与发展 +3. 软件生命周期 +4. 软件测试模型 +5. 缺陷定义、来源、产生原因和记录方法 +6. 软件测试行业 +7. 软件测试职业发展 +8. 软件测试认识误区 + ## 第2章 软件测试基础知识 ### 2.1 概述 -- Gitee From e21a708021e6e1c95cd1167428459a4c471d1bd0 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Sat, 18 Sep 2021 00:05:08 +0800 Subject: [PATCH 25/63] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E7=AB=A0=E5=B0=8F?= =?UTF-8?q?=E7=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 893a888..26eefdc 100644 --- a/README.md +++ b/README.md @@ -683,6 +683,10 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 6. 在系统测试中发现的错误已经得到修改,各级缺陷修复率达到标准 ### 2.6 知识点总结 +1. 软件测试的目的和原则 +2. 软件测试的分类(测试阶段、执行状态、测试技术、执行主体) +3. 测试用例设计和维护 +4. 测试停止标准 ## 第3章 黑盒测试 ### 3.1 概述 -- Gitee From af2acaad7bbde6c58db3f72831add0b2a1ae512b Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Sat, 18 Sep 2021 00:07:26 +0800 Subject: [PATCH 26/63] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E7=AB=A0=E5=B0=8F?= =?UTF-8?q?=E7=BB=93?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 26eefdc..8d9e664 100644 --- a/README.md +++ b/README.md @@ -1068,6 +1068,15 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 5. 如果程序包含大量例外处理,可采用健壮性测试和决策表测试。 6. 如果变量引用的是逻辑量,可采用等价类测试用例和决策表测试。 +### 3.9 知识点总结 +1. 等价类划分 +2. 边界值分析 +3. 决策表 +4. 因果图 +5. 场景法 +6. 错误推测法 +7. 综合策略 + ## 第4章 白盒测试 ### 4.1 概述 ### 4.2 静态测试 -- Gitee From ba1eb5f2b900708ba41208a38847979c0fbff8a2 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Sat, 18 Sep 2021 00:27:35 +0800 Subject: [PATCH 27/63] =?UTF-8?q?=E5=8A=A8=E6=80=81=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 38 +++++++++++++++++++++++++++++++------- 1 file changed, 31 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 8d9e664..f0b77dc 100644 --- a/README.md +++ b/README.md @@ -1079,14 +1079,38 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 ## 第4章 白盒测试 ### 4.1 概述 +白盒测试是把测试对象看做打开的盒子,允许测试人员利用程序内部的逻辑结构及有关信息设计或选择测试用例,通过在不同点检查程序状态确定实际状态是否与预期的状态一致。白盒测试测试软件产品的内部结构和处理过程,而不测试软件产品的功能,用于纠正软件系统在描述、表示和规格上的错误,是进一步测试的前提。 + +白盒测试分为静态测试和动态测试。 + +静态白盒测试是在不执行的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程,有时也称为结构分析。 + +动态白盒测试也称结构化测试,通过查看并使用代码的内部结构设计和执行测试。 ### 4.2 静态测试 -### 4.3 逻辑覆盖 -### 4.4 路径分析 -### 4.5 控制结构测试 -### 4.6 数据流测试 -### 4.7 程序插桩 -### 4.8 测试方法综述 -### 4.9 知识点总结 +静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。 + +此类过程中应用数据较少,主要过程为通过软件的静态性测试(即人工推断或计算机辅助测试)测试程序中运算方式、算法的正确性,进而完成测试过程,此类测试的优点在于能够消耗较短时间、较少资源完成对软件、软件代码的测试,能够较为明显地发现此类代码中出现的错误。静态测试方法适用范围较大,尤其适用于较大型的软件测试。 + +静态测试有代码检查、静态结构分析。 + +* 代码检查 +主要是检查代码的可读性、逻辑表达的正确性、结构的合理性等方面。一般在编译和动态测试之前执行,具有走查、审查或伙伴检查等方法 + +* 静态结构分析 +测试者通过使用测试工具,分析程序代码数据结构等控制逻辑,生成函数调用关系图等,用于检查函数之间的调用关系是否符合要求,是否存在递归调用,函数的调用是否过深,是否存在孤立的函数,用于检测系统是否存在结构缺陷。 + +### 4.3 动态测试 +动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。主要目的为检测软件运行中出现的问题,较静态测试方式相比,其被称为动态的原因即为其测试方式主要依赖程序的运用,主要为检测软件中动态行为是否缺失、软件运行效果是否良好。 + +### 4.4 逻辑覆盖 +逻辑测试,又称为控制流覆盖,是一种按照程序内部逻辑结构和编码结构设计测试用例的测试方法。目的是要测试程序中的语句,判定(控制流能够分解为不同路径的程序点),条件(形成判定的原子谓词)等。根据覆盖的标准不同,分为语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、修正条件判定覆盖、增强条件判定覆盖、条件组合覆盖和路径覆盖等标准。 + +### 4.5 路径分析 +### 4.6 控制结构测试 +### 4.7 数据流测试 +### 4.8 程序插桩 +### 4.9 测试方法综述 +### 4.10 知识点总结 ## 第5章 性能测试 ### 5.1 基本概念 -- Gitee From 839cc1e4b48df401bad560567f8111aee0e0116c Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Sun, 19 Sep 2021 12:20:18 +0800 Subject: [PATCH 28/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=87=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 373 +++++++++++++++++++++++++++--------------------------- 1 file changed, 189 insertions(+), 184 deletions(-) diff --git a/README.md b/README.md index f0b77dc..7dd8ba4 100644 --- a/README.md +++ b/README.md @@ -51,10 +51,10 @@ ##### 管理文档 从管理的角度规定涉及软件生存的信息: -1. 职责定义 -2. 开发过程的每个阶段的进度和进度变更的记录 -3. 软件变更情况的记录 -4. 相对于开发的判定记录 +1. 职责定义; +2. 开发过程的每个阶段的进度和进度变更的记录; +3. 软件变更情况的记录; +4. 相对于开发的判定记录。 * 《工作报告》 * 《工作日志》 @@ -72,19 +72,19 @@ * 《软件支持手册》 #### 1.1.3 软件发展史 -1. 程序设计阶段:个体化生产、专用软件、规模小、功能单一、开发者即使用者。(软件 = 程序) -2. 程序系统阶段:多用户人机交互,实时系统和数据库管理系统。 -3. 软件工程阶段:以软件的产品化、系列化、工程化和标准化为特征的软件产业发展起来,软件开发有了可以遵循的软件工程化的设计准则、方法和标准。 +1. 程序设计阶段:个体化生产、专用软件、规模小、功能单一、开发者即使用者。(软件 = 程序); +2. 程序系统阶段:多用户人机交互,实时系统和数据库管理系统; +3. 软件工程阶段:以软件的产品化、系列化、工程化和标准化为特征的软件产业发展起来,软件开发有了可以遵循的软件工程化的设计准则、方法和标准; 4. 多层分布结构,面向服务架构。 #### 1.1.4 软件项目 软件项目是一种特殊的项目,具有如下特点: -1. 知识密集型,技术含量高 -2. 涉及多个专业领域,多种技术综合应用 -3. 项目范围广和目标的灵活性高 -4. 风险大,收益大 -5. 客户化程度高 -6. 过程管理重要 +1. 知识密集型,技术含量高; +2. 涉及多个专业领域,多种技术综合应用; +3. 项目范围广和目标的灵活性高; +4. 风险大,收益大; +5. 客户化程度高; +6. 过程管理重要。 ### 1.2 软件生命周期 #### 1.2.1 需求定义 @@ -131,7 +131,7 @@ - 测试执行 - 回归测试 - 测试评估 -#### 1.2.9 部署/发版 +#### 1.2.9 部署/发版 **描述:** 经过前面的各个阶段,产品已经可以出售或者面向大众了。配置管理人员进行封版、版本制作(针对产品来说)/部署上线(针对项目应用来说)。 @@ -146,7 +146,7 @@ ### 1.3 软件测试概述 #### 1.3.1 软件测试定义 软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 -IEEE:使用人工或自动手段来运行或测定某个软件系统的过程,其目的在于检测他是否满足规定的需求或弄清预期结果和实际结果的差别。 +IEEE(电气与电子工程师协会):使用人工或自动手段来运行或测定某个软件系统的过程,其目的在于检测他是否满足规定的需求或弄清预期结果和实际结果的差别。 #### 1.3.2 测试发展历程 1. 1957年之前-调试为主(Debugging Oriented) @@ -191,15 +191,15 @@ The process of executing a program with the intent of finding errors. **优点:** -1. 各阶段划分清晰 -2. 强调计划与需求分析 -3. 适合需求稳定的产品开发 +1. 各阶段划分清晰; +2. 强调计划与需求分析; +3. 适合需求稳定的产品开发。 **缺点:** -1. 单一流程,不可逆 -2. 风险显露得晚,纠正机会少 -3. 测试只是其中一个阶段,缺乏全过程测试思想 +1. 单一流程,不可逆; +2. 风险显露得晚,纠正机会少; +3. 测试只是其中一个阶段,缺乏全过程测试思想。 **V模型** @@ -246,17 +246,17 @@ W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方 在敏捷开发中,软件项目在构建初期被切分成多个子项目,各个子项目的成果都经过测试,具备可视、可集成和可运行使用的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。 **《联盟敏捷宣言》** -1. 最重要的是通过尽早和不断交付有价值的软件满足客户需要。 -2. 我们欢迎需求的变化,即使在开发后期。敏捷过程能够驾驭变化,保持客户的竞争优势。 -3. 经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好。 -4. 业务人员和开发者应该在整个项目过程中始终朝夕在一起工作。 -5. 围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务。 -6. 在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈。 -7. 可以工作的软件是进度的主要度量标准。 -8. 敏捷过程提倡可持续开发。出资人、开发人员和用户应该总是维持不变的节奏。 -9. 对卓越技术与良好设计的不断追求将有助于提高敏捷性。 -10. 简单——尽可能减少工作量的艺术至关重要。 -11. 最好的架构、需求和设计都源自自我组织的团队。 +1. 最重要的是通过尽早和不断交付有价值的软件满足客户需要; +2. 我们欢迎需求的变化,即使在开发后期;敏捷过程能够驾驭变化,保持客户的竞争优势; +3. 经常交付可以工作的软件,从几星期到几个月,时间尺度越短越好; +4. 业务人员和开发者应该在整个项目过程中始终朝夕在一起工作; +5. 围绕斗志高昂的人进行软件开发,给开发者提供适宜的环境,满足他们的需要,并相信他们能够完成任务; +6. 在开发小组中最有效率也最有效果的信息传达方式是面对面的交谈; +7. 可以工作的软件是进度的主要度量标准; +8. 敏捷过程提倡可持续开发;出资人、开发人员和用户应该总是维持不变的节奏; +9. 对卓越技术与良好设计的不断追求将有助于提高敏捷性; +10. 简单——尽可能减少工作量的艺术至关重要; +11. 最好的架构、需求和设计都源自自我组织的团队; 12. 每隔一定时间,团队都要总结如何更有效率,然后相应地调整自己的行为。 **解读:** @@ -290,15 +290,15 @@ W 模型是顺序性的、不可逆的,需求的变更和调整,依旧不方 IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准的定义:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。 符合下面4个条件之一就是缺陷: -1. 软件未达到规格说明书中规定的功能。 -2. 软件出现了产品说明书中指明的不会出现的错误。 -3. 软件功能超出了产品说明书中指明的范围。 +1. 软件未达到规格说明书中规定的功能; +2. 软件出现了产品说明书中指明的不会出现的错误; +3. 软件功能超出了产品说明书中指明的范围; 4. 软件难于理解,不易使用,运行速度慢,或者最终用户认为软件使用效果不好。 #### 1.4.2 产生原因 -1. 软件本身复杂性,产生大量不确定因素。 -2. 成本、时间限制,导致流程不够完善,文档缺失,缺乏严谨的评审。 -3. 人员本身技能水平、责任心、交流沟通不顺畅。 +1. 软件本身复杂性,产生大量不确定因素; +2. 成本、时间限制,导致流程不够完善,文档缺失,缺乏严谨的评审; +3. 人员本身技能水平、责任心、交流沟通不顺畅; 4. 不全面或者没有复审。 #### 1.4.3 缺陷来源 @@ -356,11 +356,11 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 #### 1.4.6 跟踪流程 最优化、最简单的生命周期是:(理想情况) -1. 测试员发现缺陷并记录缺陷报告。 -2. 缺陷报告交给程序员,此时缺陷状态是打开。(open state) -3. 程序员修改缺陷,此时缺陷状态是解决。(resolved state) -4. 缺陷报告交还测试员。 -5. 测试员确认已修复。 +1. 测试员发现缺陷并记录缺陷报告; +2. 缺陷报告交给程序员,此时缺陷状态是打开;(open state) +3. 程序员修改缺陷,此时缺陷状态是解决;(resolved state) +4. 缺陷报告交还测试员; +5. 测试员确认已修复; 6. 测试员关闭缺陷报告,此时缺陷状态是关闭。(closed state) 一个缺陷很可能会被反复打开→关闭。在日常工作过程中,由于开发修订其他缺陷影响、需求变更等因素缺陷可能会被反复打开→关闭。 @@ -378,26 +378,26 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 | 不能重现 | 开发不能复现这个缺陷,需要测试人员检查缺陷发现步骤 | #### 1.4.7 缺陷记录内容 -1. bug编号:bug的唯一id,以方便尽快找到此bug。 -2. bug标题:bug摘要,阐述bug大体内容。 -3. bug严重级别,优先级:作为缺陷是否修复以及缺陷修复优先级的决定性因素。 -4. bug产生的模块:记录bug所属模块,方便开发定位问题。 -5. bug对应的版本:bug对应的软件版本,方便后续的统计归档以及开发定位问题。 -6. bug描述:bug的产生环境、详细步骤、期望结果、实际结果。 +1. bug编号:bug的唯一id,以方便尽快找到此bug; +2. bug标题:bug摘要,阐述bug大体内容; +3. bug严重级别,优先级:作为缺陷是否修复以及缺陷修复优先级的决定性因素; +4. bug产生的模块:记录bug所属模块,方便开发定位问题; +5. bug对应的版本:bug对应的软件版本,方便后续的统计归档以及开发定位问题; +6. bug描述:bug的产生环境、详细步骤、期望结果、实际结果; 7. 附件:包括但不仅限于截图、日志、录像、所用到的示例文件以及应用;同样是方便复现解决缺陷的。 以上是上报bug、创建bug必须要做的,在后续我们还会对bug进行修复、复测等工作,那么为了记录后续工作,bug还应该包含: -1. bug状态:开始、修复中、修复完成、提测、测试中、测试通过/失败、关闭等,后续bug周期中会讲到。 -2. bug修订人:bug修订人员。 -3. bug复测人:通常是谁报的bug最后返回给谁测试,但是在某些情况下比如bug报告人任务积累太多/不在的情况下也会分给其他人,所以通常会记录bug复测责任人。 -4. bug修订说明:由bug修订人来写,说明bug产生原因,修改思路等。 -5. bug复测说明:由复测人员来写,说明复测过程,复测结果等。 +1. bug状态:开始、修复中、修复完成、提测、测试中、测试通过/失败、关闭等,后续bug周期中会讲到; +2. bug修订人:bug修订人员; +3. bug复测人:通常是谁报的bug最后返回给谁测试,但是在某些情况下比如bug报告人任务积累太多/不在的情况下也会分给其他人,所以通常会记录bug复测责任人; +4. bug修订说明:由bug修订人来写,说明bug产生原因,修改思路等; +5. bug复测说明:由复测人员来写,说明复测过程,复测结果等; 6. bug备注:备注,以便记录一些额外信息。 #### 1.4.8 缺陷预防 -**差错:**人在理解和解决问题的思维和行为过程中出现的问题,沟通不当,理解错误。(产生根源) -**错误:**软件内部问题,设计错误、编码错误。(内部原因) +**差错:**人在理解和解决问题的思维和行为过程中出现的问题,沟通不当,理解错误;(产生根源) +**错误:**软件内部问题,设计错误、编码错误;(内部原因) **失效:**软件系统运行时偏离了用户需求。(外部表现) ### 1.5 软件测试行业 @@ -411,14 +411,14 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 从国内软件公司软件测试部门的独立性来看,多数软件企业没有专门的测试技术部门,软件测试程序也不太规范,多数企业也不懂测试,对测试的投入资金过少。大多数是在经过简单地测试之后,就认为是没有问题了,就交于用户了,让用户去“测试”。于是,软件产品在没有经过严格测试的情况下就发布了。对国内消费类软件而言,经常出现一些已经推向市场的产品由于被发现有严重缺陷而导致大量退货的现象。定制的行业软件,常出现一再返工、无限期的修改和维护的现象。 当前国内软件测试行业主要存在以下问题: -1. 软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题。 -2. 面向对象的开发技术越来越普及,但是面向对象的测试技术却刚刚起步。 -3. 对于分布式系统整体性能还难以进行很好的测试。 -4. 对于实时系统缺乏有效的测试手段。 -5. 随着安全问题的日益突出,信息系统的安全性如何进行有效的测试与评估,成为世界性的难题。 -6. 测试的自动化程度不高,手工测试过多,自动化测试工具和手工测试人员也缺乏较好的结合。 -7. 缺乏软件测试意识、对其重视不够。 -8. 在软件开发基本完成后才进行测试,也缺乏软件测试的统一标准。 +1. 软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题; +2. 面向对象的开发技术越来越普及,但是面向对象的测试技术却刚刚起步; +3. 对于分布式系统整体性能还难以进行很好的测试; +4. 对于实时系统缺乏有效的测试手段; +5. 随着安全问题的日益突出,信息系统的安全性如何进行有效的测试与评估,成为世界性的难题; +6. 测试的自动化程度不高,手工测试过多,自动化测试工具和手工测试人员也缺乏较好的结合; +7. 缺乏软件测试意识、对其重视不够; +8. 在软件开发基本完成后才进行测试,也缺乏软件测试的统一标准; 9. 高校从师资储备到专业设置再到人才培养的机制薄弱。 国内外软件测试差距 @@ -549,19 +549,19 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 ### 2.2 测试的目的和原则 #### 2.2.1 测试的目的 -1. 测试不仅仅是找出错误。通过分析错误产生的原因和错误的发展趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便即时改进。 -2. 检测产品是否符合用户要求。 -3. 没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。 +1. 测试不仅仅是找出错误。通过分析错误产生的原因和错误的发展趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便即时改进; +2. 检测产品是否符合用户要求; +3. 没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法; 4. 提升用户体验。 #### 2.2.2 测试的原则 -1. 软件测试是证伪而非证实。 -2. 尽早地、不断地进行测试。 -3. 重视无效数据和非预期的测试。 -4. 应当对每一个测试结果做全面的检查。 -5. 测试现场保护和资料归档。 -6. 程序员应避免检查自己的程序。 -7. 充分注意测试中的集群现象。 +1. 软件测试是证伪而非证实; +2. 尽早地、不断地进行测试; +3. 重视无效数据和非预期的测试; +4. 应当对每一个测试结果做全面的检查; +5. 测试现场保护和资料归档; +6. 程序员应避免检查自己的程序; +7. 充分注意测试中的集群现象; 8. 用例要定期评审,适时补充修改用例。 ### 2.3 测试分类 @@ -610,10 +610,10 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 选择测试用例是软件测试员最重要的一项任务,不正确的选择可能导致测试量过大或者过小,甚至测试目标不对。准确评估风险,把无穷尽的可能性减少到可以控制的范围是软件测试成功的诀窍。 #### 2.4.2 测试用例的作用 -1. 指导测试的实施 -2. 评估测试结果的度量基准 -3. 保证软件的可维护性和可复用性 -4. 分析缺陷的标准 +1. 指导测试的实施; +2. 评估测试结果的度量基准; +3. 保证软件的可维护性和可复用性; +4. 分析缺陷的标准。 #### 2.4.3 测试用例设计准则 1. 有效性 @@ -637,50 +637,50 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 11. 非法用户:没有注册过;注册过但是用户名/密码不匹配的;本文特指未注册过的用户 测试用例维护一般分为以下几种情况: -1. 产品特性没变:漏测或者环境变更,这个时候版本没变,测试用例增加和修改均可 -2. 原有特性变化:功能变化,只能新增,不能修改,还要兼容老版本 -3. 原有功能取消:测试用例在新版本上置为“空”标志或者“无效状态”,对于先前版本有效 -4. 新增功能:新增用例,对应新版本标志 +1. 产品特性没变:漏测或者环境变更,这个时候版本没变,测试用例增加和修改均可; +2. 原有特性变化:功能变化,只能新增,不能修改,还要兼容老版本; +3. 原有功能取消:测试用例在新版本上置为“空”标志或者“无效状态”,对于先前版本有效; +4. 新增功能:新增用例,对应新版本标志。 #### 2.4.5 测试用例设计误区 -1. 测试用例设计等同于测试输入数据设计 -2. 测试用例设计越详细越好 -3. 追求测试用例设计“一步到位” -4. 将多个测试条件混在一个用例中 +1. 测试用例设计等同于测试输入数据设计; +2. 测试用例设计越详细越好; +3. 追求测试用例设计“一步到位”; +4. 将多个测试条件混在一个用例中。 ### 2.5 测试停止标准 #### 2.5.1 软件测试停止总体标准 -1. 测试超过了预定时间 -2. 执行了所有的测试用例,并没有发现故障 -3. 使用特定的测试用例设计方法作为判断测试停止的基础 -4. 给出测试停止的要求 -5. 根据经单位时间内查出故障的数量决定是否停止测试 -6. 软件系统经过了单元、集成、系统测试,分别达到停止标准。通过验收测试,得出验收测试结论。 -7. 软件项目暂停以进行调整,测试应随之暂停,并备份暂停点数据。或者软件项目开发生命周期内出现重大估算、进度偏差,需暂停或终止时,测试应随之暂停或终止,并备份数据 +1. 测试超过了预定时间; +2. 执行了所有的测试用例,并没有发现故障; +3. 使用特定的测试用例设计方法作为判断测试停止的基础; +4. 给出测试停止的要求; +5. 根据经单位时间内查出故障的数量决定是否停止测试; +6. 软件系统经过了单元、集成、系统测试,分别达到停止标准。通过验收测试,得出验收测试结论; +7. 软件项目暂停以进行调整,测试应随之暂停,并备份暂停点数据。或者软件项目开发生命周期内出现重大估算、进度偏差,需暂停或终止时,测试应随之暂停或终止,并备份数据。ß #### 2.5.2 软件测试各阶段停止标准 ##### 单元测试停止标准 -1. 单元测试用例已经通过评审 -2. 按照单元测试计划完成了所有规定单元测试 -3. 达到了测试计划中关于单元测试所规定的覆盖率要求 -4. 被测试的单元每千行代码必须发现至少3个错误 -5. 软件单元功能与设计一致 -6. 单元测试中发现的错误已经得到修改,各级缺陷修复率达到标准 +1. 单元测试用例已经通过评审; +2. 按照单元测试计划完成了所有规定单元测试; +3. 达到了测试计划中关于单元测试所规定的覆盖率要求; +4. 被测试的单元每千行代码必须发现至少3个错误; +5. 软件单元功能与设计一致; +6. 单元测试中发现的错误已经得到修改,各级缺陷修复率达到标准。 ##### 集成测试停止标准 -1. 集成测试用例已经通过评审 -2. 按照集成测试计划和增量集成策略完成了整个系统的集成测试 -3. 达到了测试计划中关于集成测试所规定的覆盖率要求 -4. 被测试的集成工作版本每千行代码必须发现至少2个错误 -5. 集成工作版本满足设计定义的各项功能、性能要求 -6. 在集成测试中发现的错误已经得到修改,各级缺陷修复率达到标准 +1. 集成测试用例已经通过评审; +2. 按照集成测试计划和增量集成策略完成了整个系统的集成测试; +3. 达到了测试计划中关于集成测试所规定的覆盖率要求; +4. 被测试的集成工作版本每千行代码必须发现至少2个错误; +5. 集成工作版本满足设计定义的各项功能、性能要求; +6. 在集成测试中发现的错误已经得到修改,各级缺陷修复率达到标准。 ##### 系统测试停止标准 -1. 系统测试用例已经通过评审 -2. 按照系统测试计划完成了系统测试 -3. 达到了测试计划中关于系统测试所规定的覆盖率要求 -4. 被测试的系统每千行代码必须发现至少1个错误 -5. 系统测试满足设计需求规格说明书要求 -6. 在系统测试中发现的错误已经得到修改,各级缺陷修复率达到标准 +1. 系统测试用例已经通过评审; +2. 按照系统测试计划完成了系统测试; +3. 达到了测试计划中关于系统测试所规定的覆盖率要求; +4. 被测试的系统每千行代码必须发现至少1个错误; +5. 系统测试满足设计需求规格说明书要求; +6. 在系统测试中发现的错误已经得到修改,各级缺陷修复率达到标准。 ### 2.6 知识点总结 1. 软件测试的目的和原则 @@ -697,11 +697,11 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 黑盒测试从用户的角度出发,以输入数据与输出数据的对应关系进行测试,数据驱动。 黑盒测试注重测试软件的功能需求,主要视图发现下列几类错误 -1. 功能不正确或遗漏 -2. 界面错误 -3. 数据库访问错误 -4. 性能错误 -5. 初始化和终值错误 +1. 功能不正确或遗漏; +2. 界面错误; +3. 数据库访问错误; +4. 性能错误; +5. 初始化和终值错误。 ### 3.2 等价类划分 等价类是指某个输入域的子集合。在该子集合中,测试某等价类的代表值就等于对这类其他值的测试,对于揭露程序的错误是等效的。 @@ -713,17 +713,17 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 无效等价类:和有效等价类相反,是指对程序的规格说明无意义、不合理的输入数据构成的集合。 #### 3.2.1 划分原则 -1. 在输入条件规定了取值范围的情况下,可以确立一个有效等价类(在取值范围之内)和两个无效等价类(小于取值范围和大于取值范围)。 -2. 在输入条件规定了取回个数的情况下,可以确立一个有效等价类(在取值个数范围之内)和两个无效等价类(小于取值个数和大于取值个数)。 -3. 在输入条件规定了输入值的集合的情况下,可以确立一个有效等价类和一个无效等价类。 -4. 在输入条件规定了“必须如何”条件的情况下,可以确立一个有效等价类和一个无效等价类。 -5. 在输入条件是一个布尔值的情况下,可以确立一个有效等价类和一个无效等价类。 -6. 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的将情况下,可以确立n个有效等价类和一个无效等价类。 -7. 在规定了输入数据必须遵守规则的情况下,可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。 +1. 在输入条件规定了取值范围的情况下,可以确立一个有效等价类(在取值范围之内)和两个无效等价类(小于取值范围和大于取值范围); +2. 在输入条件规定了取回个数的情况下,可以确立一个有效等价类(在取值个数范围之内)和两个无效等价类(小于取值个数和大于取值个数); +3. 在输入条件规定了输入值的集合的情况下,可以确立一个有效等价类和一个无效等价类; +4. 在输入条件规定了“必须如何”条件的情况下,可以确立一个有效等价类和一个无效等价类; +5. 在输入条件是一个布尔值的情况下,可以确立一个有效等价类和一个无效等价类; +6. 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的将情况下,可以确立n个有效等价类和一个无效等价类; +7. 在规定了输入数据必须遵守规则的情况下,可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则); 8. 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将改等价类进一步划分为更小的等价类。 #### 3.2.2 设计测试用例步骤 -1. 形成等价类表,每一等价类规定一个唯一编号 -2. 设计测试用例,使其尽可能多的覆盖尚未覆盖的有效等价类 +1. 形成等价类表,每一等价类规定一个唯一编号; +2. 设计测试用例,使其尽可能多的覆盖尚未覆盖的有效等价类; 3. 设计一个新的测试用例,使其只覆盖一个无效等价类,重复这一步直到所有无效等价类均被覆盖。 #### 3.2.3 等价类举例 我们要测试学习成绩这一输入框(假设总成绩都是100),那么我们就可以如下图划分,有效的成绩是>=0且<=100的,无效的是<0和>100这两部分。 @@ -737,7 +737,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 2. 无效等价类1:小于0的负数,比如:-1; 3. 无效等价类2:大于100的数,比如:121; 4. 无效等价类3:其他任意非数字字符,比如:a、你、\; -5. 无效等价类4:空字符 +5. 无效等价类4:空字符。 **等价类最终必须是分割到最小单位,只有这样才能保障测试覆盖全面。** @@ -751,16 +751,16 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 边界值分析法是等价类划分法的补充。顾名思义,边界值分析法是对输入的边界值进行测试。从实践中我们可以发现,人们无论是在生活中还是在工作中往往会忽略边界值的条件,所以在输入或者输出的边界上会发生大量的错误。因此,在测试用例设计中,需要对输入的条件进行分析并且提取其中的边界值条件,通过对这些边界值的测试来查出更多的错误。 常见的边界值: -1. 文本框接受字符个数,比如用户名长度、密码长度等。 -2. 报表的第1行和最后1行。 -3. 数组元素的第1个和最后1个。 +1. 文本框接受字符个数,比如用户名长度、密码长度等; +2. 报表的第1行和最后1行; +3. 数组元素的第1个和最后1个; 4. 循环的第1次、第2次和倒数第1次、最后1次。 #### 3.3.1 设计原则 -1. 如果输入条件规定了值的范围,则应取刚达到这个范围边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。 -2. 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。 -3. 如果规格说明书给出的输入域或输出域是有序集合,则应选取集合的第1个元素和最后1个元素作为测试用例。 -4. 如果程序中使用了内部数据结构,则应选择内部数据结构边界上的值作为测试用例。 +1. 如果输入条件规定了值的范围,则应取刚达到这个范围边界的值,以及刚刚超越这个范围边界的值作为测试输入数据; +2. 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据; +3. 如果规格说明书给出的输入域或输出域是有序集合,则应选取集合的第1个元素和最后1个元素作为测试用例; +4. 如果程序中使用了内部数据结构,则应选择内部数据结构边界上的值作为测试用例; 5. 分析规格说明,找出其他可能的边界条件。 #### 3.3.2 两类方法 1. 一般边界值分析 @@ -776,7 +776,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 > 选取的边界值数据应该包括: > -> -1,0,1,59,60,61,79,80,81,99,100,101 +> -1、0、1、59、60、61、79、80、81、99、100、101 通常情况下,软件测试所包含的边界检验有以下几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等,而相应地,这些类型的边界值应该在最大/最小,首位/末尾,上/下,最快/最慢,最高/最低,最短/最长,空/满等情况下。 @@ -796,9 +796,9 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 等价类划分法和边界值分析法只是孤立地考虑各个输人数据的测试效果,没有考虑输入数据的组合及其相互制约关系,而决策表考虑了多种条件的组合情况。决策表又称为判定表,分析多种逻辑条件(if-else、switch-case等)与执行之间的关系。 决策表由4部分组成: -1. 条件桩:列出了问题的所有条件,通常认为列出的条件次序无关紧要。 -2. 动作桩:列出了问题规定可能采取的操作,这些操作的排列顺序没有约束。 -3. 条件项:列出针对条件桩的取值,在所有可能情况下的真假值。 +1. 条件桩:列出了问题的所有条件,通常认为列出的条件次序无关紧要; +2. 动作桩:列出了问题规定可能采取的操作,这些操作的排列顺序没有约束; +3. 条件项:列出针对条件桩的取值,在所有可能情况下的真假值; 4. 动作项:列出在条件项的各种取值情况下应该采取的动作。 规则:任何条件组合的特定取值及其相应要执行的操作。在决策表中贯穿条件项和动作项的列就是规则。显然,决策表中列出多少条件取值,也就有多少规则,条件项和动作项就有多少列。 @@ -808,26 +808,26 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 所有条件都是逻辑结果(即真/假、是/否、0/1)的决策表称为有限条件决策表。如果条件有多个值,则对应的决策表叫做扩展条目决策表。决策表设计测试用例,条件解释为输入,动作解释为输出。 决策表适合以下特征的应用程序: -1. if-then-else分支逻辑突出。 -2. 输入变量之间存在逻辑关系。 -3. 涉及输入变量子集的计算。 -4. 输入和输出之间存在因果关系。 +1. if-then-else分支逻辑突出; +2. 输入变量之间存在逻辑关系; +3. 涉及输入变量子集的计算; +4. 输入和输出之间存在因果关系; 5. 很高的圈复杂度。 #### 3.4.1 应用举例 决策表(判定表)设计测试用例的具体步骤如下: -1. 确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2种规则。 -2. 列出所有的条件桩和动作桩。 -3. 填入条件项。 -4. 填入动作项,得到初始判定表。 -5. 简化,合并相似规则(相同动作)。 +1. 确定规则的个数。假如有n个条件,每个条件有两个取值(0,1),故有2种规则; +2. 列出所有的条件桩和动作桩; +3. 填入条件项; +4. 填入动作项,得到初始判定表; +5. 简化,合并相似规则(相同动作); 简化就是合并多条具有相同的动作的规则,并且其条件项之间存在极为相似的关系。 ![简化规则](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/juecebiao2.jpg) 需求:输入三边值,判定是哪种三角形:非三角形、不等边三角形、等腰三角形、等边三角形 -1. 绘制初始三角形判定决策表 -2. 优化1的产出 -3. 设计测试用例 +1. 绘制初始三角形判定决策表; +2. 优化1的产出; +3. 设计测试用例。 条件桩: * abc能构成三角形 @@ -874,10 +874,10 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 决策表把复杂问题的各种可能情况一一列出,易于理解。但是,决策表不能表达重复执行动作的缺点。 使用判定表设计测试用例的条件如下: -1. 规格说明以判定表形式给出,或很容易转换成判定表。 -2. 条件的排列顺序不会也不影响执行哪些操作。 -3. 规则的排列顺序不会也不影响执行哪些操作。 -4. 每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则。 +1. 规格说明以判定表形式给出,或很容易转换成判定表; +2. 条件的排列顺序不会也不影响执行哪些操作; +3. 规则的排列顺序不会也不影响执行哪些操作; +4. 每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则; 5. 如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要。 @@ -909,16 +909,16 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 ![约束图](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/yueshutu.png) -* E(互斥):原因不会同时成立,最多1个成立,可以都不成立 -* I(包含):原因中至少一个成立,不能同时为0 -* O(唯一):原因中有且只有一个成立 -* R(要求):原因中a出现,b必须出现,a=1则b=1,a=0的话,b随便。QQ登录的例子a为自动登录,b是记住密码 -* M(屏蔽):a为1时,b必须是0,a=1,则b=0,如果a=0,b随便 +* E(互斥):原因不会同时成立,最多1个成立,可以都不成立。 +* I(包含):原因中至少一个成立,不能同时为0。 +* O(唯一):原因中有且只有一个成立。 +* R(要求):原因中a出现,b必须出现,a=1则b=1,a=0的话,b随便。QQ登录的例子a为自动登录,b是记住密码。 +* M(屏蔽):a为1时,b必须是0,a=1,则b=0,如果a=0,b随便。 #### 3.5.2 设计因果图测试用例步骤 -1. 分析软件规格说明,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),给每个原因和结果赋予标识符。 -2. 分析原因与结果之间、原因与原因之间对应的逻辑关系,用因果图表示。 -3. 由于语法或环境限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现,在因果图上用一些记号表明这些特殊情况的约束或限制条件,把因果图转换为判定表。 +1. 分析软件规格说明,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),给每个原因和结果赋予标识符; +2. 分析原因与结果之间、原因与原因之间对应的逻辑关系,用因果图表示; +3. 由于语法或环境限制,有些原因与原因之间、原因与结果之间的组合情况不可能出现,在因果图上用一些记号表明这些特殊情况的约束或限制条件,把因果图转换为判定表; 4. 从判定表的每一列产生出测试用例。 对于逻辑结构复杂软件,先用因果图进行图形分析,再用判定表进行统计,最后设计测试用例。当然,对于比较简单的测试对象,可以忽略因果图,直接使用决策表。 @@ -961,13 +961,13 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 **优点:** -1. 考虑多个输入之间的相互组合、相互制约的关系 -2. 指出需求规格说明书中存在的不完整性和二义性 -3. 帮助测试人员按照一定的步骤高效的开发测试用例 +1. 考虑多个输入之间的相互组合、相互制约的关系; +2. 指出需求规格说明书中存在的不完整性和二义性; +3. 帮助测试人员按照一定的步骤高效的开发测试用例。 **缺点:** -1. 作为输入条件的原因和输出结果之间的因果关系,很难从规格说明书得到 -2. 此方法得到的用例数量规模大 +1. 作为输入条件的原因和输出结果之间的因果关系,很难从规格说明书得到; +2. 此方法得到的用例数量规模大。 ### 3.6 场景法 通过尝尽该描述的业务流程(业务逻辑),设计用例来遍历场景(路径),验证系统功能的正确性。 场景法重点是测试流程,因此每个流程用一个用例验证即可,流程测试没问题不代表系统功能没问题,还需要单步进行测试,结合前面的方法。 @@ -1015,21 +1015,21 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 该方法强调的是对被测试软件的需求理解以及设计实现的细节把握,当然还有个人的能力。那么显而易见地,这个方法的缺点就是太过依赖个人能力,难以系统化。因此,这个方法一般是作为测试用例设计的补充,而不是单独用来设计测试用例。在回归测试中应用较多。 错误推测法一般采用如下技术: -1. 有关软件设计方法和实现技术。 -2. 有关前期测试阶段结果的知识。 -3. 测试类似或相关系统的经验,了解以前这些系统曾在哪些地方出现缺陷。 +1. 有关软件设计方法和实现技术; +2. 有关前期测试阶段结果的知识; +3. 测试类似或相关系统的经验,了解以前这些系统曾在哪些地方出现缺陷; 4. 典型的产生错误的知识,如被零除错误。 #### 3.7.2 优点和缺点 **优点:** -1. 不用设计等价类的测试用例,将多个等价类的测试合成一个随机测试,可以以较少代码实现测试代码的编写。 -2. 当等价类设计不确切或不完全时,测试会产生遗漏,而使用错误推测法则是按照概率进行等价类覆盖。不论存在多少个等价类,只要随机数据个数足够,就能保证各个等价类被覆盖的概率足够高,能够有效弥补等价类分法设计不充分的缺陷。 +1. 不用设计等价类的测试用例,将多个等价类的测试合成一个随机测试,可以以较少代码实现测试代码的编写; +2. 当等价类设计不确切或不完全时,测试会产生遗漏,而使用错误推测法则是按照概率进行等价类覆盖。不论存在多少个等价类,只要随机数据个数足够,就能保证各个等价类被覆盖的概率足够高,能够有效弥补等价类分法设计不充分的缺陷; 3. 采用错误推测法进行测试,每次执行测试时,测试的样本数据可能都不相同,执行次数愈多,错误暴露的概率愈大。 **缺点:** -1. 错误推测法中的随机数据很难覆盖到边界值,无法保证测试的充分性。 -2. 错误推测法进行自动化测试的难度较大。有些程序很难用程序来自动验证,这使得程序结果的验证工作难度变大。 -3. 当等价类的范围较小,这些范围较小的等价类被覆盖的概率也是很小的,错误推测法难以测试到。 +1. 错误推测法中的随机数据很难覆盖到边界值,无法保证测试的充分性; +2. 错误推测法进行自动化测试的难度较大。有些程序很难用程序来自动验证,这使得程序结果的验证工作难度变大; +3. 当等价类的范围较小,这些范围较小的等价类被覆盖的概率也是很小的,错误推测法难以测试到; 4. 随机测试不可以代替常规的功能或非功能测试,因为其随意性大,没有一套完整严格的方法且并非有章可循的测试技术。 #### 3.7.3 常见错误 @@ -1054,18 +1054,18 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 ### 3.8 综合策略 黑盒测试方法有等价类划分、边界值分析、决策表、因果图、场景法、错误推测法等,每种测试方法都有其各自的特点和适用场合。 软件测试专家Myers给出了黑盒测试方法中各种测试方法的使用策略: -1. 在任何情况下都必须使用边界值分析方法。经验表明,用这种方法设计的测试用例发现程序错误的能力最强。 -2. 必要时使用等价类划分方法补充一些测试用例。 -3. 用错误推测法再追加一些测试用例。 -4. 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例。 +1. 在任何情况下都必须使用边界值分析方法。经验表明,用这种方法设计的测试用例发现程序错误的能力最强; +2. 必要时使用等价类划分方法补充一些测试用例; +3. 用错误推测法再追加一些测试用例; +4. 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例; 5. 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法。 对于功能性测试技术,可以根据如下条件进行选择: -1. 如果变量是独立的,则可以用定义域测试和等价类测试。 -2. 如果变量不是独立的,可采用决策表测试。 -3. 如果为单缺陷假设,则可采用边界值分析和健壮性测试。 -4. 如果为多缺陷假设,可采用最坏情况测试、健壮最坏情况测试和决策表测试。 -5. 如果程序包含大量例外处理,可采用健壮性测试和决策表测试。 +1. 如果变量是独立的,则可以用定义域测试和等价类测试; +2. 如果变量不是独立的,可采用决策表测试; +3. 如果为单缺陷假设,则可采用边界值分析和健壮性测试; +4. 如果为多缺陷假设,可采用最坏情况测试、健壮最坏情况测试和决策表测试; +5. 如果程序包含大量例外处理,可采用健壮性测试和决策表测试; 6. 如果变量引用的是逻辑量,可采用等价类测试用例和决策表测试。 ### 3.9 知识点总结 @@ -1104,7 +1104,12 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 ### 4.4 逻辑覆盖 逻辑测试,又称为控制流覆盖,是一种按照程序内部逻辑结构和编码结构设计测试用例的测试方法。目的是要测试程序中的语句,判定(控制流能够分解为不同路径的程序点),条件(形成判定的原子谓词)等。根据覆盖的标准不同,分为语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、修正条件判定覆盖、增强条件判定覆盖、条件组合覆盖和路径覆盖等标准。 - +#### 4.4.1 语句覆盖 +#### 4.4.2 判定覆盖 +#### 4.4.3 条件覆盖 +#### 4.4.4 条件判定覆盖 +#### 4.4.5 +#### 4.4.6 ### 4.5 路径分析 ### 4.6 控制结构测试 ### 4.7 数据流测试 -- Gitee From 0f949572c7ab2076e2dbc691c6c12ddbb6951fb2 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Sun, 19 Sep 2021 23:34:51 +0800 Subject: [PATCH 29/63] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=E6=A8=A1=E6=9D=BF=E5=88=9D=E7=A8=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 6148 bytes ...5\345\221\212\346\250\241\346\235\277.doc" | Bin 0 -> 92672 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 "\346\265\213\350\257\225\347\233\270\345\205\263\346\226\207\346\241\243\346\250\241\346\235\277/\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.doc" diff --git a/.DS_Store b/.DS_Store index f164f471049cc4843ce648fc54f74f0a1c69533f..e357c7811c6aacb9bef18bc859ae65db276f6bab 100644 GIT binary patch delta 190 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 Date: Mon, 20 Sep 2021 00:14:34 +0800 Subject: [PATCH 30/63] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E6=8A=A5=E5=91=8A?= =?UTF-8?q?=CE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...5\345\221\212\346\250\241\346\235\277.doc" | Bin 0 -> 162 bytes ...5\345\221\212\346\250\241\346\235\277.doc" | Bin 92672 -> 239616 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 "\346\265\213\350\257\225\347\233\270\345\205\263\346\226\207\346\241\243\346\250\241\346\235\277/~$\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.doc" diff --git "a/\346\265\213\350\257\225\347\233\270\345\205\263\346\226\207\346\241\243\346\250\241\346\235\277/~$\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.doc" "b/\346\265\213\350\257\225\347\233\270\345\205\263\346\226\207\346\241\243\346\250\241\346\235\277/~$\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.doc" new file mode 100644 index 0000000000000000000000000000000000000000..3e47a945653c04a02ddd13bd4d8b5cefe4be4a72 GIT binary patch literal 162 zcmd;%%1^CSaL!0A%}Zw>8gMg2G2}C(GE_1sFgP=009mCBc?=)}QW=UEiW&47s-W`v z4CO#p5kodm%!t7Nhz)^yUgVYMDlp{tfAjOsz1pqM5DZk4#!v!On+Q~!$`As?#Xx>0 G&{O~tycA>VxMiD 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

lKn7uo|4Q_%Apd@Gm%?AVnxV&QS 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

_qx9-pXFaF{$!jw>});B#e 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 z℘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 delta 18389 zcmc)S4SWq(-oWv5??e)j2$4h*5hTP*gSbg+`*HX6DSy zIsZ9x?wPqa3J=yV{G`sZxHeX$)H*m{4V2nI!h-8JZrqS%Yw;$kI+bf{EydPI>%w7r zlr<*c6&7~>YOGjXPakN_EI7gD@{;MCC|CN2roCKQobMdXdAObK?ab3ca-=p>YAe(4 zm=2|U#`@9ON|jNE%oeIZWob&4w^V948Lu&wS8dZ-Y>?ktsoktkY@<{T(}fQzC9zn< zR9<&7l|%fCjW@C3hKco*%45Mgb}&hQ&a081QTLT?m<=tsxg;w&vb>C`Y-oNNn;TPO zdn1oA-#A;TP!{IcU2ATh%Kp>qsD$csVr+QxjwJ-A>Uf|(k$0CzthI{?)g-uG*vW`a`Z`;a(HoajC`)#p4Pc=lv3w8u2Dr}YJ||3 zcb>u6XwR%`N5;Hy=GHyPiH`LyOH^u)g=BOWBgf5Cqarsi_sr{&K4mte+@8fX4}9x# zs@<){t&3fo$%UEiuT;;<{=U<-I(C(;lJxiL_3&|~luaL8zjs4dIzdHqCM-n1lm0F&z`NWu$gjrnyg)))-<89s~8D1<54Qt-I!BUNac-Y+kzwKb^lOJ zOH*EXc+}UTT8HGSybCHcmlgV=9+6?~tiJQK$$zS&l((-XBsa0{DEG>7Nx@MKo%zf= zXkyONEh)Ti^#+yWk}AALR`_w*@dU>R4O8f zUJj{^l-h^kbcLreGlX6(L#d@G&d~F^{6b&UB@qMl)O!P%wuVe)S%5xeK|r|c`uA(B z0`~YS>+6=h=E`qkPEnma{V(^nu|yPi9ojID66RwDW}--+-Zds*BdND=7U%WnyGH4o zyGHA)yz1zmbq&%aSeJW-1ikNFTbR21aF|qldZ;;sH=Tl3o)GH9yts$AzV<$U=ZU-D z*J3(%!3}-qxz2~avqxBGIkPo0s8;7G{Y6~DReTG@nXtkO-U!v(cZ&(>MXC?xU@i(V zUmx9Ve05#d`_@)hZ&zJ)@9t4qx0ax(Hd)Rt-mbXiI21(c!;tMMwcPgIz z>FQse<~X%Q&O6ZGwZ>>NTxLMeRTelU$xIx;X2Lop0vFb>(s!AumR1S_x-FQ61w=AKWrky;$b z37p0mT*4K6gRAi7o3RC3 z^=JBYt`6ZOmfSvs-hF?TzOHXfLG_2LGmJlZtTHcTsVIC_|COE%a)fF>?~VbcF*DChvhY`da==^ z_F$xRYqaF*K9TNU-Lm^LuDUhXU5#mNed>q(Th#IyrJ|*V`>-EJ@EMNcI4(j_Tz}L@ z0|X%$p$LNv6(bRap%{kY7>RMn#$-$lQr%S^iF_2I469I%)p!-JVGU&LxegWBjng<2 zq`%s$U6bXPDU*tEj*&MqBqfxlPpXihWY;qDpqP)WAMSex{5*YcyE9blEY9N!zQJ`U z8j=-W2!;)bupsxj znvNtj3dJbF3amsKR_RY=#_AQREu5pyz_8kaRXo_!afUapEyrEG$p5X5vpB13xQ&~) zMA(snG)zFQJ|HWm;W|B+J@Jy{)Y?rv=}ceRqW_GCk9@5#1M z>aEy?-PnV@ID)JA7T53{uEY80k`GiXRK&T?&O?Cqvo)c?y3;t!1|-S^UUs-I_ARVzI+G|~A; zELnLTHzn)eH*Fu{dQ_5F<55Xxy+>4&Zo_lV&b#pJ7X#%<-^+`Gvixs+^w6beW$xlE zpWLEZ!*k|6V~v+|ogwG5U&{Kv&=TKz-1mk3o_J?`wnOhSrA_?+CI5^^g_SQ%+hnP{ znm@s!XN3h-=Ff<-Ru<39uvCtEBFn2lPE;{UumUSlhE*uX37o_!oWXfqg!cei4gBDb z`UpZO!jOl2%)l(n#vH6dIacG<0cwzXjfDR|c7X4`{l~?#|M>f#_q?@!{hHsE{cgq5 zXPzl~^2w!-KmN$nsS_uz88^<^SZciahvaSxe3?f@@~-sEd2t0S`qhjw7RkG+8=C8% zvq(MM#zHDEB2Q9*A{)_Z5rN8oagSxDU49#UHderzZ|7NB<`m#yE`sVDUVbMn1CC(CGiK{uD5=SG3 z5<7{TgiAuz0HMgmWX!-Ge6Rm)d$|6@$N+r+Po~B!Xf0FA5q(2+xc=gn0R5!}5tiNh zgYSmxYZnAqwiqehXGcRl?&)BC$*+5M3|13!oT1}E{lpvzo^qxn5c1(NF~^m%y4LC& z9tbIr$}5Y7&mW_7!IVZyH~~f}^GQodcSB0M7yEG#pWsuR!FA9!loj6agFn)cjtpdC zD2Ac92X7@3zE-iWX*+sK+XODZ} z0i!YLCyP$&pB84Psc55QQW`0N9N9Rk9L+dLIq4(#45whrq}N0~W@PGPC)o9(`K{|8 zG!7xt5A`><$2R%Uyy$K7%1IWmxx}FV&=hBREAEZ3vmjkaR%q{4X)xEu0stbefI3xlgEx7*&Dp+ z_44xa;-{XRHEY6zF(XC{9W7%!#O3SQaz}%~r5Z%(YQK&pIp1P+2j|j~#{kg>VemoJ-aaTTed9Ft1HLphE()HUvoVY%`@)r_sxqK1?pPc zhQ0oyGB_jCrD^5z;>pBS%3!_@YJ{@Jj47@cTwDKGTr=4BP>jSVjKNP8SK0SC$fYWm z>CY6`RZ-3s7pF-XCSxk{P$QHzW=wG%(#&~Qek`uCzkHaxou4YMvpLQjEWi@{OmX#Y z?ryJAhNW1BV$=v_jTuv1-(l-J=m%tf(mlU`Qk3DRimU8<6{OpL4L?&{r?zm%Rmx!g z)Tt558Z)N2HjBQa_PUOJZ^2F&pIkpxT+N?~2RPo(6xTyUh87p6Nf{2}5ad(2Mks5{ znBw|W%pJv5_9vh6M{yh{@KeQA_AR4_Gq{MKDXu9k-R)J%a0yrN4Qhn4#*8Vh=h*rV z`T^OWjD)_!b*QYLF0RJ@tsKJ(zVL%T>Z1XI5sENGAQDk%j)GX;+93{OFb>(6fLvU} zC0K`W00bix?GT5q=!Rh!j;YAQd=#M+Wmto?SceL1#+D&GB;QVAC%(fq_v^o%uM20+ zd~x{jg#%xF@csukzutYfa^35zOP4TYjLyA*1=E>8TardaGp-dPYUM)vL8@C|=Rok|m8x8kRIFX;9Lbq#;Qo zk_IG=M;eYa8gql8u{hg_8p>&eFH+HSD0keE`sn!qqb`^SyLWj;|9E4#{?CmO`WGWx zH~FjiK=NzZ>Q@yFGDd%>YDxi5;r(J&y*`25r#M@t^9hP8WntO#-p9C_q}5-CQ7dnE z&AL_Bj`20=bmSo)GcXH}V-+sK_kON>1S1q-_wg2iNJODIqR|quXoGf$LkGmehD6x! z*H>)r-%y%{3UvLVhDT(17b>r8u5TILlfy}IjG{;}jKj;JjiVYzG>%r=k@}E74e7{$ z^FcttXVu{(alkyY|Nmp=9uBha&JOgRJV=YWeW_$G`oeb~E8xem6LV~t>p44i>e&;$ zaC7|^uxud~VF{Mv1(c!;t5A+D*ovLlha>n5r*ILM@C~lQI*e}Ki#KohA{e0vLo`|< z9yTPxjudo5Du!YhMq(7kU>v3*5BZpbLd-`I7GNQ+UAlJu{P{2Se{K!Y1Gcr&+iwfg zXi0k7wyN|la>mWIm719gY828qpmDHU4x-N)8Eg4k-!?K_UpO+t@>k}=^|*Hf>c3|` zjc?0h=gL?M&)Z_U=%aU(*Yj$kw3gNfTUu4ajXS&f`p6^tBz~gXY2Qq9+Wl+S=|^YX zlIpn6SmsH+_ldELlzTsR(>|SP_nsR5$;eB}oj1jl*O_+btvG4qCFRU3zn?YA>P|cJ z@|*HguDs5aJFll+c2^zUd5wDUi(q#R?YdDLbIPcfT{r4wSDt#g)9!s5^|I?mz3j?U zFL&CV*Ql3WH|iz7TQ%zCPCN4^SJ%s#a@H%^biUkacV445{EpdOujJ}_C0EYnIsQyKKwyLAle}g?a>hfF$~l32xdb5 z(q%d1Ph{S)@+UIylGuvvIEF7_<Ow7V#_!U-SHFn@V?80t*feY~E*VuljhXBOEj=>m$ zp%{ioQHbB-MU-I`b`h4sqy@A;?2MrsEM5;|08pDs09U z{1qqhJ#Ij8Wm(Yztr6Cfw_fOtzLKUHH3|s6QPrS@7HVv8s(0;D|5L;$2XPtE9Hl#EgKwx*2uDf4 zQG5=KBelf6HIF#0Kn~U)gCGYTjOmc-N&y~25v1x;m?fx!gh2|n9S0#HkwSigOZXQ5 z18)i^p_0PaLjojhQjyNSbY$5iB!*I}DJX=*Q);*Xt0A$K+P(q#*?tA8uo?RxahFJZ zjB}84AW^x3Frp#nBN9y^k%~bwI@hHmldz>?6ml>gGax5V!YLD{GgmtNiIv88vG zo>@9c=@>gh`a`4NlYUM5H0i(AL;9^vkaN2Y(rxX9bXOlix~oqi-PK9Rsr;%gSGx35 zmmvMr|3LaDMK>V*lMkeS3WRh+(gjJkBVCTsjTpVbom~BUh|d z$6GOOmhpEUWV~Gk8DDe9=NwP>V=BXE2V}T>vVb=kAK$|;R>s3KA>-fe*a3}Us0?q@ zA;a0{Aj8)qkl|``PN@t}(;yKtN9l+9NiTvS3hMDDBxEAqErqF&s7VLf!_DYOHR8r? z?0+ikb~~uL-c{?{!qT9s&lqXd&yUr5R((BI+h?&fb?kpoOLl~0)5J$)Yc0L*uQwso z@rP_J$I>K6rJ>h~?e)!@u<)$z%2H8U+j{pJ29D!W~z`f5<53dxI96J|73E!#Fz zE2hM#vvXq9Q$t#*w_3%j!Chn3x6@+PfO?L9OwjIeL{HQjH~zGLl1iUxSNAqbR&V_> zS+&bgR(ft{$Eb-~3&*^PTD;@!iP~^S!(1(_e!(M?)TLRIRK0|${L04BJy(lxjLy~C zIG)KR-?m(>(9v%aaoR9RYaS%e4ShzfS1+YisHF)T)PHq%d_76)6U|o}N`3;yzrEUMH1y z-xrRfleMO?zlk}kCe=Hq4s<`KMn80ptKx!c{=h|5GV!AN-1lphJN|1mv#ldxiWcn{ zF-7Z|Vl-Yk37i9UBULN3s7JZ3guG^3XIqW5F}3D6{xn64NtK&1?tA4-%9Jj|Ic2GH zTHih8`G#{o$UWuxhI2mS_d};@TEdAJpXX9y1f-f$gm-X=4$F^WgESPafn=|_G`Q;N zhqbX5ZyBa6sK=A~ct_-PEz2=ux)$bGFkKt&Rp(-l_EjgRYf)A`KBmW}ncDppi_J0Y zQLVMt#hin!9rGU5f}4k3o+JOaf^-&AbeYO=WGW@ls$PCp8|zh7@vN5Vey_}&n_*c| zr0oroLP@W`g|D%`oc z(7c*QOVwM4Iakj%ueO<1^W2lUnda4TL7s6w~Ua&efyLtCLNuBb}> z-H)(sp6ei1+f<^ZS?b9Dbu-k_qp8-&F>bjQ={1gmISQ9+VP3MvQMz0^=t||UV6Ai6 zGEyxh^}XAAwyA(D6P1$Q@L+;vMX5H`FTYQ@^FKb>s2sCOwYfe+Si7dRa{Q}Q`<3@Z zX2#|^X1}NvSYB~ldr_NhEhS%>HrKjZIj)vzc>%_MoZ_51roW^;Qgcz&<(ITT-~R=2 CPSc?P -- Gitee From 85908957d3dc8089d84d15194fc163f75cf57b73 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Wed, 22 Sep 2021 23:46:41 +0800 Subject: [PATCH 31/63] =?UTF-8?q?=E8=BD=AF=E4=BB=B6=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 6148 -> 8196 bytes README.md | 481 +++++++++++++++++- images/ceshiliucheng.jpg | Bin 0 -> 103441 bytes images/lujingfenxi.png | Bin 0 -> 10612 bytes images/luojifugai.jpg | Bin 0 -> 54250 bytes images/quexianfenbu.jpg | Bin 0 -> 72467 bytes images/quexianqushi.jpg | Bin 0 -> 55083 bytes ...5\345\221\212\346\250\241\346\235\277.doc" | Bin 162 -> 0 bytes ...6\344\271\246\346\250\241\346\235\277.doc" | Bin 0 -> 100864 bytes 9 files changed, 478 insertions(+), 3 deletions(-) create mode 100644 images/ceshiliucheng.jpg create mode 100644 images/lujingfenxi.png create mode 100644 images/luojifugai.jpg create mode 100644 images/quexianfenbu.jpg create mode 100644 images/quexianqushi.jpg delete mode 100644 "\346\265\213\350\257\225\347\233\270\345\205\263\346\226\207\346\241\243\346\250\241\346\235\277/~$\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.doc" create mode 100644 "\346\265\213\350\257\225\347\233\270\345\205\263\346\226\207\346\241\243\346\250\241\346\235\277/\346\265\213\350\257\225\350\256\241\345\210\222\350\257\264\346\230\216\344\271\246\346\250\241\346\235\277.doc" diff --git a/.DS_Store b/.DS_Store index e357c7811c6aacb9bef18bc859ae65db276f6bab..3fcd09786aea689853960d9bc768a3eddaf55298 100644 GIT binary patch delta 162 zcmZoMXmOBWU|?W$DortDU;r^WfEYvza8E20o2aMA$h$FMH}hr%jz7$c**Q2SHn1@A zPUd0x&0%b2siRt)8tpV%<>cq3gKV0tz;3!Z oj%NcimjpME?+UVMvmnQJ=E?jbo|FA~I5-#~j$qgv&ohS^0IEDB$N&HU delta 115 zcmZp1XfcprU|?W$DortDU=RQ@Ie-{Mvv5r;6q~50$jH4hU^g=(_hcS{-;*tbJU0gj zUS^!EBVshMXwzbL4h}(Ppkg2p;06+|AblGPzcWwfm+=Id!oUPE5o8I&=6Iet%mC?c B6r%tD diff --git a/README.md b/README.md index 7dd8ba4..9e7b513 100644 --- a/README.md +++ b/README.md @@ -1086,6 +1086,14 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 静态白盒测试是在不执行的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程,有时也称为结构分析。 动态白盒测试也称结构化测试,通过查看并使用代码的内部结构设计和执行测试。 + +*白盒测试发展史* +1. 单步调试、半手工、没有统一规范的评判标准; +2. 脚本测试,可评估; +3. 规范记录、解决了重复测试的问题; +4. 测试过程融入软件的整个开发全过程,解决了持续测试问题。 + + ### 4.2 静态测试 静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。 @@ -1104,18 +1112,224 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 ### 4.4 逻辑覆盖 逻辑测试,又称为控制流覆盖,是一种按照程序内部逻辑结构和编码结构设计测试用例的测试方法。目的是要测试程序中的语句,判定(控制流能够分解为不同路径的程序点),条件(形成判定的原子谓词)等。根据覆盖的标准不同,分为语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、修正条件判定覆盖、增强条件判定覆盖、条件组合覆盖和路径覆盖等标准。 + +![程序流程图](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/luojifugai.jpg) + #### 4.4.1 语句覆盖 +语句覆盖又称为线覆盖面或段覆盖面。其含义是指设计若干个测试用例,使被测试程序中的每一条可执行语句至少被执行1次。 + +只统计可执行的代码行,不包括:头文件、注释、空行。语句覆盖通常被称为“最弱的覆盖”,由于不考虑各个分支的组合,不能发现判断中逻辑运算符的错误。 + +测试用例越少越好。 + +语句覆盖率 = 被测试到的语句数量 / 可执行的语句总数 * 100% + +语句覆盖测试方法仅仪针对程序逻辑中的显式语句,无法测试隐藏条件,例子中的第一个逻辑运算符And误写成or,测试用例a=2,b=2,c=4仍能达到语句覆盖的要求,但是并未发现程序中的误写错误。 + +| 测试用例ID | 测试用例 | a>0 and b>0 | a>1 or c>1 | 执行路径 | +| :--------: | ------------- | :---------: | :--------: | --------- | +| TC1 | a=2, b=2, c=4 | T | T | Ⅰ→Ⅱ→Ⅲ→Ⅳ→Ⅴ | + #### 4.4.2 判定覆盖 +判定覆盖(Decision Coverage,DC),又称为分支覆盖或所有边覆盖,测试控制结构中布示表达式分别为真和假(例如if语句和while语句)。布尔型表达式被认为是一个整你.取值为true或 false,而不考虑内部是否包含“逻辑与”或者“逻排或”等操作符。 + +判定覆盖的基本思想,是指设计的测试用例使程序中每个判定至少分别取“真”分支和取“假”分支各一次,即判断真很值均被满足。 + +| 测试用例ID | 测试用例 | a>0 and b>0 | a>1 or c>1 | 执行路径 | +| :--------: | --------------- | :---------: | :--------: | --------- | +| TC1 | a=1, b=1, c=3 | T | T | I→II→III→IV→V | +| TC2 | a=1, b=-2, c=-3 | F | F | I→III→V | + +| 测试用例ID | 测试用例 | a>0 and b>0 | a>1 or c>1 | 执行路径 | +| :--------: | -------------- | :---------: | :--------: | -------- | +| TC1 | a=1, b=1, c=-3 | T | F | I→II→III→V | +| TC2 | a=1, b=-2, c=3 | F | T | I→III→IV→V | + +作为语句覆盖的超集,判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力。同样,判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。但是,往往大部分的判定语句是由多个逻辑条件组合而成(如判定语句中包含and、or、case),判定覆盖仅仅判断其整个最终结果,而忽略判定内部的每个条件的取值情况,因此必然会遗漏部分测试路径。 + #### 4.4.3 条件覆盖 +条件覆盖(Condition Coverage,CC)是设计测试用例,使每个判断中每个条件的可能取值至少满足1次。 + +条件覆盖设计例4.2的测试用例,针对a>0 and b>0判定条件表达式,a>0取值为“真”,记为T1;a>0取值为“假”,记为F1;b>0取值“真”,记为T2;b>0取值为“假”,记为F2;条件表达式a>1 or c>1,a>1取值为“真”,记为T3;a>1取值为“假”,记为F3;c>1取值为“真”,记为T4;c>1取值为“假”,记为F4,如下表所示: + +| 测试用例ID | 测试用例 | 覆盖条件 | 具体取值条件 | 执行路径 | +| :--------: | --------------- | -------------- | :-----------: | -------- | +| TC1 | a=2, b=-1, c=-2 | T1, F2, T3, F4 | a>1, b≤0, c≤1 | I→III→IV→V | +| TC2 | a=-1, b=2, c=3 | F1, T2, F3, T4 | a≤0, b>0, c>1 | I→III→IV→V | + +条件覆盖只能保证每个条件有1次为真、1次为假,而不考虑所有的判定结果。上表中的测试用例a=2,b=-1和测试用例a=—1,b=2满足了条件覆盖的测试用例,保证了a>0 and b>0两个条件的可能值(True 和False)至少满足1次。但是,由于测试用例的所有判定结果都是False,并没有满足判定覆盖。所以**条件覆盖不一定包含判定覆盖。** + #### 4.4.4 条件判定覆盖 -#### 4.4.5 -#### 4.4.6 +条件判定覆盖的含义是通过设计足够的测试用例,使得判断条件中的所有条件可能至少执行T次取值,同时所有判断的可能结果至少执行1次。因此,条件判定覆盖的测试用例满足如下条件: +1. 所有条件可能至少执行1次取值。 +2. 所有判断的可能结果至少执行1次。 + +| 测试用例ID | 测试用例 | 覆盖条件 | 具体取值条件 | 执行路径 | +| :--------: | ---------------- | -------------- | :-----------: | --------- | +| TC1 | a=2, b=1, c=5 | T1, T2, T3, T4 | a>1, b>0, c>1 | I→II→III→IV→V | +| TC2 | a=-1, b=-2, c=-3 | F1, F2, F3, F4 | a≤0, b<0, c≤1 | I→III→V | + +条件判定覆盖能同时满足判定、条件两种覆盖标准,是判定和条件覆盖设计方法的交集。表面上,条件判定覆盖测试了所有条件的取值,但事实并非如此,往往某些条件掩盖了另一些条件,并没有覆盖所有的True 和False取值的条件组合情况,会遗漏某些条件取值错误的情况,为彻底地检查所有条件的取值,需要分解判定语句中给出的复合条件表达式,形成由多个基本判定嵌套的流程图。这样就可以有效地检查所有的条件是否正确了。 + +#### 4.4.5 修正条件/判定覆盖 +修正条件/判定覆盖(Modified Condrtion/Decision Coverage,MC/DC),修正条件判定覆盖是判定中每个条件的所有可能结果至少出现1次,每个判定本身的所有可能结果也至少出现1次,并且每个条件都显示能单独影响判定结果。 +1. 语句覆盖 +2. 条件判定覆盖 +3. 独立影响:其他条件相同,单一条件改变,结果改变。消除判定中的某些条件被其他条件掩盖的问题。 + +| 序号 | a>0 | b>0 | a>0 and b>0 | +| :---: | :---: | :---: | :---------: | +| 1 | T | T | T | +| 2 | T | F | F | +| 3 | F | T | F | +| 4 | F | F | F | + +(1,3)说明条件a独立影响测试结果,(1,2)说明条件b独立影响测试结果 + +| 序号 | a>0 | b>0 | a>0 and b>0 | +| :---: | :---: | :---: | :---------: | +| 1 | T | T | T | +| 2 | T | F | F | +| 3 | F | T | F | + + +| 序号 | a>1 | c>1 | a>1 or c>1 | +| :---: | :---: | :---: | :--------: | +| 1 | T | T | T | +| 2 | T | F | T | +| 3 | F | T | T | +| 4 | F | F | F | + +(2,4)说明条件a独立影响测试结果,(3,4)说明条件b独立影响测试结果 + +| 序号 | a>1 | c>1 | a>1 or c>1 | +| :---: | :---: | :---: | :--------: | +| 2 | T | F | T | +| 3 | F | T | T | +| 4 | F | F | F | + +修正条件/判定覆盖继承了语句覆盖准则、条件判定覆盖准则、多重条件覆盖等判定条件,同时加入了新的判定条件。 + +例如,A or B 误写为 A and B。因为 T and T = T or T,且F and F = F or F,两者所得到的判定结果相同,由此可说明,虽然使用了条件判定覆盖(C/DC)准则来测试语句,一些错误不能检测出来。但如果使用MC/DC方法,就可以发现这样的错误。 + +MC/DC具有如下优点: +1. 继承了多重条件覆盖的优点; +2. 线性增加了测试用例的数量; +3. 对操作数及非等式条件变化反应敏感; +4. 具有更高的目标码覆盖率。 + +#### 4.4.6 条件组合覆盖 +条件组合覆盖(Multiple Condtion Coverage,MCC)的基本思想是设计测试用例使得判断中每个条件的所有可能至少出现1次,并且每个判断本身的判定结果也至少出现1次,与条件覆盖的差别是条件组合厦盖不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求这些结果的所有可能组合都至少出现1次。 + +条件组合覆盖是一种相当强的覆盖准则,可以有效地检查各种可能的条件取值组合是否正确。它不但可覆盖所有条件可能取值的组合,还可覆盖所有判断的可取分支,但仍可能会遭漏掉有的路径,测试还不完全。 + +条件组合覆盖的条件划分: + +| 编号 | 覆盖条件取值 | 判定取值 | 具体条件取值 | +| :---: | :----------: | ---------------- | ------------ | +| 1 | T1, T2 | a>0 and b>0 取 Y | a>0, b>0 | +| 2 | T1, F2 | a>0 and b>0 取 N | a>0, b≤0 | +| 3 | F1, T2 | a>0 and b>0 取 N | a≤0, b>0 | +| 4 | F1, F2 | a>0 and b>0 取 N | a≤0, b≤0 | +| 5 | T3, T4 | a>1 or c>1 取 Y | a>1, c>1 | +| 6 | T3, F4 | a>1 or c>1 取 Y | a>1, c≤1 | +| 7 | F3, T4 | a>1 or c>1 取 Y | a≤1, c>1 | +| 8 | F3, F4 | a>1 or c>1 取 N | a≤1, c≤1 | + +条件组合覆盖测试用例: + +| 测试用例ID | 测试用例 | 覆盖条件 | 覆盖判定 | 覆盖组合 | 执行路径 | +| :--------: | ---------------- | -------------- | -------- | ----------------------------------- | --------- | +| TC1 | a=2, b=1, c=5 | T1, T2, T3, T4 | 编号1,5 | a>0 and b>0 取 Y
a>1 or c>1 取 Y | I→II→III→IV→V | +| TC2 | a=2, b=-1, c=-2 | T1, F2, T3, F4 | 编号2,6 | a>0 and b>0 取 N
a>1 or c>1 取 Y | I→III→IV→V | +| TC3 | a=-1, b=2, c=3 | F1, T2, F3, T4 | 编号4,7 | a>0 and b>0 取 N
a>1 or c>1 取 Y | I→III→IV→V | +| TC4 | a=-1, b=-2, c=-3 | F1, F2, F3, F4 | 编号4,8 | a>0 and b>0 取 N
a>1 or c>1 取 N | I→III→V | + +条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则,但线性地增加了测试用例的数量,却不能保证所有的路径被执行测试,仍有可能有部分路径被遗漏,测试还不够全面。 + +#### 4.4.7 路径覆盖 +相对于其他逻辑覆盖法,路径覆盖的覆盖率最大。但随着程序代码复杂度的增加,测试工作量将指数增长。例如:包含10个if语句的代码,有2^10 = 1024个路径要测试,如果增加一个if,就有2^11 = 2048个路径要测试。 + +| 测试用例ID | 测试用例 | 执行路径 | +| :--------: | ---------------- | --------- | +| TC1 | a=2, b=1, c=5 | I→II→III→IV→V | +| TC2 | a=1, b=1, c=-3 | I→II→III→V | +| TC3 | a=-1, b=2, c=3 | I→III→IV→V | +| TC4 | a=-1, b=-2, c=-3 | I→III→V | + ### 4.5 路径分析 +路径覆盖会存在如下的困难: +![路径分析](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/luojingfenxi.png) + +上图中包含的不同执行路径数达5的20次方条,假定对每一条路径进行测试需要1毫秒,一年工作365 × 24小时,要想把所有路径测试完,需3170年。 + +测试中做到完全的路径覆盖是无法实现的,为解决这一难题只得把覆盖的路径数压缩到一定限度内。 + +路径分析测试法,是在程序控制流图的基础上,通过分析控制结构的环路复杂性,导出基本可执行路径集合,设计测试用例的方法。该方法把覆盖的路径数压缩到一定限度内,程序中的循环体最多只执行一次。设计出的测试用例要保证在测试中,程序的每一个可执行语句至少要执行一次。 + ### 4.6 控制结构测试 +#### 4.6.1 条件测试 +条件测试是检查程序模块中所包含逻辑条件的测试用例设计方法。 + +条件的错误类型如下: +1. 布尔操作符错误(遗漏布尔操作符,布尔操作符多余或布尔操作符不正确); +2. 布尔变量错误; +3. 布尔括号错误; +4. 关系操作符错误; +5. 算术表达式错误。 + +分支测试可能是最简单的条件测试策略,对于复合条件C的真分支、假分支以及C中的每个简单条件,都需要至少执行一次。 + +域测试(Domain Testing)通过分析程序输入域的数据,从有理表达式中导出3个或4个测试进行测试。 + + +#### 4.6.2 循环测试 +假设N是通过循环的最大次数 +1. 零次循环:从循环入口直接跳到循环出口 +2. 一次循环:只有一次通过循环,用于查找循环初始值方面的错误 +3. 两次循环:两次通过循环,用于查找循环初始值方面的错误 +4. m次循环:m次通过循环,其中m<n,用于检查多次才暴露的错误 +5. 比最大循环数少一次 +6. 最大循环数 +7. 比最大循环数多一次 + + +#### 4.6.3 Z路径覆盖 +路径覆盖是路径覆盖的一个变体。不考虑循环的形式和复杂度,也不考虑实际执行循环体的次数是多少,只考虑通过循环体零次和一次这两种情况,零次循环式指跳过循环体,从循环体的入口直接到循环体的出口。通过一次循环体是指检查循环初始值,根据简化循环的思路,循环要么执行,要么跳过,这和判定分支的效果一样。这样就大大减少了循环的个数,将循环结构简化为选择结构。 + ### 4.7 数据流测试 +#### 4.7.1 变量定义/使用分析 +变量定义和使用有如下三种缺陷: +1. 变量被定义,但从来没有使用 +2. 使用的变量没定义 +3. 变量在使用之前定义了两次 + ### 4.8 程序插桩 +它是借助于往被测程序中插入操作来实现测试目的的方法,即向源程序中添加一些语句,实现对程序语句的执行、变量的变化等情况进行检查。 + +#### 4.8.1 插桩位置 +插桩位置主要解决的是在哪儿插的问题,为此将程序按“块”划分,探针主要插桩在其“路口”的位置,主要考虑以下4种位置: +1. 程序的开始,即程序块的第1个可执行语句之前; +2. for、do、do-while、do until 等循环语句开始、结束处。 +3. if、else if、else及end if等条件语句各分支开始、结束处。 +4. 函数、过程、子程序调用语句之后, +5. 程序的出口,return、call之后。 + +#### 4.8.2 插桩策略 +插桩策略主要解决的是如何在程序中植入探针的问题,包括植入的位置和方法。主要考虑块探针和分支探针。 + +1. 块探针设计策略:又称“顺序块”,它是若干个相连顺序语句的序列集合。在程序的执行过程中,它具有线性特征。若该线性块的第一条语句被执行,则整个线性块的语句都执行了。这样仅在线性块的开始或末尾处插入一个探针即可,避免了对每条语句都进行的冗余插装操作。 +2. 分支探针策略:所有进行true或false判断的语句。它是统计分支覆盖率的探针测试点。 + +#### 4.8.3 插桩过程 +在被测试的源程序中植入探针函数的桩,即函数的声明。而插桩函数的原型在插桩函数库中定义。在目标文件连接成可执行文件时,则必须连入插桩函数库。探针函数是否被触发,就要依据插桩选择记录文件了,要求不同的覆盖率测试会激活不同的插桩函数。 + ### 4.9 测试方法综述 ### 4.10 知识点总结 +1. 白盒测试概念 +2. 静态测试 +3. 动态测试 +4. 逻辑覆盖(语句覆盖、判定覆盖、条件覆盖、条件判定覆盖、修正条件/判定覆盖、条件组合覆盖、路径覆盖) ## 第5章 性能测试 ### 5.1 基本概念 @@ -1133,9 +1347,125 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 ## 第6章 软件测试流程 ### 6.1 软件测试流程概述 +软件测试流程与软件开发流程类似,也包括测试计划、测试设计、测试开发、测试执行和测试评估几个部分。 + +![软件测试流程](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/ceshiliucheng.jpg) + +1. **测试计划:**根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求告,使得随后所有测试工作都围绕着测试需求来进行。同时适当选择测试内容,合理安非测试人员、测试时间及测试资源等。 +2. **测试设计:**测试设计是指将测试计划阶段制定的测试需求分解、细化为若干个可执行的测试过,并为每个测试过程选择适当的测试用例,保证测试结果的有效性。 +3. **测试执行:**执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理。测试执行一般由单元测试、集成测试、系统测试、验收测试以及回归测试等步骤组成。 +4. **测试评估:**根据缺陷跟踪报告,对软件的质量和开发团队的工作进度及效率进行评价。 + ### 6.2 测试需求 +测试需求根据市场/产品需求定义、分析文档和相关技术文档,输出《可测试性需求说明书》和《测试规格》等报告。 + +**参与者:** 产品经理,架构师,项目经理,测试/质量管理员(很多公司把这个统称为QA),开发 + +需求文档检查: +从需求的完整性、明确性、必要性、可测性、一致性、可修改性和优先级出发。 +1. 测试需求说明书是否满足了用户提出的每一项要求,实现需求的完整性 +2. 检查需求文档的用词、用语问题,实现需求的明确性 +3. 检查需求规格说明书对需求覆盖是否正确,实现需求的必要性 +4. 软件使用环境的描述是否清晰,实现文档的完整性 +5. 需求编号是否正确,实现文档的可修改性 +6. 需求是否相互矛盾,实现需求的一致性 +7. 检查软件系统允许的输入和预期的输出,实现需求的可测试性 +8. 软件系统的性能需求有没有得到清晰地描述,实现需求的完整性 +9. 需求的关注重点和实现的先后顺序是否清晰地被描述出来,实现需求的优先级 +10. 对软件系统的约束条件是否完整的进行描述,实现需求的可测试性 + +|序号|检查项|检查结果| +|:---:|----|----| +|1|是否覆盖了用户提出的所有需求项|是[ ] 否[ ] NA[ ]| +|2|用词是否清晰,语义是否存在有歧义的地方|是[ ] 否[ ] NA[ ]| +|3|是否清楚的描述了软件系统需要做什么及不做什么|是[ ] 否[ ] NA[ ]| +|4|是否描述了软件使用的目标环境,包括软硬件环境|是[ ] 否[ ] NA[ ]| +|5|是否对需求项进行了合理的编号|是[ ] 否[ ] NA[ ]| +|6|需求项是否前后一致、彼此不冲突|是[ ] 否[ ] NA[ ]| +|7|是否清楚系统的输入、输出格式,以及输入和输出之间的对应关系|是[ ] 否[ ] NA[ ]| +|8|是否清晰地描述了软件系统的性能需求|是[ ] 否[ ] NA[ ]| +|9|需求的优先级是否合理分配|是[ ] 否[ ] NA[ ]| +|10|是否描述了各种约束条件|是[ ] 否[ ] NA[ ]| + ### 6.3 测试计划 +测试计划以测试需求为基础,分析产品的总体测试策略,输出《产品总体测试策略)等报告。 + +**参与者:** 测试组长 + +测试计划规定测试任务、安排人员、预见风险,指导测试,实现测试的目标。 + +#### 6.3.1 测试计划要点 +1. 测试范围 +确定各阶段的测试范围、技术约束等,以及测试成功的标准和要达到的目标。 + +2. 测试策略 +开发有效的测试模型,决定黑盒测试和白盒测试、人工测试和自动化测试的比重等。 + +3. 测试资源 +确定测试所需要的时间和资源,对人员、硬件和软件等资源进行组织和分配。 + +4. 进度安排 +分解项目工作结构,并采用时限图、甘特图等方法制定时间/资源表。 + +5. 风险及对策 +测试可能存在的风险分析,对风险进行回避、监控、管理,采用变更管理和控制等。 + +#### 6.3.2 步骤 +1. 了解项目需求,明确测试对象 +根据项目组提供的需求说明书、界面原型、开发计划等文档,了解项目需求,明确本次测试的任务。 + +2. 制定测试策略 +测试的策略包括宏观的测试策略和微观的测试策略战术,为了设计出好的测试策略,需要了解软件的结构、功能分布、各模块对用户的重要程度等,从而决定测试的重点、优先次序、测试的覆盖方式等。设计测试用例时,应尽可能用最少的测试用例发现最多的缺陷,尽可能用精简的测试用例覆盖最广泛的状态空间,还要考虑哪些测试用例使用自动化的方式实现,哪些使用人工方式验证等。 + +3. 确定资源 +确定测试所需的人力资源、硬件、软件、工具等资源。 + +4. 安排测试进度 +测试的进度安排需要结合项目的开发计划、产品的整体计划进行考虑,还要考虑测试本身的各项活动进行安排。把测试用例的设计、测试环境的搭建、测试报告的编写等活动列入进度安排表。 + +5. 估计计划风险 +般可能碰到的风险是项目计划变更、测试资源不能及时到位等问题。制定测试计划时应根据项目的实际情况进行评估,并制定出合理、有效的应对策略,对于项目计划的变更,可以考虑建立更加流畅的沟通渠道,让测试人员能及时了解到变更的情况,以及变更的影响,从而可以作出相应的改变。 + ### 6.4 测试设计 +测试设计建立在测试计划书的基础上,根据测试大纲、测试内容及测试的通过准则,将测试需求转换成测试用例的过程,用于描述测试环境、测试执行的范围、层次和用户的使用场景以及测试输入和预期的测试输出等信息,输出《产品或者版本总体测试方案》等报告。 + +#### 6.4.1 测试设计内容 +1. 制定测试的技术方案,确认各个测试阶段采用的测试技术、测试环境和平台,以及选择什么样的测试工具。其中,系统测试中的安全性、可靠性、稳定性、有效性等是测试技术方案的内容重点。 +2. 设计测试用例,根据产品需求分析、系统设计等规格说明书,在测试技术方案的基础上设计具体的测试用例。 +3. 根据测试的目的和任务,以及测试用例的特性和属性(优先级、层次、模块等)设计测试用例,从而构成执行某个特定测试任务的测试用例集合(组),如基本测试用例组、专用测试用例组、性能测试用例组、其他测试用例组等。 +4. 根据所选择的测试工具,将自动化测试的测试用例转换为测试脚本。 +5. 根据所选择的测试平台以及测试用例所要求的特定环境,进行服务器、网络等测试环境的设计。 + +软件测试设计中,需要考虑如下要点。 +1. 所设计的测试技术方案是否可行、是否有效、是否能达到预期的测试目标; +2. 所设计的测试用例是否完整、边界条件是否考虑、其覆盖率能达到的百分比; +3. 所设计的测试环境是否和用户的实际使用环境比较接近。 + +#### 6.4.2 测试用例属性 +设计测试用例主要根据测试用例的以下属性,并结合测试用例的编号、标题、描述(条件、步骤、期望结果)等进行测试用例管理。 + +1. 优先级 +测试用例的优先级越高,被执行的时间越早、执行的频率越多。由最高优先级的测试用例组来构成基本验证测试,每次构建软件包时,都要被执行一遍。 + +2. 目标性 +根据不同的目标设计测试用例。有的测试用例是为主要功能而设计,有的则为系统的负载而设计。 + +3. 所属范围 +根据测试用例所属不同的组件或模块进行管理。 +4. 关联性 +测试用例一般和软件产品特性相联系,多数情况下验证某个产品的功能。 + +5. 阶段性 +根据不同的测试阶段,如单元测试、集成测试、系统测试、验收测试等设计测试用例,便于得出该阶段的测试覆盖率。 + +6. 状态性 +测试用例有不同的状态,只有被激活的测试用例才被运行。 + +7. 时效性 +针对同样功能,可能所用的测试用例不同,是因为不同的产品版本在产品功能、特性等方面的要求不同。 +8. 所有者 +测试用例还包括由谁、在什么时间创建,又由谁、在什么时间修改等。 + ### 6.5 测试执行 #### 6.5.1 单元测试 单元测试即为将整个软件分解为各个单元,随后对单元进行测试。此类测试策略的优点在于所需分析数据较少,且针对性较强,程序开发者于开发过程中可通过操作经验明确出现问题的大致区域,随后针对此类问题对相关单元展开分析,进行问题排查。但需注意的是,某些程序中无具体单元驱动程序,即单个单元无法有效驱动,易出现问题,若针对此类软件展开测试,需重点注意此类分解单元。 @@ -1181,7 +1511,9 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 * 测试内容:功能、界面、可靠性、易用性、性能、兼容性、安全性等 #### 6.5.4 验收测试 -验收测试是最后一个阶段的测试操作,在软件产品投入正式运行前的所要进行的测试工作。和系统测试相比而言,验收测试与之的区别就只是测试人员不同,验收测试则是由用户来执行这一操作的。验收测试的主要目标是为向用户展示所开发出来的软件符合预定的要求和有关标准,并验证软件实际工作的有效性和可靠性,确保用户能用该软件顺利完成既定的任务和功能。通过了验收测试,该产品就可进行发布。但是,在实际交付给用户之后,开发人员是无法预测该软件用户在实际运用过程中是如何使用该程序的,所以从用户的角度出发,测试人员还应进行Alpha测试或Beta测试这两种情形的测试。Alpha测试是在软件开发环境下由用户进行的测试,或者模拟实际操作环境进而进行的测试。Alpha测试主要是对软件产品的功能、局域化、界面、可使用性以及性能等等方面进行评价。而Beta测试是在实际环境中由多个用户对其进行测试,并将在测试过程中发现的错误有效反馈给软件开发者。所以在测试过程中用户必须定期将所遇到的问题反馈给开发者。 +验收测试是最后一个阶段的测试操作,在软件产品投入正式运行前的所要进行的测试工作。和系统测试相比而言,验收测试与之的区别就只是测试人员不同,验收测试则是由用户来执行这一操作的。验收测试的主要目标是为向用户展示所开发出来的软件符合预定的要求和有关标准,并验证软件实际工作的有效性和可靠性,确保用户能用该软件顺利完成既定的任务和功能。通过了验收测试,该产品就可进行发布。 + +但是,在实际交付给用户之后,开发人员是无法预测该软件用户在实际运用过程中是如何使用该程序的,所以从用户的角度出发,测试人员还应进行α测试或β测试这两种情形的测试。α测试是在软件开发环境下由用户进行的测试,或者模拟实际操作环境进而进行的测试。α测试主要是对软件产品的功能、局域化、界面、可使用性以及性能等等方面进行评价。而β测试是在实际环境中由多个用户对其进行测试,并将在测试过程中发现的错误有效反馈给软件开发者。所以在测试过程中用户必须定期将所遇到的问题反馈给开发者。 验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。阿旺总结验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。 @@ -1193,10 +1525,153 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 * 测试内容:同系统测试(功能...各类文档等) #### 6.5.5 α测试 +软件交付使用之后,用户在使用过程中常常会发生各种问题,如操作使用方法的误解、异常的数据组合等。α测试和β测试用于发现可能只有最终用户才能发现的错误。 + +α测试是在开发环境或公司内部用户在模拟实际操作的环境下,由用户参与的测试,主要用于评价软件产品的功能、可靠性、性能等,特别是对于软件界面和易用性进行测试。 + +α测试不能由程序员或测试员完成。 + #### 6.5.6 β测试 +只有当α测试达到一定的可靠程度时,才能开始β测试。与α测试不同,开发者通常不在测试现场,在β测试中,由用户记下遇到的所有缺陷,向开发者报告。测试着重于产品的支持性测试,包括文档、客户培训等。 + +α测试与β测试的区别: +1. 测试的场所不同:α测试是指把用户请到开发方的场所来测试,β测试是指在一个或多个用户的场所进行的测试。 +2. 测试的环境不同:α测试的环境是受开发方控制的,用户的数量相对比较少,时间比较集中。β测试的环境是不受开发方控制的,用户数量相对比较多,时间不集中。 +3. 测试的时间不同:α测试先于β测试执行。通用的软件产品需要较大规模的β测试,测试周期比较长。 + +当软件通过最后阶段的测试 - 验收测试或质量全面评估测试,从研发阶段来看,工程发布(Engineering Release,ER)将作为一个里程碑,随后将软件推向市场。进行α测试后,到达了有限可用(Limited Available,LA)里程碑(LA是指由于测试覆盖率不能达到100%,软件功能并不能全部使用)。LA之后所发现的缺陷,再通过β测试,到达全面可用(General Available,GA)里程碑,此时所有功能可以全部使用。 + ### 6.6 回归测试 +微软测试表明,一般修复3~4个错误会产生一个新的错误,新代码的加入,除了本身含有错误外,还有可能对原有的代码带来影响。因此,软件一旦发生变化,必须重新设计测试用例,检测软件功能,确定修改达到预期目的。回归测试是一种验证已变更系统的完整性与正确性的测试技术,用于确保修改没有带来副作用。回归测试输出《产品或版本测试报告》等报告。 + +**这里要注意的是我们bug修订后不只要重新测试这个bug,还要重新测试与这个功能点甚至是代码块相关的部分。** + +回归测试与一般测试有如下不同: +1. 测试用例来源 +一般测试根据系统规格说明书和测试计划进行,测试用例都是新的。而回归测试可能是更改了的规格说明书、修改过的程序和需要更新的测试计划。 + +2. 测试范围 +一般测试目标是检测整个程序的正确性,而回归测试目标是检测被修改的相关部分的正确性以及它与系统原有功能的整合。 + +3. 时间分配 +一般测试所需时间通常是在软件开发之前预算,而回归测试所需的时间(尤其是修正性的回归测试)往往不包含在整个产品进度表中。 + +4. 开发信息 +一般测试可以随时获取关于开发的知识和信息。而回归测试可能会在不同的地点和时间进行,需要保留开发信息,以保证回归测试的正确性。 + +5. 完成时间 +由于回归测试只需测试程序的一部分,完成所需时间通常比一般测试少。 + +6. 执行频率 +回归测试往往要多次进行,一旦系统经过修改就需要进行回归测试。 + +#### 6.6.1 测试流程 +1. 在测试策略制定阶段制定回归测试策略。 +2. 确定回归测试版本。 +3. 发布回归测试版本,按照回归测试策略执行回归测试。 +4. 回归测试通过,关闭缺陷跟踪单。 +5. 回归测试不通过,缺陷单返回到开发人员处,等待重新修改,再次作回归测试。 + +#### 6.6.2 什么情况下需要回归测试 +1. 开发修订了bug +影响较小,很容易获悉影响范围,以及回归测试用例的选择。 + +2. 版本发布 +每次版本的发布或者更新,都必须保障原有功能的正确性以及新功能的正确性;因此回归测试的范围必须是全面的。 + +3. 新功能提测 +新上线的功能,我们首先要保障新功能的正确性;另外保障它没有影响与其相关联的功能,即保障其相关功能的正确性。 + +修订bug和新功能可以只回归相关部分,版本发布需要回归整个产品。 + +#### 6.6.3 测试用例设计方法 +1. 选择全部测试用例 +选择完全重复测试,是指将所有的测试用例全部再完全地执行一遍,以确认问题修改的正确性和修改后周边是否受到影响。缺点是由于要把用例全部执行一遍,因此会增加项目成本,也会影响项目进度,所以很难完全执行。 + +**优点:** 这其实是最安全的方法,再测试全部用例具有最低的遗漏回归错误的风险,它几乎可以应用到任何情况下,且几乎不需要进行分析。 +**缺点:** 测试成本极其高昂 +**策略:** 定时执行全部回归(自动测试脚本)以及上线前执行。 + +2. 基于风险选择测试用例 +根据缺陷的严重性来进行测试,基于一定的风险标准,从测试用例库中选择回归测试包。选择最重要、关键以及可疑的测试,跪过那些次要的、例外的测试用例或功能相对非常稳定的模块。 + +3. 基于操作剖面选择测试用例 +如果测试用例是基于软件操作面开发的,测试用例的分布情况将反映系统的实际使用情况。回归测试所使用的测试用例个数由测试预算确定,可以优先选择针对最重要或最频繁使用功能的测试用例,尽早发现对可靠性有最大影响的故障。 + +4. 覆盖修改法 +针对发生错误的模块设计测试用例,只能验证本模块是否还存在缺陷,但不能保证周边与它有联系的模块不会因为这次改动而引发缺陷在修改范围内的测试,其效率最高,风险也最大,因为它无法保证这个修改是否影响了别的功能,该方法一般用于软件结构设计的耦合度较小的状态下使用。 +5. 周边影响法 +除了执行出错模块的用例之外,把周边和它有联系的模块的用例也执行一遍,保证回归测试的质量。 + +6. 指标达成法 +根据一定的覆盖率指标选择回归测试。例如,规定修改范围内的测试是90%,其他范围内的测试阅值为60%,该方法一般是在相关功能影响范围难以界定时使用。 + +7. 再测试修改部分 +通过相依性识别软件的修改情况,将回归测试局限于被改变的模块,只选择相应的测试用例来做回归测试,此策略风险最大,但成本也是最低。 + +**优点:** 工作量小 +**缺点:** 这个方法对测试人员的要求还是很高的,需要测试人员不仅要熟悉业务,还要能看懂代码且了解代码结构。这么来看这个方法风险还是很高的. +**策略:** 要求开发修订bug后在缺陷管理工具上直接标明影响范围,测试只做审核和实施。 + ### 6.7 测试评估 +#### 6.7.1 测试评估活动 +1. 审查测试全过程 +在测试跟踪的基础上对测试项目进行全过程、全方位的审视,检查测试计划、测试用例是否得到执行,检查测试是否有漏洞。 + +2. 对当前状态的审查 +测试的审核包括软件缺陷和过程中没解决的各类问题。对产品目前存在的缺陷进行逐个分析,了解其对产品质量影响的程度,决定所有测试内容是否完成,测试的覆盖率是否达到要求以及产品质量是否达到标准,从而确定是否停止测试。 + +#### 6.7.2 缺陷分析方法 +1. 缺陷分布分析 +缺陷分布分析是横向分析方法,针对一个或多个缺陷属性进行分布分析,生成缺陷数量与缺陷属性的函数。 + +缺陷分布分析涉及的因素如图: + +![缺陷分布分析](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/quexianfenbu.jpg) + +2. 缺陷趋势分析 +缺陷趋势分析用于描述一段时间内缺陷的动态变化情况。其中,收敛趋势图是其中常用的一种。它是指在一定周期内遗留缺陷的变化情况,用于反映项目的质量变化情况,作为产品发布的一个重要参考。 + +![缺陷趋势分析](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/quexianqushi.jpg) + + - 发现缺陷:测试人员在某一测试周期内新发现的缺陷总数。 + - 修复缺陷:测试人员在某一测试周期内修复的缺陷总数。 + - 遗留缺陷:在某一测试试用周期结束时刻未关闭的缺陷总数。 + +3. 注入矩阵分析 +软件缺陷有“注入阶段”和“发现阶段”两个阶段,缺陷注入-发现矩阵如下表: + +||需求|设计|编码|注入总计| +|----|----|----|----|----| +|需求阶段|8|||8| +|设计阶段|26|62||88| +|单元测试阶段|4|11|12|27| +|系统测试阶段|4|3|112|119| +|验收测试阶段|0|0|28|28| +|发现总计|42|76|152|270| +|本阶段缺陷移除率|19%|82%|8%|| + +矩阵的每行表示该阶段或活动发现的各阶段产生的缺陷数;矩阵的每列表示该阶段或活动注入的缺陷泄漏到后续各环节的缺陷数。 + +表中的参数解释如下: +**缺陷移除率=(本阶段发现的缺陷数/本阶段注入的缺陷数)×100%** +如需求阶段一共注入了21个缺陷,需求评审时只发现了4个,设计过程中发现了13个,编码和单元测试阶段发现了2个,还有2个直到系统测试阶段才被发现。这样,需求阶段的缺陷移除率 4 / 21 * 100% = 19%。它反映的是该活动阶段的缺陷清除能力。 + +**缺陷泄露率=(下游发现的本阶段缺陷数/本阶段注入的缺陷总数)×100%** +"缺陷泄漏率",即有多少本阶段注入的缺陷没有在本阶段发现而是被泄漏到后阶段环节才被发现。它反映的是本阶段质量控制措施落实的成效。 + +编码过程的缺陷大部分依赖系统测试发现。很显然,项目开发过程中的单元测试和集成测试活动开展不够深入。我们可以进一步分析这些系统测试出来的测试缺陷,是不是可以被更前端的评审/测试/设计讨论活动所替代。 + +需求阶段注入的缺陷绝大部分是在设计阶段发现的。这大概是目前国内公司大部分项目的现实,需求不稳定、不明确,很多东西需要在设计过程中才能明确下来。从分析结果也可以看出,在设计评审时,也需要重新审视需求规格说明书,必要时可利用需求追踪矩阵辅助发现上游需求的缺陷。 + +通过注入矩阵分析,可以看出软件开发各个环节的质量,找到最需要改进的环节,从而有针对性地制定改进措施。实际规划“缺陷注入一发现矩阵”时,可对缺陷的发现活动和注入阶段进行细分或粗分。 + ### 6.8 知识点总结 +1. 测试需求 +2. 测试计划 +3. 测试设计 +4. 测试执行(单元测试、集成测试、系统测试、验收测试、回归测试) +5. 测试评估(缺陷分布分析、缺陷趋势分析、注入矩阵分析) ## 第7章 软件测试自动化 #### 7.1 自动化测试和手工测试 diff --git a/images/ceshiliucheng.jpg b/images/ceshiliucheng.jpg new file mode 100644 index 0000000000000000000000000000000000000000..646a62c39715e221b90314bcfc2aafdc88209cd9 GIT binary patch literal 103441 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 F`X6RXC?Jt0O+Z1aKopfOQ4mp3BOo9((mSCe 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 z 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 USJ(dvMgJcI>Hmi@#qWv#0#h4FiU0rr literal 0 HcmV?d00001 diff --git a/images/quexianqushi.jpg b/images/quexianqushi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b314a5a1258a9796ef95a6bd6321bef5213be879 GIT binary patch literal 55083 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
-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 N&E{X{L;B~!e*sl6?dt#l literal 0 HcmV?d00001 diff --git "a/\346\265\213\350\257\225\347\233\270\345\205\263\346\226\207\346\241\243\346\250\241\346\235\277/~$\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.doc" "b/\346\265\213\350\257\225\347\233\270\345\205\263\346\226\207\346\241\243\346\250\241\346\235\277/~$\346\265\213\350\257\225\346\212\245\345\221\212\346\250\241\346\235\277.doc" deleted file mode 100644 index 3e47a945653c04a02ddd13bd4d8b5cefe4be4a72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 162 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 ZhmeX63E%5wiPaCKA5xy@0oMOx^}o8RX6pa| literal 0 HcmV?d00001 -- Gitee From 41962efaaccaa382624ba4cf9bc3cde9959e82d5 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Thu, 23 Sep 2021 12:44:15 +0800 Subject: [PATCH 32/63] =?UTF-8?q?=E8=BD=AF=E4=BB=B6=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E6=B5=81=E7=A8=8B=E8=A1=A5=E5=85=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9e7b513..2946f99 100644 --- a/README.md +++ b/README.md @@ -1452,6 +1452,7 @@ MC/DC具有如下优点: 3. 所属范围 根据测试用例所属不同的组件或模块进行管理。 + 4. 关联性 测试用例一般和软件产品特性相联系,多数情况下验证某个产品的功能。 @@ -1498,6 +1499,42 @@ MC/DC具有如下优点: * 测试方法:黑盒测试与白盒测试相结合 * 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响 +集成测试的主要任务是解决以下5个问题: +1. 将各模块连接起来,检查模块相互调用时,数据经过接口是否丢失; +2. 将各个子功能组合起来,检查能否达到预期要求的各项功能; +3. 一个模块的功能是否会对另一个模块的功能产生不利的影响; +4. 全局数据结构是否有问题,会不会被异常修改; +5. 单个模块的误差积累起来,是否被放大,从而达到不可接受的程度。 + +集成测试主要测试软件的结构问题,因此测试建立在模块接口上,多为黑盒测试,适当辅以白盒测试,在集成测试过程中,尤其要注意关键模块测试,关键模块一般具有如下一个或多个特征:同时对应几条需求功能;具有高层控制功能;复杂且易出错;有特殊的性能要求。 + +集成测试的主要目的是验证组成软件系统各模块的接口和交互作用,分为非增量式集成和增量式集成等。 + +1. 非增量式测试方法 +非增量式测试方法又名大棒集成方法,采用一步到位的方法来测试,将所有模块按程序结构图连接起来,当作整体进行测试。非增量式测试是集中一次进行测试,虽然可能发现很多错误,但为每个错误定位和纠正非常困难,并且在改正一个错误的同时又可能引入新的错误,从而更难断定出错的原因和位置。因此,非增量式集成测试只能适合在规模较小的应用系统中使用。 + +2. 增量式测试方法 +增量式测试方法是指测试从一个模块开始,测试成功后,再添加一个模块进行测试,如此进行。增量式测试采用逐步集成和逐步测试的方法,其测试范围是逐步增大,从而易手错误的定位和纠正。因此,增量式集成测试比非增量式集成测试有比较明显的优越性。 + +增量式测试方法具有自顶向下、自底向上以及三明治集成测试方法。 + +增量式测试方法的比较: + +|名称|自顶向下增量式|自底向上增量式|三明治集成| +|----|:----:|:----:|:----:| +|集成|早|早|早| +|基本程序工作时间|早|晚|早| +|需要驱动程序|否|是|是| +|需要桩程序|是|否|是| +|工作并行性|低|中|中| +|特殊路径测试|难|容易|中等| +|计划与控制|难|容易|难| + +1. 自顶向下测试是逐步求精,让测试者了解系统的框架,但需要提供驱动模块。由于驱动模块可能不能反映真实情祝,因此测试可能具有不充分性。 +2. 自底向上测试采用驱动模块模拟了所有调用,但是需要等到只有最后一个模块加入才能知道整个系统的框架。 +3. 三明治集成测试采用自顶向下、自底向上的结合方式,并采取持续集成策略,有助于尽早发现缺陷,提高工作效率。 + + #### 6.5.3 系统测试 一般情况下,系统测试采用黑盒法来进行测试的,以此来检查该系统是否符合软件需求。本阶段的主要测试内容包括健壮性测试、性能测试、功能测试、安装或反安装测试、用户界面测试、压力测试、可靠性及安全性测试等。为了有效保证这一阶段测试的客观性,必须由独立的测试小组来进行相关的系统测试。另外,系统测试过程较为复杂,由于在系统测试阶段不断变更需求造成功能的删除或增加,从而使程序不断出现相应的更改,而程序在更改后可能会出现新的问题,或者原本没有问题的功能由于更改导致出现问题。所以,测试人员必须进行回归测试。 @@ -1515,7 +1552,7 @@ MC/DC具有如下优点: 但是,在实际交付给用户之后,开发人员是无法预测该软件用户在实际运用过程中是如何使用该程序的,所以从用户的角度出发,测试人员还应进行α测试或β测试这两种情形的测试。α测试是在软件开发环境下由用户进行的测试,或者模拟实际操作环境进而进行的测试。α测试主要是对软件产品的功能、局域化、界面、可使用性以及性能等等方面进行评价。而β测试是在实际环境中由多个用户对其进行测试,并将在测试过程中发现的错误有效反馈给软件开发者。所以在测试过程中用户必须定期将所遇到的问题反馈给开发者。 -验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。阿旺总结验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。 +验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。 * 测试阶段:系统测试通过之后 * 测试对象:整个系统(包括软硬件)。 -- Gitee From 9942f758f11f7b8180c4fd16907054d838eae382 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Thu, 23 Sep 2021 23:51:26 +0800 Subject: [PATCH 33/63] =?UTF-8?q?=E6=80=A7=E8=83=BD=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 368 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 366 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2946f99..794e830 100644 --- a/README.md +++ b/README.md @@ -1333,17 +1333,382 @@ MC/DC具有如下优点: ## 第5章 性能测试 ### 5.1 基本概念 +性能测试是通过测试工具模拟多种正常、峰值以及异常负载条件,对系统的各项性能指标进行测试。 + +软件性能是指在一定条件下系统行为表现是否符合需求规格的指标,如传输的最长时限、传输的错误率、计算的精度、响应的时限和恢复时限等。 + +性能测试的目的是发现软件系统中存在的性能瓶颈,优化软件运行效率。 + +性能测试主要包括以下几个方面: +1. 评估系统的能力 +评估系统的能力是指测试软件系统所得到的负荷数据和响应时间等数据,用于验证软件系统的稳定性和可靠性。 + +2. 识别体系中的弱点 +通过将软件系统受控的负荷增加到一个极端的水平,确定体系的瓶颈或薄弱的地方,并进行修复。 + +3. 系统调优 +长时间的运行系统将导致系统失败,揭示系统中隐含的问题或冲突,进行调整,优化系统性能。 + +#### 5.1.1 响应时间 +应时间是指应用系统从请求发出开始到客户端接收到数据所消耗的时间,响应时间分解为网络传输时间、应用延迟时间、数据库延迟时间和呈现时间等。 + +#### 5.1.2 并发用户数 +多个用户对系统发出了请求或进行了操作,其请求或者操作可以是相同的,也可以是不同的,下面给出估算并发用户数的公式: +``` +C = nL/T +``` +C:是平均的并发用户数; +n:是登录会话的数量; +L:是登录会话的平均长度; +T:指考察的时间段长度。 + +并发用户数峰值的计算方式: +``` +C ̂≈ C+ 3√C +``` +该公式是假设用户登录会话符合泊松分布而估算得到的。 + +> eg. +> +> 一个软件系统每天大约有400个用户访问,用户在一天之内有8小时使用该系统,从登> 录到退出该系统的平均时间为4小时。 +> C=400×4/8=200 +> C ̂≈200+3×√200=242 + +#### 5.1.3 吞吐量 +吞吐量是指单位时间内成功在网络上传输数据量的总和,用请求数/秒或页面数/秒来衡量,吞吐量有如下两个作用: +1. 协助设计性能测试场景,以及衡量性能测试场景是否达到了预期设计目标,在设计性能测试场景时,根据吞吐量数据测试场景中的事务发生频率等。 +2. 协助分析性能瓶颈。吞吐量是性能瓶颈的重要表现形式。因此,有针对性地测试吞吐量,可以尽快定位到性能瓶颈所在位置。 + +吞吐量和并发用户数之间存在一定的联系,计算公式如下所示: +``` +F=(Nvu×R)/T +``` +F:吞吐量; +Nvu:虚拟用户个数; +R:每个虚拟用户发出的请求数量; +T:性能测试所用的时间。 + +#### 5.1.4 性能计数器 +性能计数器是描述服务器或操作系统性能的一些数据指标,具有“监控和分析”作用。例如,Windows系统的内存数、进程数、系统缓存等都是常见的性能计数器。 + +#### 5.1.5 资源利用率 +资源利用率与性能计数器关系密切,是指系统中各种资源的使用状况,在通常的情况下,资源利用率需要结合响应时间变化曲线、系统负载曲线等各种指标进行综合分析。 + +资源利用率计算公式如下所示: + +资源利用率 = 资源的实际使用 / 总的资源可用量 + ### 5.2 性能测试分类 #### 5.2.1 负载测试 +负载测试(Lond Testing)是测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力,评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力,负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征,例如,响应时间、事务处理速率和其他与时间相关方面的特征。 + +负载测试通过大量重复的行为、模拟不断增加的用户数量等方式观察不同负载下系统的响应时间和数据吞吐量、系统占用的资源(如CPU、内存)等,检验系统特性,发现系统可能存在的性能瓶颈、内存泄露等问题。 + +负载测试的加载方式通常有如下几种: +1. 一次加载 +一次性加载某个数量的用户,在预定的时间段内持续运行。例如,早晨上班的时间。访问网站或登录网站的时间非常集中,基本属于扁平负载模式。 + +2. 递增加载 +有规律地逐渐增加用户,每几秒增加一些新用户,交错上升。这种负载方式的测试容易发现性能的拐点,即性能瓶颈。 + +3. 高低突变加载 +某个时间用户数量很大,突然降到很低,过一段时间又突然加到很高,反复几次。借助这种负载方式的测试容易发现资源释放、内存泄露等问题。 +4. 随机加载方式 +由随机算法自动生成某个数量范围内变化的、动态的负载,这种方式可能是和实际情况最为接近的一种负载方式。虽然不容易模拟系统运行出现的瞬时高峰期,但可以模拟系统长时间高位运行过程的状态。 + #### 5.2.2 压力测试 +压力测试(Stress Test)也称强度测试,是在强负载(大数据量、大量并发用户等)下的测试,通过查看应用系统在峰值使用情况下的状态发现系统的某项功能隐思、系统是否具有良好的容错能力和可恢复能力。压力测试涉及时间因素,用来测试那些负载不定的,或交互式的,实时的以及过程控制等程序。压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的破坏性压力测试。 + +压力测试也被看做是负载测试的一种特殊情况,即高负载下的负载测试,或者说压力测试采用负载测试技术。 + #### 5.2.3 可靠性测试 +软件可靠性是软件质量的一个重要标志。IEEE将软件可靠性定义为系统在特定的环境下,在给定的时间内无故障地运行的概率,软件可靠性涉及软件的性能、功能性、可用性、可服务性、可安装性、可维护性等多方面特性,是对软件在设计、生产以及在它所预定环境中具有所需功能的置信度的一个度量。 + +可靠性测试一般伴随着强壮性测试,是评估软件在运行时的可靠性,通过测试确认平均无故障时间、故障发生前的平均工作时间或因故障而停机的时间在一年中应不超过多少时间。可靠性测试强调随机输入,并通过模拟系统实现,很难通过实际系统的运行来实现。 + #### 5.2.4 数据库测试 +数据库测试一般包括数据库的完整测试和数据库容量测试。 + +1. 数据库完整测试 +数据库完整测试是指测试关系型数据库中的数据是否完整,用于防止对数据库的意外破坏,提高了完整性检测的效率。 + +> 数据库完整性原则如下所示: +> +> (1) 实体完整性 +> 实体完整性规定主码的任何属性都不能为空,通过主码的唯一性标识实体。 +> +> (2) 参照完整性 +> 参照完整性是对关系间引用数据的一种限制,参照完整性通过外码来体现,外码必须等> 于对应的主码或者为空。 +> +> (3) 用户自定义完整性 +> 例如,通过用户自定义完整性将员工的年龄限制在20~35岁之间,如果用户输入的年> 龄不在这个范围之内,就违反了“用户自定义完整性”的原则。 + +2. 数据库容量测试 +数据库容量测试是指数据库是否能存储数据量的极限,还用于确定在给定时间内能够持续处理的最大负载。 + #### 5.2.5 安全性测试 +安全性测试是测试系统在应付非授权的内部/外部访问、非法侵入或故意的损块时的系统防护能力,检验系统是否有能力使可能存在的内/外部伤害或损害的风险限制在可接变的水平内,可靠性通常包括安全性,但是软件的可靠性不能完全取代软件的安全性,安全性还涉及数据加密、保密、存取权限等多个方面。 + +进行安全性测试时,需要设计一些试图突破系统安全保密带施的测试用例,检验系统是否有安全保密漏洞,验证系统的保护机制是否能够在实际中不受到非法侵入,安全性测试采用建立整体的威胁模型,测试盟出漏洞、信息泄露、错误处理、身份验证和授权错误等。 + +在安全测试过程中,测试者扮演攻击系统的角色,一般采用如下方法: +1. 尝试截取、破译、获取系统密码。 +2. 让系统失效、瘫痪,将系统制服,使他人无法访问,自己非法进入。 +3. 试图浏览保密的数据,检验系统是否有安全保密的漏洞。 + #### 5.2.6 兼容性测试 +兼容性是指某个软件能够稳定地工作在某个操作系统/平台之中,就说这个软件对这个操作系统/平台是兼容的;其次,在多任务操作系统中,几个同时运行的软件之间如果能够稳定地工作,就认为这几个软件之间兼容性较好,否则就是兼容性不好;另外,就是软件数据的共享,几个软件之间无须复杂的转换,即可方便地共享相互之间的数据,也称为兼容。 + +软件兼容性测试要检查软件能否在不同组合的环境下正常运行,或者软件之间能否正常交互和共享信息。作为衡量软件好环的重要指标之一,软件兼容性用于保证软件在不同环境中都能按照用户期望的方式进行交互。 + +软件兼容性测试分为软件兼容性和数据兼容性,具体如下所示: +1. 软件兼容性 +软件兼容性是指平台的兼容性、浏览器兼容性和应用软件之间的兼容性。其中,平台兼容性用于检查哪些功能依赖于系统的调用,这些调用是否是某个平台或版本所独有的,是否在不同平台上有差异,然后标识出来,进行兼容性测试。 +由于许多软件在升级时会做出很多修改,需要检查使用方式是否和老版本兼容,这种操作性方面的兼容并非要求必须完全一样,而是让已经习惯了老版本操作的用户能很快适应新版本的变化。 + +2. 数据兼容性 +数据兼容性主要是指数据能否共享等。如通信协议的软件 兼容情况审查版本升级后,对网络通信协议也进行了升级,就要检查和老版本的通信协议是否一致,需要标识出来进行兼容性测试。 + #### 5.2.7 可用性测试 +可用性是系统正常运行的能力和程度,在一定程度上也是系统可靠性的表现,一般用如下公式表示: +``` +可用性 = 平均正常工作时间 / (平均正常工作时间 + 平均修复时间) +``` + +影响可用性的因素有如下几方面。 +1. 不充分的测试。 +2. 更改管理问题。 +3. 缺少在线监视和分析。 +4. 操作错误。 +5. 弱编码。 +6. 与外部服务或应用程序的交互。 +7. 不同的操作条件(使用级别更改、峰值重载)。 +8. 异常事件(安全性失败、广播风暴)。 +9. 硬件故障(硬盘、控制器、网络设备、服务器、电源、内存和CPU)。 +10. 环境问题(电源、冷却、火、洪水、灰尘、自然灾害)。 + +提高可用性的办法: +1. 使用群集 +集群包括至少将两个系统连接到一起,使两个服务器能够像一台机器那样工作。集群是高可用性的关键技术,因为它是在出现失败时,提供即时故障转移的应用程序服务。 + +2. 使用网络负载平衡 +网络负载平衡通过检测某服务器失败后,自动将通信量重新分发给仍然运行的服务器。 + +3. 使用服务级别协议 +定义期望的服务级别。可用性指标一般要求达到4个或5个“9”,例如,“该应用程序应每周运行7天,每天24小时,年可用性为99.99%”是指全年不能正常工作的时间仅仪只有52分钟,不足1个小时。 + +4. 提供实时的监视 +连续监视操作工作负荷和失败数据,对于发现趋势和改善服务至关重要。 + +5. 使用数据备份 + +6. 检查所有安全计划 +安全性是确保应用程序服务只对有资格的用户可用,还意味着保护应用程序使用的所有分布式组件和资源。 + ### 5.3 性能测试步骤 +1. 制定目标和分析系统; +2. 选择测试度量的方法; +3. 采用相关技术和工具; +4. 制定评估标准; +5. 设计测试用例; +6. 运行测试用例; +7. 分析测试结果。 + +#### 5.3.1 制定目标和分析系统 +性能测试计划中的第一步都会制定目标和分析系统。只有明确目标和了解系统构成,才会澄清测试范围,知道在测试中要掌握什么样的技术,明确目标是指确定客户需求和期望、实际业务需求和系统需求。 + +#### 5.3.2 选择测试度量的方法 +经过第一步的制定目标和分析系统后,接下来进行软件度量,收集系统相关的数据。度量包括如下内容: +1. 制定规范; +2. 制定相关流程、角色、职责; +3. 制定改进策略; +4. 制定结果对比标准。 + +#### 5.3.3 采用相关技术和工具 +性能测试是通过测试工具模拟大量用户操作,对系统增加负载,所以必须熟练地掌握和运用测试工具,由于性能测试工具一般基于不同的软件系统架构实现,脚本语言也不同,只有经过工具评估才能选择符合现有软件架构的性能测试工具。确定测试工具后,需要组织测试人员学习测试工具,培调相关的测试技术。 + +#### 5.3.4 制定评估标准 +任何测试的目的是确保软件符合预先规定的目标和要求。通常性能测试有线性投射、分析模型、模仿和基准4种模型技术用于评估。 + +1. 线性投射 +通过大量过去的、扩展的或者将来可能发生的数据组成散布图,利用这个图表不断和系统的当前状况进行对比。 + +2. 分析模型 +通过预测响应时间,将工作量的数据和系统本质关联起来,进行分析模型。 + +3. 模仿 +模仿实际用户的使用方法,反复测试系统。 + +4. 基准 +定义测试作为标准,与后面进行的测试结果进行对比。 + +#### 5.3.5 设计测试用例 +设计测试用例的原则是受最小的影响,提供最多的测试信息。设计测试用例的目标一次尽可能包含多个测试要素,这些测试用例必须是测试工具可以实现的,不同的测试场景将测试不同的功能。 + +#### 5.3.6 运行测试用例 +通过性能测试工具运行测试用例,需要不同的测试环境以及不同的机器配置。 + +#### 5.3.7 分析测试结果 +运行测试用例后收集相关信息,进行数据统计分析,找到性能瓶颈。通过排除误差和其他因素,让测试结果体现真实情况。不同的体系结构,分析测试结果的方法也不同,B/S结构的系统通常会分析网络带宽、流量对用户操作响应的影响,而C/S结构可能更关心系统整体配置对用户操作的影响。 + ### 5.4 Web测试 -### 5.5知识点总结 +基于Web的软件架构系统的测试与传统的软件测试不同,不但需要检查和验证网站是否按照设计的要求运行,还要测试网站是否适合不同用户的浏览器显示,并要从最终的使用用户的角度进行安全性和可用性的各项测试。 + +#### 5.4.1 Web系统体系结构 +1. 客户端表示层,一般就是Web浏览器,用于从位于Web服务器下载数据,到本地的浏览器中执行。 +2. 应用服务器层,处理应用中的所有业务逻辑,包括对数据库的访问等工作,该层具有良好的可扩充性,可以随着应用的需要任意增加服务的数目。 +3. 数据中心层,主要由数据库组成,用于存放数据。 + +#### 5.4.2 用户界面测试 +1. 导航测试 +导航描述了用户在不同的连接页面之间跳转的方式。导航测试需要考虑下列问题,从而决定一个Web应用系统是否易于导航。 +(1) 导航是否直观? +(2) Web系统的主要部分是否可通过主页存取? +(3) Web系统是否需要站点地图、搜索引擎或其他的导航帮助? +(4) Web应用系统的页面结构、导航、菜单、连接的风格是否一致? +(5) 确保用户凭直党就知道Web应用系统里面是否还有内容,内容在什么地方 + +2. 图形测试 +在Web应用系统中,适当的图形不但能起到广告宣传的作用,而且具有美化页面的功能。一个Web应用系统的图形包括图片、动画、边框、颜色、字体、背景、按钮等。 +(1) 确保用于链接的图形都有明确的用途,能清楚地说明某件事情。 +(2) 验证所有页面字体的风格是否一致。 +(3) 背景颜色应该与字体颜色和前景颜色相搭配。 +(4) 图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF格式压缩。 + +3. 内容测试 +内容测试用来检验Web应用系统提供信息的正确性、准确性和相关性。信息的正确性是指信息是可靠的还是误传的。例如,在商品价格列表中,错误的价格可能引起财务问题。 + +信息的准确性是指是否有语法或拼写错误。例如,Word中的“拼音与语法检查”功能。 + +信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口。例如,有些网站页面中的“相关文章列表”。 + +4. 整体界面测试 +整体界面是指整个Web应用系统页面结构的设计,它给用户的是一个整体感觉。例用户进行调查的过程,一般Web应用系统采取在主页上做一个调查问卷的形式来得到最终用户的反馈信息。 + +#### 5.4.3 功能测试 +功能测试作为黑盒测试的一个方面,用于检查实际软件的功能是否符合用户的需求。功能测试包括链接测试、表单测试、Cookies测试和数据库测试。 + +1. 链接测试 +链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些未知地址页面的主要手段。链接测试可分为如下三个方面: +(1) 测试所有链接是否按指示确实链接到了该链接的页面。 +(2) 测试所链接的页面是否存在。 +(3) 最后保证Web应用系统上没有孤立的页面。所谓孤立页面,是指没有链接指向该页面,只有知道正确的URL地址才能访问。 + +2. 表单测试 +当用户给Web应用系统管理员提交信息时,需要使用表单操作,如用户注册、登录、信息提交等,在这种情况下,必须测试提交操作的完整性,以校验提交给服务器的信息的正确性,例如,用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等,如果使用了默认值,则要检验默认值的正确性。表单测试需要验证服务器是否能正确保存这些数据,而且后台运行的程序能否正确解释和使用这些信息。 + +3. Cookies测试 +Cookies通常用来存储用户信息,是让网站服务器把少量数据储存到客户端的硬盘或内存,或者是从客户端的硬盘读取数据的一种技术。Cookies通常用来存储用户信息和用户在某些应用系统的操作,如用户ID、密码、浏览过的网页、停留的时间等信息。当用户下次再来到该网站时,网站通过读取Cookies得知用户的相关信息,从而做出相应的动作,如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,以及刷新对Cookies有什么影响等。 + +4. 数据库测试 +关系型数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。一般情况下,数据库测试可能发生两种错误,数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确造成的,输出错误主要是由于网络速度或程序设计等问题引起的。 + +#### 5.4.4 性能测试 +1. 链接速度测试 +用户连接到Web应用系统的速度根据上网方式的变化而变化,或许是电话拨号,或许是宽带上网。下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5s),用户就会因没有耐心等待而离开。另外,有些页面有超时的限制,如果响应速度太慢,用户可能还来不及浏览内容就需要重新登录了,而且,连接速度太慢还可能引起数据丢失,使用户得不到真实的页面。 + +2. 负载测试 +负载测试是模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其他加载方式来观察不同负载下系统的响应时间和数据吞吐量系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,用于发现系统可能存在的性能瓶颈、内存泄露、不能实时同步等问题。例如,Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?Web应用系统是否能处理大量用户对同个页面的请求? + +3. 压力测试 +压力测试是在强负载(大数据量,大量并非用户等)下的测试,检查应用系统在峰值使情况下的操作行为,从而有效地发现系统的某项功能隐患,系统是否具有良好的容错能和可恢复能力(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的坏性压力测试。 + +#### 5.4.5 兼容性测试 +1. 平台兼容性测试 +市场上有很多操作系统,例如Windows、Unix、Macintosh、Linux等。Web应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样就可能会发生兼容性问题。即,同一个应用在某些操作系统下能正常运行,但在另外一些操作系统下可能会运行失败。因此,在Web系统发布之前,需要在各种操作系统下对Web系统进行兼容性测试。 + +2. 浏览器兼容性测试 +浏览器是Web客户端的核心构件,来自不同厂商的浏览器对Java、JavaScript、ActiveX有不同的支持。例如,Active X是Microsoft的产品,是为IE而设计的.JavaScript是Netscape的产品,Java是Sun的产品等等。不同的浏览器对安全性的设置不一样。网页的框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。 + +3. 分辨率兼容性测试 +分辨率的测试是为了页面版在不同的分辨率模式下能正常显示,字体符合要求而进行的测试。现在常见的分辨率是1280×1024、1027×768、800×600。对于常见的分辨率,测试必须保证测试通过,对于其他分辨率,根据具体情况进行取舍。 + +4. 组合兼容性测试 +最后需要进行组合测试。理想的情况是,系统能在所有机器上运行,这样就不会限制将来的发展和变动。 + +#### 5.4.6 安全性测试 +安全性测试是检验在系统中已存在的安全性保密性措施是否发挥作用。一般情况下,网络软件的安全评估包括以下内容: +1. 检验和测试网络软件中涉及数据传输各部分的配置对安全的影响; +2. 会话跟踪是否足够; +3. 是否正确使用了加密技术; +4. 变量限制的设定; +5. 服务器端执行程序中的安全漏洞; +6. HTML源码中是否有敏感的信息或没有必须出现的信息。 + +Web应用系统的安全性测试区域主要如下所示: +1. 用户身份认证 +Web应用系统基本采用先注册、后登录的方式。因此,必须测试有效和无效的用户名和密码,注意是否大小写敏感、次数的限制,是否不登录而直接浏览某个页面等。 +(1) 用户ID选定的复杂程度是否足够。 +(2) 拒绝登录是否可靠(用户经n次登录失败后会遭遇拒绝登录)。 +(3) 用户密码是否留在客户端处。 +(4) 登录出错提示是否正确。 +(5) 密码设定及管理的规定是否足够严格。 + +2. 用户授权 +(1) Cookie的使用是否正确。 +(2) 高速缓存数据的处理是否安全。 +(3) 跟踪逻辑是否合理。 +(4) 接管会话的发生率。 + +3. 信息外泄 +信息外泄主要是检查HTML源码中是否有信息外泄的情况(如改版的情况、说明、主机的内部信息等)。 + +4. 字段变量的控制 +(1) 是否去除了缓冲存储溢出(如检测过长URL引起的缓冲存储溢出)。 +(2) SQL语句变量植入的控制。 +(3) 是否严格控制在字段中嵌入系统指令。 + +5. 会话时间控制 +Web应用系统是否有超时的限制,也就是说,用户登录后在一定时间内(例如15min)没有单击任何页面,是否需要重新登录才能正常使用。 +(1) 是否允许“返回”(会话结束后)。 +(2) 是否允许单一会话(同一用户不能同时多次登录)。 +(3) 是否及时清除或处理失效用户的登录认证。 +(4) 空机超时控制。 + +6. 高速缓存控制 +为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。 +(1) 不允许任何敏感资料存放在终端机。 +(2) 不允许任何可以重开会话的会话跟踪资料存储。 + +7. 服务器软件逻辑 +服务器端的脚本常常构成安全漏洞,要测试没有经过授权就不能在服务器端放置和编辑脚本的问题。 +(1) 网络软件执行环境。 +(2) 网络软件与数据库的连接。 +(3) 内部代理服务器的监测。 +(4) 应用过程界面,所有指令是否获得许可。 + +8. 用户端软件脆弱性检测 +9. 用户端的各种设定 +10. 错误处理 +(1) 出错提示是否含有敏感资料或消息。 +(2) 出错提示含有揭示数据库及中介软件的资料是否暴露所使用的软件。 + +11. 第三方软件的安全程度 +(1) 所有中介软件是否涉及已公布于众的安全漏洞。 +(2) 网络软件所使用的通信协议。 +(3) 软件的安全设定。 + +12. 网络软件的管理 +(1) 是否订立明确的管理条款、程序。 +(2) 进入管理网页的控制是否严密。 +(3) 远程登录管理的安全性。 + +13. 数据加密 +(1) 加密的力度是否够。 +(2) 用户密码的存储是否安全。 +(3) 密匙管理以及密匙撤销是否立即生效。 + +### 5.5 知识点总结 +1. 性能测试基本概念(响应时间、并发数、吞吐量) +2. 负载测试 +3. 压力测试 +4. 可靠性测试 +5. 数据库测试 +6. 安全性测试 +7. 兼容性测试 +8. 可用性测试 +9. 性能测试步骤 +10. Web测试 ## 第6章 软件测试流程 ### 6.1 软件测试流程概述 @@ -1534,7 +1899,6 @@ MC/DC具有如下优点: 2. 自底向上测试采用驱动模块模拟了所有调用,但是需要等到只有最后一个模块加入才能知道整个系统的框架。 3. 三明治集成测试采用自顶向下、自底向上的结合方式,并采取持续集成策略,有助于尽早发现缺陷,提高工作效率。 - #### 6.5.3 系统测试 一般情况下,系统测试采用黑盒法来进行测试的,以此来检查该系统是否符合软件需求。本阶段的主要测试内容包括健壮性测试、性能测试、功能测试、安装或反安装测试、用户界面测试、压力测试、可靠性及安全性测试等。为了有效保证这一阶段测试的客观性,必须由独立的测试小组来进行相关的系统测试。另外,系统测试过程较为复杂,由于在系统测试阶段不断变更需求造成功能的删除或增加,从而使程序不断出现相应的更改,而程序在更改后可能会出现新的问题,或者原本没有问题的功能由于更改导致出现问题。所以,测试人员必须进行回归测试。 -- Gitee From 1c3bf7e9c9455dc99466cb02015fd83d612e8b4e Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Thu, 23 Sep 2021 23:57:05 +0800 Subject: [PATCH 34/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 794e830..d42e711 100644 --- a/README.md +++ b/README.md @@ -1370,7 +1370,7 @@ C ̂≈ C+ 3√C > eg. > -> 一个软件系统每天大约有400个用户访问,用户在一天之内有8小时使用该系统,从登> 录到退出该系统的平均时间为4小时。 +> 一个软件系统每天大约有400个用户访问,用户在一天之内有8小时使用该系统,从登录到退出该系统的平均时间为4小时。 > C=400×4/8=200 > C ̂≈200+3×√200=242 @@ -1394,9 +1394,8 @@ T:性能测试所用的时间。 #### 5.1.5 资源利用率 资源利用率与性能计数器关系密切,是指系统中各种资源的使用状况,在通常的情况下,资源利用率需要结合响应时间变化曲线、系统负载曲线等各种指标进行综合分析。 -资源利用率计算公式如下所示: - -资源利用率 = 资源的实际使用 / 总的资源可用量 +资源利用率计算公式如下所示: +**资源利用率 = 资源的实际使用 / 总的资源可用量** ### 5.2 性能测试分类 #### 5.2.1 负载测试 @@ -1432,18 +1431,15 @@ T:性能测试所用的时间。 1. 数据库完整测试 数据库完整测试是指测试关系型数据库中的数据是否完整,用于防止对数据库的意外破坏,提高了完整性检测的效率。 -> 数据库完整性原则如下所示: -> -> (1) 实体完整性 -> 实体完整性规定主码的任何属性都不能为空,通过主码的唯一性标识实体。 -> -> (2) 参照完整性 -> 参照完整性是对关系间引用数据的一种限制,参照完整性通过外码来体现,外码必须等> 于对应的主码或者为空。 -> -> (3) 用户自定义完整性 -> 例如,通过用户自定义完整性将员工的年龄限制在20~35岁之间,如果用户输入的年> 龄不在这个范围之内,就违反了“用户自定义完整性”的原则。 + 数据库完整性原则如下所示: +(1) 实体完整性 +实体完整性规定主码的任何属性都不能为空,通过主码的唯一性标识实体。 +(2) 参照完整性 +参照完整性是对关系间引用数据的一种限制,参照完整性通过外码来体现,外码必须等> 于对应的主码或者为空。 +(3) 用户自定义完整性 +例如,通过用户自定义完整性将员工的年龄限制在20~35岁之间,如果用户输入的年> 龄不在这个范围之内,就违反了“用户自定义完整性”的原则。 -2. 数据库容量测试 +1. 数据库容量测试 数据库容量测试是指数据库是否能存储数据量的极限,还用于确定在给定时间内能够持续处理的最大负载。 #### 5.2.5 安全性测试 -- Gitee From eb9ca7dc226f3dddd5e0aafac15e8ac0f639e083 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Thu, 23 Sep 2021 23:59:05 +0800 Subject: [PATCH 35/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=BC=A9=E8=BF=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index d42e711..42008d7 100644 --- a/README.md +++ b/README.md @@ -1431,13 +1431,15 @@ T:性能测试所用的时间。 1. 数据库完整测试 数据库完整测试是指测试关系型数据库中的数据是否完整,用于防止对数据库的意外破坏,提高了完整性检测的效率。 - 数据库完整性原则如下所示: -(1) 实体完整性 -实体完整性规定主码的任何属性都不能为空,通过主码的唯一性标识实体。 -(2) 参照完整性 -参照完整性是对关系间引用数据的一种限制,参照完整性通过外码来体现,外码必须等> 于对应的主码或者为空。 -(3) 用户自定义完整性 -例如,通过用户自定义完整性将员工的年龄限制在20~35岁之间,如果用户输入的年> 龄不在这个范围之内,就违反了“用户自定义完整性”的原则。 + > + > 数据库完整性原则如下所示: + > (1) 实体完整性 + > 实体完整性规定主码的任何属性都不能为空,通过主码的唯一性标识实体。 + > (2) 参照完整性 + > 参照完整性是对关系间引用数据的一种限制,参照完整性通过外码来体现,外码必须等于对应的主码或者为空。 + > (3) 用户自定义完整性 + > 例如,通过用户自定义完整性将员工的年龄限制在20~35岁之间,如果用户输入的年龄不在这个范围之内,就违反了“用户自定义完整性”的原则。 + > 1. 数据库容量测试 数据库容量测试是指数据库是否能存储数据量的极限,还用于确定在给定时间内能够持续处理的最大负载。 -- Gitee From d5e0733579429f0cf1ff64eacca4d36c164c7eaf Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Fri, 24 Sep 2021 00:03:02 +0800 Subject: [PATCH 36/63] =?UTF-8?q?=E6=8D=A2=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 44 +++++++++++++++++++++----------------------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 42008d7..a41a169 100644 --- a/README.md +++ b/README.md @@ -1431,7 +1431,6 @@ T:性能测试所用的时间。 1. 数据库完整测试 数据库完整测试是指测试关系型数据库中的数据是否完整,用于防止对数据库的意外破坏,提高了完整性检测的效率。 - > > 数据库完整性原则如下所示: > (1) 实体完整性 > 实体完整性规定主码的任何属性都不能为空,通过主码的唯一性标识实体。 @@ -1439,9 +1438,8 @@ T:性能测试所用的时间。 > 参照完整性是对关系间引用数据的一种限制,参照完整性通过外码来体现,外码必须等于对应的主码或者为空。 > (3) 用户自定义完整性 > 例如,通过用户自定义完整性将员工的年龄限制在20~35岁之间,如果用户输入的年龄不在这个范围之内,就违反了“用户自定义完整性”的原则。 - > -1. 数据库容量测试 +2. 数据库容量测试 数据库容量测试是指数据库是否能存储数据量的极限,还用于确定在给定时间内能够持续处理的最大负载。 #### 5.2.5 安全性测试 @@ -1602,26 +1600,26 @@ Cookies通常用来存储用户信息,是让网站服务器把少量数据储 关系型数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。一般情况下,数据库测试可能发生两种错误,数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确造成的,输出错误主要是由于网络速度或程序设计等问题引起的。 #### 5.4.4 性能测试 -1. 链接速度测试 +1. 链接速度测试 用户连接到Web应用系统的速度根据上网方式的变化而变化,或许是电话拨号,或许是宽带上网。下载一个程序时,用户可以等较长的时间,但如果仅仅访问一个页面就不会这样。如果Web系统响应时间太长(例如超过5s),用户就会因没有耐心等待而离开。另外,有些页面有超时的限制,如果响应速度太慢,用户可能还来不及浏览内容就需要重新登录了,而且,连接速度太慢还可能引起数据丢失,使用户得不到真实的页面。 -2. 负载测试 +2. 负载测试 负载测试是模拟实际软件系统所承受的负载条件的系统负荷,通过不断加载(如逐渐增加模拟用户的数量)或其他加载方式来观察不同负载下系统的响应时间和数据吞吐量系统占用的资源(如CPU、内存)等,以检验系统的行为和特性,用于发现系统可能存在的性能瓶颈、内存泄露、不能实时同步等问题。例如,Web应用系统能允许多少个用户同时在线?如果超过了这个数量,会出现什么现象?Web应用系统是否能处理大量用户对同个页面的请求? -3. 压力测试 +3. 压力测试 压力测试是在强负载(大数据量,大量并非用户等)下的测试,检查应用系统在峰值使情况下的操作行为,从而有效地发现系统的某项功能隐患,系统是否具有良好的容错能和可恢复能力(如24小时以上)的稳定性压力测试和极限负载情况下导致系统崩溃的坏性压力测试。 #### 5.4.5 兼容性测试 -1. 平台兼容性测试 +1. 平台兼容性测试 市场上有很多操作系统,例如Windows、Unix、Macintosh、Linux等。Web应用系统的最终用户究竟使用哪一种操作系统,取决于用户系统的配置。这样就可能会发生兼容性问题。即,同一个应用在某些操作系统下能正常运行,但在另外一些操作系统下可能会运行失败。因此,在Web系统发布之前,需要在各种操作系统下对Web系统进行兼容性测试。 -2. 浏览器兼容性测试 +2. 浏览器兼容性测试 浏览器是Web客户端的核心构件,来自不同厂商的浏览器对Java、JavaScript、ActiveX有不同的支持。例如,Active X是Microsoft的产品,是为IE而设计的.JavaScript是Netscape的产品,Java是Sun的产品等等。不同的浏览器对安全性的设置不一样。网页的框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。 -3. 分辨率兼容性测试 +3. 分辨率兼容性测试 分辨率的测试是为了页面版在不同的分辨率模式下能正常显示,字体符合要求而进行的测试。现在常见的分辨率是1280×1024、1027×768、800×600。对于常见的分辨率,测试必须保证测试通过,对于其他分辨率,根据具体情况进行取舍。 -4. 组合兼容性测试 +4. 组合兼容性测试 最后需要进行组合测试。理想的情况是,系统能在所有机器上运行,这样就不会限制将来的发展和变动。 #### 5.4.6 安全性测试 @@ -1670,31 +1668,31 @@ Web应用系统是否有超时的限制,也就是说,用户登录后在一 7. 服务器软件逻辑 服务器端的脚本常常构成安全漏洞,要测试没有经过授权就不能在服务器端放置和编辑脚本的问题。 -(1) 网络软件执行环境。 -(2) 网络软件与数据库的连接。 -(3) 内部代理服务器的监测。 -(4) 应用过程界面,所有指令是否获得许可。 +(1) 网络软件执行环境。 +(2) 网络软件与数据库的连接。 +(3) 内部代理服务器的监测。 +(4) 应用过程界面,所有指令是否获得许可。 8. 用户端软件脆弱性检测 9. 用户端的各种设定 -10. 错误处理 -(1) 出错提示是否含有敏感资料或消息。 -(2) 出错提示含有揭示数据库及中介软件的资料是否暴露所使用的软件。 +10. 错误处理 +(1) 出错提示是否含有敏感资料或消息。 +(2) 出错提示含有揭示数据库及中介软件的资料是否暴露所使用的软件。 -11. 第三方软件的安全程度 +11. 第三方软件的安全程度 (1) 所有中介软件是否涉及已公布于众的安全漏洞。 (2) 网络软件所使用的通信协议。 (3) 软件的安全设定。 -12. 网络软件的管理 +12. 网络软件的管理 (1) 是否订立明确的管理条款、程序。 (2) 进入管理网页的控制是否严密。 (3) 远程登录管理的安全性。 -13. 数据加密 -(1) 加密的力度是否够。 -(2) 用户密码的存储是否安全。 -(3) 密匙管理以及密匙撤销是否立即生效。 +13. 数据加密 +(1) 加密的力度是否够。 +(2) 用户密码的存储是否安全。 +(3) 密匙管理以及密匙撤销是否立即生效。 ### 5.5 知识点总结 1. 性能测试基本概念(响应时间、并发数、吞吐量) -- Gitee From ff231caa72a6fa28413e9e0758d00f6fce5b3205 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Fri, 24 Sep 2021 00:04:19 +0800 Subject: [PATCH 37/63] =?UTF-8?q?=E6=8D=A2=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index a41a169..a99dbf7 100644 --- a/README.md +++ b/README.md @@ -1640,33 +1640,33 @@ Web应用系统基本采用先注册、后登录的方式。因此,必须测 (4) 登录出错提示是否正确。 (5) 密码设定及管理的规定是否足够严格。 -2. 用户授权 -(1) Cookie的使用是否正确。 -(2) 高速缓存数据的处理是否安全。 -(3) 跟踪逻辑是否合理。 -(4) 接管会话的发生率。 +2. 用户授权 +(1) Cookie的使用是否正确。 +(2) 高速缓存数据的处理是否安全。 +(3) 跟踪逻辑是否合理。 +(4) 接管会话的发生率。 -3. 信息外泄 -信息外泄主要是检查HTML源码中是否有信息外泄的情况(如改版的情况、说明、主机的内部信息等)。 +3. 信息外泄 +信息外泄主要是检查HTML源码中是否有信息外泄的情况(如改版的情况、说明、主机的内部信息等)。 -4. 字段变量的控制 +4. 字段变量的控制 (1) 是否去除了缓冲存储溢出(如检测过长URL引起的缓冲存储溢出)。 (2) SQL语句变量植入的控制。 (3) 是否严格控制在字段中嵌入系统指令。 -5. 会话时间控制 -Web应用系统是否有超时的限制,也就是说,用户登录后在一定时间内(例如15min)没有单击任何页面,是否需要重新登录才能正常使用。 +5. 会话时间控制 +Web应用系统是否有超时的限制,也就是说,用户登录后在一定时间内(例如15min)没有单击任何页面,是否需要重新登录才能正常使用。 (1) 是否允许“返回”(会话结束后)。 (2) 是否允许单一会话(同一用户不能同时多次登录)。 (3) 是否及时清除或处理失效用户的登录认证。 (4) 空机超时控制。 -6. 高速缓存控制 -为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。 -(1) 不允许任何敏感资料存放在终端机。 -(2) 不允许任何可以重开会话的会话跟踪资料存储。 +6. 高速缓存控制 +为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进了日志文件、是否可追踪。 +(1) 不允许任何敏感资料存放在终端机。 +(2) 不允许任何可以重开会话的会话跟踪资料存储。 -7. 服务器软件逻辑 +7. 服务器软件逻辑 服务器端的脚本常常构成安全漏洞,要测试没有经过授权就不能在服务器端放置和编辑脚本的问题。 (1) 网络软件执行环境。 (2) 网络软件与数据库的连接。 -- Gitee From e9bea7bc82a2931e6eb61a09c45ffb9740990fc2 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Fri, 24 Sep 2021 00:05:22 +0800 Subject: [PATCH 38/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index a99dbf7..dd9bb9b 100644 --- a/README.md +++ b/README.md @@ -1431,13 +1431,13 @@ T:性能测试所用的时间。 1. 数据库完整测试 数据库完整测试是指测试关系型数据库中的数据是否完整,用于防止对数据库的意外破坏,提高了完整性检测的效率。 - > 数据库完整性原则如下所示: - > (1) 实体完整性 - > 实体完整性规定主码的任何属性都不能为空,通过主码的唯一性标识实体。 - > (2) 参照完整性 - > 参照完整性是对关系间引用数据的一种限制,参照完整性通过外码来体现,外码必须等于对应的主码或者为空。 - > (3) 用户自定义完整性 - > 例如,通过用户自定义完整性将员工的年龄限制在20~35岁之间,如果用户输入的年龄不在这个范围之内,就违反了“用户自定义完整性”的原则。 + 数据库完整性原则如下所示: + (1) 实体完整性 + 实体完整性规定主码的任何属性都不能为空,通过主码的唯一性标识实体。 + (2) 参照完整性 + 参照完整性是对关系间引用数据的一种限制,参照完整性通过外码来体现,外码必须等于对应的主码或者为空。 + (3) 用户自定义完整性 + 例如,通过用户自定义完整性将员工的年龄限制在20~35岁之间,如果用户输入的年龄不在这个范围之内,就违反了“用户自定义完整性”的原则。 2. 数据库容量测试 数据库容量测试是指数据库是否能存储数据量的极限,还用于确定在给定时间内能够持续处理的最大负载。 -- Gitee From 38c68a75cba501ba71cbb27b605c12665d4ef382 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Fri, 24 Sep 2021 00:09:24 +0800 Subject: [PATCH 39/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=8D=A2=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index dd9bb9b..154e19c 100644 --- a/README.md +++ b/README.md @@ -1556,7 +1556,7 @@ T:性能测试所用的时间。 3. 数据中心层,主要由数据库组成,用于存放数据。 #### 5.4.2 用户界面测试 -1. 导航测试 +1. 导航测试 导航描述了用户在不同的连接页面之间跳转的方式。导航测试需要考虑下列问题,从而决定一个Web应用系统是否易于导航。 (1) 导航是否直观? (2) Web系统的主要部分是否可通过主页存取? @@ -1564,39 +1564,39 @@ T:性能测试所用的时间。 (4) Web应用系统的页面结构、导航、菜单、连接的风格是否一致? (5) 确保用户凭直党就知道Web应用系统里面是否还有内容,内容在什么地方 -2. 图形测试 +2. 图形测试 在Web应用系统中,适当的图形不但能起到广告宣传的作用,而且具有美化页面的功能。一个Web应用系统的图形包括图片、动画、边框、颜色、字体、背景、按钮等。 (1) 确保用于链接的图形都有明确的用途,能清楚地说明某件事情。 (2) 验证所有页面字体的风格是否一致。 (3) 背景颜色应该与字体颜色和前景颜色相搭配。 (4) 图片的大小和质量也是一个很重要的因素,一般采用JPG或GIF格式压缩。 -3. 内容测试 +3. 内容测试 内容测试用来检验Web应用系统提供信息的正确性、准确性和相关性。信息的正确性是指信息是可靠的还是误传的。例如,在商品价格列表中,错误的价格可能引起财务问题。 -信息的准确性是指是否有语法或拼写错误。例如,Word中的“拼音与语法检查”功能。 + 信息的准确性是指是否有语法或拼写错误。例如,Word中的“拼音与语法检查”功能。 -信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口。例如,有些网站页面中的“相关文章列表”。 + 信息的相关性是指是否在当前页面可以找到与当前浏览信息相关的信息列表或入口。例如,有些网站页面中的“相关文章列表”。 -4. 整体界面测试 +4. 整体界面测试 整体界面是指整个Web应用系统页面结构的设计,它给用户的是一个整体感觉。例用户进行调查的过程,一般Web应用系统采取在主页上做一个调查问卷的形式来得到最终用户的反馈信息。 #### 5.4.3 功能测试 功能测试作为黑盒测试的一个方面,用于检查实际软件的功能是否符合用户的需求。功能测试包括链接测试、表单测试、Cookies测试和数据库测试。 -1. 链接测试 +1. 链接测试 链接是Web应用系统的一个主要特征,它是在页面之间切换和指导用户去一些未知地址页面的主要手段。链接测试可分为如下三个方面: (1) 测试所有链接是否按指示确实链接到了该链接的页面。 (2) 测试所链接的页面是否存在。 (3) 最后保证Web应用系统上没有孤立的页面。所谓孤立页面,是指没有链接指向该页面,只有知道正确的URL地址才能访问。 -2. 表单测试 +2. 表单测试 当用户给Web应用系统管理员提交信息时,需要使用表单操作,如用户注册、登录、信息提交等,在这种情况下,必须测试提交操作的完整性,以校验提交给服务器的信息的正确性,例如,用户填写的出生日期与职业是否恰当,填写的所属省份与所在城市是否匹配等,如果使用了默认值,则要检验默认值的正确性。表单测试需要验证服务器是否能正确保存这些数据,而且后台运行的程序能否正确解释和使用这些信息。 -3. Cookies测试 +3. Cookies测试 Cookies通常用来存储用户信息,是让网站服务器把少量数据储存到客户端的硬盘或内存,或者是从客户端的硬盘读取数据的一种技术。Cookies通常用来存储用户信息和用户在某些应用系统的操作,如用户ID、密码、浏览过的网页、停留的时间等信息。当用户下次再来到该网站时,网站通过读取Cookies得知用户的相关信息,从而做出相应的动作,如果Web应用系统使用了Cookies,就必须检查Cookies是否能正常工作。测试的内容可包括Cookies是否起作用,是否按预定的时间进行保存,以及刷新对Cookies有什么影响等。 -4. 数据库测试 +4. 数据库测试 关系型数据库为Web应用系统的管理、运行、查询和实现用户对数据存储的请求等提供空间。一般情况下,数据库测试可能发生两种错误,数据一致性错误和输出错误。数据一致性错误主要是由于用户提交的表单信息不正确造成的,输出错误主要是由于网络速度或程序设计等问题引起的。 #### 5.4.4 性能测试 @@ -1712,10 +1712,10 @@ Web应用系统是否有超时的限制,也就是说,用户登录后在一 ![软件测试流程](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/ceshiliucheng.jpg) -1. **测试计划:**根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求告,使得随后所有测试工作都围绕着测试需求来进行。同时适当选择测试内容,合理安非测试人员、测试时间及测试资源等。 -2. **测试设计:**测试设计是指将测试计划阶段制定的测试需求分解、细化为若干个可执行的测试过,并为每个测试过程选择适当的测试用例,保证测试结果的有效性。 -3. **测试执行:**执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理。测试执行一般由单元测试、集成测试、系统测试、验收测试以及回归测试等步骤组成。 -4. **测试评估:**根据缺陷跟踪报告,对软件的质量和开发团队的工作进度及效率进行评价。 +1. **测试计划:** 根据用户需求报告中关于功能要求和性能指标的规格说明书,定义相应的测试需求告,使得随后所有测试工作都围绕着测试需求来进行。同时适当选择测试内容,合理安非测试人员、测试时间及测试资源等。 +2. **测试设计:** 测试设计是指将测试计划阶段制定的测试需求分解、细化为若干个可执行的测试过,并为每个测试过程选择适当的测试用例,保证测试结果的有效性。 +3. **测试执行:** 执行测试开发阶段建立的自动测试过程,并对所发现的缺陷进行跟踪管理。测试执行一般由单元测试、集成测试、系统测试、验收测试以及回归测试等步骤组成。 +4. **测试评估:** 根据缺陷跟踪报告,对软件的质量和开发团队的工作进度及效率进行评价。 ### 6.2 测试需求 测试需求根据市场/产品需求定义、分析文档和相关技术文档,输出《可测试性需求说明书》和《测试规格》等报告。 @@ -1985,9 +1985,9 @@ Web应用系统是否有超时的限制,也就是说,用户登录后在一 1. 选择全部测试用例 选择完全重复测试,是指将所有的测试用例全部再完全地执行一遍,以确认问题修改的正确性和修改后周边是否受到影响。缺点是由于要把用例全部执行一遍,因此会增加项目成本,也会影响项目进度,所以很难完全执行。 -**优点:** 这其实是最安全的方法,再测试全部用例具有最低的遗漏回归错误的风险,它几乎可以应用到任何情况下,且几乎不需要进行分析。 -**缺点:** 测试成本极其高昂 -**策略:** 定时执行全部回归(自动测试脚本)以及上线前执行。 + **优点:** 这其实是最安全的方法,再测试全部用例具有最低的遗漏回归错误的风险,它几乎可以应用到任何情况下,且几乎不需要进行分析。 + **缺点:** 测试成本极其高昂 + **策略:** 定时执行全部回归(自动测试脚本)以及上线前执行。 2. 基于风险选择测试用例 根据缺陷的严重性来进行测试,基于一定的风险标准,从测试用例库中选择回归测试包。选择最重要、关键以及可疑的测试,跪过那些次要的、例外的测试用例或功能相对非常稳定的模块。 @@ -2006,9 +2006,9 @@ Web应用系统是否有超时的限制,也就是说,用户登录后在一 7. 再测试修改部分 通过相依性识别软件的修改情况,将回归测试局限于被改变的模块,只选择相应的测试用例来做回归测试,此策略风险最大,但成本也是最低。 -**优点:** 工作量小 -**缺点:** 这个方法对测试人员的要求还是很高的,需要测试人员不仅要熟悉业务,还要能看懂代码且了解代码结构。这么来看这个方法风险还是很高的. -**策略:** 要求开发修订bug后在缺陷管理工具上直接标明影响范围,测试只做审核和实施。 + **优点:** 工作量小 + **缺点:** 这个方法对测试人员的要求还是很高的,需要测试人员不仅要熟悉业务,还要能看懂代码且了解代码结构。这么来看这个方法风险还是很高的。 + **策略:** 要求开发修订bug后在缺陷管理工具上直接标明影响范围,测试只做审核和实施。 ### 6.7 测试评估 #### 6.7.1 测试评估活动 @@ -2051,10 +2051,10 @@ Web应用系统是否有超时的限制,也就是说,用户登录后在一 矩阵的每行表示该阶段或活动发现的各阶段产生的缺陷数;矩阵的每列表示该阶段或活动注入的缺陷泄漏到后续各环节的缺陷数。 表中的参数解释如下: -**缺陷移除率=(本阶段发现的缺陷数/本阶段注入的缺陷数)×100%** +**缺陷移除率=(本阶段发现的缺陷数/本阶段注入的缺陷数)×100%** 如需求阶段一共注入了21个缺陷,需求评审时只发现了4个,设计过程中发现了13个,编码和单元测试阶段发现了2个,还有2个直到系统测试阶段才被发现。这样,需求阶段的缺陷移除率 4 / 21 * 100% = 19%。它反映的是该活动阶段的缺陷清除能力。 -**缺陷泄露率=(下游发现的本阶段缺陷数/本阶段注入的缺陷总数)×100%** +**缺陷泄露率=(下游发现的本阶段缺陷数/本阶段注入的缺陷总数)×100%** "缺陷泄漏率",即有多少本阶段注入的缺陷没有在本阶段发现而是被泄漏到后阶段环节才被发现。它反映的是本阶段质量控制措施落实的成效。 编码过程的缺陷大部分依赖系统测试发现。很显然,项目开发过程中的单元测试和集成测试活动开展不够深入。我们可以进一步分析这些系统测试出来的测试缺陷,是不是可以被更前端的评审/测试/设计讨论活动所替代。 -- Gitee From 0568cb9996076d51673bc370feea93a4e7844277 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Fri, 24 Sep 2021 17:14:15 +0800 Subject: [PATCH 40/63] =?UTF-8?q?=E8=BD=AF=E4=BB=B6=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E8=87=AA=E5=8A=A8=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 322 ++++++++++++++++++++++++++++++++++++++++++++- images/auto-lc.png | Bin 0 -> 29706 bytes images/auto-tx.png | Bin 0 -> 43880 bytes 3 files changed, 315 insertions(+), 7 deletions(-) create mode 100644 images/auto-lc.png create mode 100644 images/auto-tx.png diff --git a/README.md b/README.md index 154e19c..4340600 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,3 @@ - - # 软件测试 ## 写在最前面 @@ -2071,11 +2069,321 @@ Web应用系统是否有超时的限制,也就是说,用户登录后在一 5. 测试评估(缺陷分布分析、缺陷趋势分析、注入矩阵分析) ## 第7章 软件测试自动化 -#### 7.1 自动化测试和手工测试 -#### 7.2 测试成熟度模型 -#### 7.3 自动化测试体系 -#### 7.4 测试工具介绍 -#### 7.5 知识点总结 +### 7.1 自动化测试和手工测试 +随着计算机日益广泛的应用,软件变得越来越庞大和复杂,软件测试的工作量也随之增大。自动化测试采用软件测试工具实现手工测试难以实现的功能,减轻了手工测试的工作量,减少了测试的执行时间,提高了测试效率。 + +自动化测试往往适合以下场合: +1. 软件需求变动不频繁 +当软件需求变动过于频繁,势必多次更新测试用例以及测试脚本,而自动化测试适合于需求中相对稳定的模块。 + +2. 项目周期足够长 +自动化测试需求的确定、自动化测试框架的设计、测试脚本的编写与调试需要相当长的时间来完成,因此需要项目周期足够长。 + +3. 测试脚本重复使用的情况 +负载测试需要模拟大量并发用户,手工测试往往难以完成。 + +手工测试与自动化测试对比: + +|手工测试|自动化测试| +|----|----| +|效率低,耗费时间|效率高| +|耗费人力|覆盖率高| +|可靠性低|可靠性高| +|不一致性|可重复性利用| +|仅对一次性的测试有益|重复测试节省时间| +|对测试人员要求低|对测试人员要求高| + +当然,自动化测试也有如下的局限性,不能取代手工测试。 +1. 测试用例的设计:测试人员的经验和对错误的猜测能力是工具不可替代的; +2. 界面和用户体验测试:审美观和心理体验是不可替代的; +3. 正确性检查:对是否的判断、逻辑推理能力是工具不可替代的; +4. 手工测试比自动化测试发现的缺陷更多; +5. 不能用于测试周期很短的项目; +6. 不能保证100%的测试覆盖率; +7. 不能测试不稳定的软件; +8. 不能测试软件易用性。 + +### 7.2 自动化测试发展历程 +自动化测试发展经历了机械方式实现人工重复操作、统计分析的自动测试、面向目标的自动测试技术和智能应用的自动测试技术等4个阶段。 + +1. 机械方式实现人工重复操作 +自动化测试的最初研究主要集中在如何采用自动方法实现和替代人工测试中烦琐和机械重复的工作,将人工设计测试数据改变成自动生成测试数据的方法,对程序进行动态执行检测。此时的自动测试活动只是软件测试过程中出现的偶然行为,虽然在一定程度上可提高某些测试行为的效率,简化测试人员的工作,但对整体的测试过程并无太大的提高。 + +2. 统计分析的自动测试 +该阶段有针对性地引入了不同的测试准则和测试策略,指导测试的自动化过程以及对测试的结果进行评估。 + +3. 面向目标的自动测试技术 +面向目标的自动测试技术并不是机械和随机地发现错误的活动。由于各种高性能的算法,如进化计算和人工智能等领域被引入到自动测试技术中,因此测试具有很强的目的性。 + +4. 智能应用的自动测试技术 +引入能力成熟度模型后,不同的自动测试等级成为测试能力的一个衡量依据。 + +### 7.3 测试成熟度模型 +测试成熟度模置(Tetine Matnty Mold,TMM) 描述了测试的过程,分为初始级、定义级、集成级、管理和测量级和优化、预防缺陷和质量控制级五个等级。 + +#### 7.3.1 初始级 +TMM初始级软件测试过程的特点是测试过程无序,有时甚至是混乱的,几乎没有妥善定义的。在初始级中,软件测试与调试常常被混为一谈,软件开发过程中缺乏测试资源、工具以及训练有素的测试人员,初始级的软件测试过程没有定义成熟度目标。 + +#### 7.3.2 定义级 +TMM的定义级中,测试已具备基本的测试技术和方法,软件的测试与调试已经明确地区分开,这时,测试被定义为软件生命周期中的一个阶段,它紧随在编码阶段之后,由于测试计划往往在编码之后才制定,因此显然有悖于软件工程的要求。 + +TNM的定义级中需实现的3个成熟度目标:制定测试与调试目标,启动测试计划过程,制度化基本的测试技术和方法。 + +1. 制定测试与调试目标 + 软件组织必须区分软件开发的测试过程与调试过程,识别各自的目标、任务和活动。正确区分这两个过程是提高软件组织测试能力的基础。与调试工作不同,测试工作是种有计划的活动,可以进行管理和控制。这种管理和控制活动需要制定相应的策略和政策,以确定和协调这两个过程。 + + 制定测试与调试目标包含以下5个子成熟度目标: + (1) 分别形成测试组织和阔试组织,并有经费支持。 + (2) 规划并记录测试目标。 + (3) 规划并记录调试目标。 + (4) 将测试和调试目标形成文档,并分发至项目涉及的所有管理人员和开发人员。 + (5) 将测试目标反映在测试计划中。 + +2. 启动测试计划过程 + 测试计划作为过程可重复、可定义和可管理的基础,包括测试目的、风险分析、测试策略以及测试设计规格说明和测试用例,此外,测试计划还应说明如何分配测试资源,如何划分单元测试、集成测试、系统测试和验收测试。 + + 启动测试计划过程包含以下5个子目标: + (1) 建立组织内的测试计划组织,并予以经费支持。 + (2) 建立组织内的测试计划政策框架,并予以管理上的支持。 + (3) 开发测试计划模板并分发至项目的管理者和开发者。 + (4) 建立一种机制,使用户需求成为测试计划的依据之一。 + (5) 评价、推荐和获得基本的计划工具,并从管理上支持工具的使用。 + +3. 制度化基本的测试技术和方法 + 应用基本的测试技术和方法,并说明何时和怎样使用这些技术、方法和支持工具,基本的测试技术和方法的制度化有如下两个子目标: + (1) 在组织范围内成立测试技术组,研究、评价和推荐基本的测试技术和测试方法,推荐支持这些技术与万法的基本工具。 + (2) 制定管理方针,以保证在全组织范围内一致使用所推荐的技术和方法。 + +#### 7.3.3 集成级 +在TMM的集成级中,测试不再是编码阶段之后的阶段,已被扩展成与软件生命周期融为一体的一组活动。测试活动遵循V字模型,测试人员在需求分析阶段便开始着手制定测试计划,根据用户需求建立测试目标和设计测试用例。软件测试组织提供测试技术培训,测试工具支持关键测试活动。 + +集成级要实现如下4个成熟度目标:建立软件测试组织,制定技术培训计划,软件生命周期测试,控制和监视测试过程。 + +1. 建立软件测试组织 + 测试组完成与测试有关的活动,包括制定测试计划,实施测试执行,记录测试结果,制定与测试有关的标准和测试度量,建立测试数据库、测试重用、测试跟踪以及测试评价等。 + + 建立软件测试组织要实现以下4个子目标: + (1) 建立全组织范围内的测试组,并得到上级管理层的领导和各方面的支持,包括经费支持。 + (2) 定义测试组的作用和职责。 + (3) 由训练有素的人员组成测试组。 + (4) 建立与用户或客户的联系,收集他们对测试的需求和建议。 + +2. 制定技术培训计划 + 为高效率地完成好测试工作,测试人员必须经过适当的培训。 + + 制定技术培训规划有以下3个子目标。 + (1) 制定组织的培训计划,并在管理上提供包括经费在内的支持。 + (2) 制定培训目标和具体的培训计划。 + (3) 成立培训组,配备相应的工具、设备和教材。 + +3. 软件生命周期测试 + 提高测试成熟度和改善软件产品质量都要求将测试工作与软件生命周期中的各个阶段联系起来。 + + 该目标有以下4个子目标: + (1) 将测试阶段划分为子阶段,并与软件生命周期的各阶段相联系。 + (2) 基于已定义的测试子阶段,采用软件生命周期V字模型。 + (3) 制定与测试相关的工作产品的标准。 + (4) 建立测试人员与开发人员共同工作的机制。这种机制有利于促进将测试活动集成与软件生命周期中。 + +4. 控制和监视测试过程 + 软件组织采取如下措施,制定测试产品的标准,制定与测试相关的偶发事件的处理预案,确定测试里程碑,确定评估测试效率的度量,建立测试日志等。 + + 控制和监视测试过程有以下3个子目标: + (1)制定控制和监视测试过程的机制和政策。 + (2)定义、记录并分配一组与测试过程相关的基本测量。 + (3)开发、记录并文档化一组纠偏措施和偶发事件处理预案,以备实际测试严重偏离计划时使用。 + +在TMM的定义级,测试过程中引入计划能力,在TMM的集成级,测试过程引入控制和监视活动。两者均为测试过程提供了可见性,为测试过程持续进行提供保证。 + +#### 7.3.4 管理和测量级 +在TMM的管理和测量级中,测试活动包括软件生命周期中各个阶段的评审、审查和追查,使得测试活动涵盖软件验证和确认活动。因为测试是可以量化并度量的过程,根据管理和测量级要求,与软件测试相关的活动,如测试计划、测试设计和测试步骤,都要经过评审。为了测量测试过程,建立了测试数据库,用于收集和记录测试用例,记录缺陷并按缺陷的严重程度划分等级。此外,所建立的测试规程应能够支持软件组中对测试过程的控制和测量。 + +管理和测量级有3个要实现的成熟度目标:建立组织范围内的评审程序,建立测试过程的测量程序和软件质量评价。 + +1. 建立组织范围内的评审程序 + 软件组织应在软件生命周期的各阶段实施评审,以便尽早有效地识别,分类和消除软件中的缺陷。 + + 建立评审程序有以下4个子目标: + (1)管理层要制定评审政策,支持评审过程。 + (2)测试组和软件质量保证组要确定并文档化整个软件生命周期中的评审目标、评审计划、评审步骤以及评审记录机制。 + (3)评审项由上层组织指定。培训参加评审的人员,使他们理解和遵循机的评政策、评审步骤。 + +2. 建立测试过程的测量程序 + 测试过程的测量程序是评价测试过程质量,改进测试过程的基础,对监视过程至关重要。测量包括测试进展、测试费用、软件错误和缺陷数据以及产品测量等。 + + 测试测量程序有以下3个子目标: + (1) 定义组织范围内的测试过程、测量政策和目标。 + (2) 制定测试过程测量计划,测量计划中应给出收集、分析和应用。 + (3) 应用测量结果制定测试过程改进计划。 + +3. 软件质量评价 + 软件质量评价内容包括定义可测量的软件质量属性,定义评价软件工作产品的质量目标等项工作。 + + 软件质量评价有两个子目标: + (1) 管理层、测试组和软件质量保证组要制定与质量有关的政策、质量目标和软件产品质量属性。 + (2) 测试过程应是结构化、已测量和已评价的,以保证达到质量目标。 + +#### 7.3.5 优化、预防缺陷和质量控制级 +本级的测试过程是可重复、可定义、可管理的,因此软件组织优化调整和持续改进测试过程。测试过程的管理为持续改进产品质量和过程质量提供指导,并提供必要的基础设施。 + +优化、预防缺陷和质量控制级有以下3个要实现的成熟度目标: +1. 应用过程数据预防缺陷 + 此时的软件组织能够记录软件缺陷,分析缺陷模式,识别错误根源,制定防止缺陷再次发生的计划,提供跟踪这种活动的办法,并将这些活动贯穿于全组织的各个项目中。 + + 应用过程数据预防缺陷的成熟度子目标如下: + (1) 成立缺陷预防组。 + (2) 识别和记录在软件生命周期各阶段引入的软件缺陷和消除的缺陷。 + (3) 建立缺陷原因分析机制,确定缺陷原因。 + (4) 管理、开发和测试人员互相配合制定缺陷预防计划,防止已识别的缺陷再次发生。缺陷预防计划要具有可跟踪性。 + +2. 采用统计采样技术测量组织的自信度,测量用户对组织的信赖度以及设定软件可靠性目标来推进测试过程 + 支持统计质量控制的子目标如下: + (1) 软件测试组和软件质量保证组建立软件产品的质量目标,如产品的缺陷密度、组织的自信度以及可信赖度等。 + (2) 测试管理者要将这些质量目标纳入测试计划中。 + (3) 培训测试组学习和使用统计学方法。 + (4) 收集用户需求,以建立使用模型。 + +3. 优化测试过程 + 优化测试过程在测试成熟度的最高级,以能够量化测试过程。这样就可以依据量化结果来调整测试过程,不断提高测试过程能力,并且软件组织具有支持这种能力持续增长的基础设施。基础设施包括政策、标准、培训、设备、工具以及组织结构等。 + + 优化测试过程包含如下内容: + (1) 识别需要改进的测试活动。 + (2) 实施改进。 + (3) 跟踪改进进程。 + (4) 不断评估所采用的与测试相关的新工具和新方法。 + (5) 支持技术更新。 + + 测试过程优化所需子成熟度目标包括如下内容: + (1) 建立测试过程改进组,监视测试过程并识别需要改进的部分。 + (2) 建立适当的机制,以评估改进测试过程能力和测试成熟度的新工具和新技术。 + (3) 持续评估测试过程的有效性,确定测试终止准则。 + +#### 7.3.6 TMM 5个阶段总结 +1. 测试和调试没有区别,除了支持调试外,测试没有其他目的。 +2. 测试的目的是为了表明软件能够工作。 +3. 测试的目的是为了表明软件能够正常工作。 +4. 测试的目的不是要证明什么,而是为了把软件不能正常工作的预知风险降低到能够接受的程度。 +5. 测试成为了自觉的约束,不用太多的测试投入便能产生低风险的软件。 + +### 7.4 自动化测试体系 +#### 7.4.1 自动化测试体系 +自动化测试体系包括测试用例管理、分析报告、开发环境、运行环境和代码管理等。 + +开发环境包括开发语言、库程序、驱动程序和开发工具;测试用例管理包括测试用例的定义、设置、分类和组合运行;分析报告是指对于测试工具的运行和长期走势进行的报告;运行环境是指软件测试工具的安装配置;代码管理是指存储和编译。 + +![自动化测试体系](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/auto-tx.png) + +#### 7.4.2 自动化测试流程 +自动化测试流程包括可行性分析、测试工具选型、设计测试框架、设计测试用例、开发测试脚本、使用测试脚本和维护测试资产等。 + +![自动化测试流程](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/auto-lc.png) + +### 7.5 测试工具介绍 +#### 7.5.1 测试管理工具 +测试管理工具一般具有如下功能: +1. 测试过程生成器 +2. 测试用例管理 + (1) 提供用户界面,用于管理测试。 + (2) 对测试进行整理以方便使用和维护。 + (3) 启动并管理测试执行,运行用户选择的测试。 + (4) 提供与捕获/回放及覆盖分析工具的集成。 + (5) 提供自动化的测试报告和相关文档的编制。 +3. 缺陷跟踪管理 + (1) 迅速提交和更新故障报告。 + (2) 具有选择地自动通知用户对故障状态的修改。 + (3) 具有对数据的安全访问。 + +常用工具: +1. TestDirector(大而全) +2. jira(简单好用) +3. 禅道(简单好用) +4. bugzilla(功能简单) +5. svn(代码和文档管理工具) +6. git,同svn,但是多分支管理比svn好 +7. QTP + +#### 7.5.2 接口测试工具 +1. Jmeter(开源) +2. postman +3. SoapUI + +推荐使用 jmeter 和 postman + +jmeter是一款100%纯Java编写的免费开源的工具,它主要用来做性能测试,相比loadrunner来说,它内存占用小,免费开源,轻巧方便、无需安装,越来越被大众所喜爱。 + +Postman是谷歌的一款接口测试插件,它使用简单,支持用例管理,支持get、post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。 + +#### 7.5.3 性能测试工具 +1. jmeter 基于java平台的性能开源测试工具,其实也很强大,而且比较好用 +2. ab +3. loadrunner +4. Load UI,一款开源的压力测试工具,支持图形化 +5. Siege 一款开源的压力和指标测试工具 + +#### 7.5.4 白盒测试工具 +目前的白盒测试工具主要支持C、Visual C++、Java、VisualJ++等程序开发语言。白盒测试工具一般针对被测源程序进行测试,测试所发行的故障可以定位到代码级。 + +根据测试工具工作原理的不同,白盒测试工具分为静态分析工具和动态测试工具。 + +静态分析工具: +1. 代码覆盖率分析器和代码测量器 +2. 一致性检查 +3. 接口分析 +4. 类型分析 + +动态测试工具: +1. 功能确认与接口测试 +2. 性能与内存分析 + +常见工具: +1. jtest java语言的单元测试框架 +2. JUnit 验证java的工具 +3. cppunit 跨平台的c++单元测试框架 +4. gtest 跨平台的c++单元测试框架 +5. PhpUnit Php +6. BoundsChecker C++,Delphi API和OLE错误检查、指针和泄露错误检查、内存错误检查 +7. TrueTime C++,Java,Visual Basic 代码运行效率检查、组件性能的分析 + +#### 7.5.5 网络测试工具 +1. Ixia,也是对网络设备进行性能和压力测试工的平台 +2. firebug,抓包工具 +3. Fiddler,抓包工具 +4. wireshark 数据包抓取分析和回放测试工具 +5. tc 网络丢包和试验模拟工具,非常好用 +6. iperf 用来测试tcp和udp的网络质量 +7. tcpping工具工作在 TCP 层,通过发送伪造的 TCP SYN 包并侦听来自服务器或中间设备返回的 SYN/ACK 或 RST + +#### 7.5.6 web安全测试工具 +1. appscan,算是用的非常多的一款工具了,扫描后能够将绝大部分的漏洞找出来。 +2. Netsparker Community Edition 这个程序可以检测SQL注入和跨页脚本事件,还能提供解决方案 +3. Websecurify 这是个简单易用的开源工具,此程序还有一些人插件支持,可以自动检测网页漏洞。运行后可生成多种格式的检测报告 +4. Wapiti 这是一个用Python编写的开源的工具,可以检测网页应用程序,探测网页中存在的注入点。 +5. N-Stalker Free Version 此工具可一次检测100个以上的页面,包括跨页脚本的检测。 +6. skipfish 这是一个轻量级的安全测试工具,处理速度很快,每秒可处理2000个请求。 +7. Scrawlr HP的一款免费软件,可检测SQL注入漏洞。 +8. Watcher: 这个是Fiddler的插件,可在后台静默运行,可检测跨域提交等。。 +9. WebScarab 这个实际上是一个代理软件,有很多功能,可以检测XSS跨站脚本漏洞、SQL注入漏洞等。 + +### 7.6 如何选择测试工具 +当前市场上的测试工具很多,每个测试工具在不同环境有各自的优点和缺点。如何选择最佳的测试工具,主要依赖于系统工程环境以及组织特定的其他需求和标准。因此,选择自动化测试工具应从以下几方面考虑。 + +1. 测试工具的集成能力。 + 确定测试工具与系统的构架、编程环境等兼容性。 +2. 确定被测程序管理数据的方式。 + 了解被测试程序管理数据的方式,确定自动测试工具如何支持对数据的验证。 +3. 确定测试类型。 + 了解工具的测试类型,不同测试类型的测试工具功能差距较大。 +4. 确定项目进度。 + 测试工具是否影响测试进度。 +5. 确定项目预算。 + 根据成本/效益分析,确定所投入的总成本与获益之间的关系。 + +### 7.7 知识点总结 +1. 自动化测试对比手工测试的优缺点 +2. 自动化测试发展历程 +3. 测试成熟度模型 +4. 自动化测试体系 +5. 测试工具 ## 第8章 软件测试管理 ### 8.1 软件测试管理概述 diff --git a/images/auto-lc.png b/images/auto-lc.png new file mode 100644 index 0000000000000000000000000000000000000000..cff1e711cc182473535788811e134244c8524110 GIT binary patch literal 29706 zcmeGERd5_l69tHh$zmppnQgJfl4UV7Go!`Kj21Il%*@P87Fx{A%-R{--@p5?H{w3s zyASJV#f+zWsJWDaJs8Q!y)H5s~}z^~(9vRLO$2mzRSg zsx;iNu&{`4ap=W!=7NHPmY-*L*ccfZxw+dYI44aqNkyUyGNlvLBO=4CR!b7*%psvw zqzKKq+)frNGFn?4nzO~?DE945EyID5dIW($2A?WUXjE-vdA|vlsh3+X)eYa6%~*Gy zDlbb`biBXbuiK>A2P;~PV$wHQuBjelCVJl9Mx?OcpG%y7LPPf1Z*_iW{+q8g&8^?06J(BZpV zL_6=ix89$~*bzIR7mB9seX5kkz3-r*sp)YrwFwT5gwO3# zB$xYbK{_)&CI(bMp;x@8rzbt4C@6sm54a9zKY+qT(JV?xNU&Qi(Fv>3VPX@+#>JKH z6kQ_F!BHy6r<>Sh#*@8bSXZm>q?<>6LtG%axT3Aho(+n`yKFvxgYJ0UJMQ*}A|B8$ z_9#)KPZ*!83gvOXlT2oTog9TGbaPq0`&ilbqOb1uR3x{+!N}`;wi-t%6@MKcA77xz zG%PBUw7m=BGuggR0E5^!reS;DqWQQ9OJS8P1 z%lmS7Kg-*9R=HgL&F0QB`1g*eB5g53A37%HM3d`$31O#m5%vxV%)xB}tqw9vEGyXM zy7znUiu)eV^^L;F7|i)v`}5MVwa*fNQ(m6o-gqsW)zVGhcJxPXm#XZlDGKJV#EF)9 zqUf$3m$7&@O=}cL)^Vt4+gn@lm#SW=_Jdj@*l8EO;LyM1M^*eRV@q1go9XjfaIt0n zC_=bP26C|Vy#4-iFl$L@k|QoBLQ+Pi)9?YtC_)O`JE!N$22CwoLsel%9yih-pdH11 z-z06!al9+X(Rbs8sc6tiEp90xA)(!x5g+Z!ES_WIMTwoEk6cbsS+Zs=KekW7-S5w| zUXLq7_%hs{%KWys^m@NVwFznyKAv~JXL@h;bDbv}=#+o{#yRlz%7D+L+vVqe9{0KJ z_KpiMO0wN{AJ_URkGFH=`w9N4d*b$#k7dTWp!xZX%94E)uWW@ zd|k0}X@X&-rx*2JW#@Y_L+B;I++-UD5HE_h_?&j=w1_4d65RCZCKjtLb858TWA)zO zUR~fxdlTt3b}VslOmqc**zEG(Td!tRGM+3qo)>2I_rn|lf|J8Tql>WHuFN9pKvY(h z_q*@?x@X}R?>P;dM;$}Mo$|(21`E<;?;S`#YpvEE#;+BZNpq#U7tK(anlF9los}`= z=+QiH5Q?IO(jPNsbCn+MQpXeD$204_UW0bmJ^V?Sh_u*xls`j3LmL$Db_XK0Kl~cC zt5?1G(aQkaB@fwYVD^2mpy%P?fz2v*nT!&!rWI2H`Wc(xX$_FIYn|xfh1p`-$btE` zl60fcZ<~8eK~|SY^Cg}ArZ<{40aaiGzIG(Oc;@tj{^eS8d~v*z*yeFX20jV_uhEi2?(|}-^Z6j528+WYx%{s< z8HTgD+CojT95a0{uMQ7)X;3=wRqyroYpfO81VN3)$>v<6QA}x?$JVi7m60l|XQwj5 zgv3PA#>g!^dbg9yBpr|L0**v80<9ZSOG`RK=-8^_{Zb>HC_MJfGEBrYxAgU>HoKka zToD5UeUQhQN#3N-2D?V@Ype3uUIZh!n0%M2txl)$pJ1YKxCjU+|Ihp9@7}DSZoL|b zdElt@yo{whg%oiVj`tp1-uIP!EZd3+n(gZ9N;8?LnlwhsRm2nZyVc(mind&BdG)_v zuOFsf)&Dx$@$yn!nDuCQDF6FaK|Gb++xI5;A+}$JgHGdmD23Vj>85tFiVuhD^I3|! zbM)D&h_<66LU>_8L661P33v^ZdH)m0;CQ`>(?&fESP5Z3Dxzkakxu6Tean#lHIc!U zaP~6rVT>*?P3U;GMV$?>%1c4-1=Pb?HMmMYY}hqK)Q$L2kHxdp`HB zFCBEHUewjyPv*5cVqJ(BxI+6Zv?3~;oz8&E{Z$Qr^h=iKQ#A|ZVwL@9`PQ#rm)nEY zFmqLULPirU0q5=KpwHw9<6*lEEs7I0z!fOl31R*eU%sy0(t1nHzJ`p9EZeKB3*H44 zfNSiOiQt7ao*G*EP_;Aa*uycME%4|Sygev0#L5x#^`fTk`}4t4eW~V@UiO#z%dP84 zPVQGQXpt^&%;;VjKDDI=tH-QcM2iZEytWUy7D)`}9oNcQC3f1F=G$R0Dj1j;o;5c@ zX&IBYggAV9v9a9B;k-{5o?=#Inzu7M7L{@6`=Mx*o6j{@!RH?tv~n_2YKH+cW1vwZx{+4AyK>;Mhfdxn91r3MA1R%_VzTudR z2f?eRb#*IntbhsUy?{f*chv-b=qggrNS%^%gz)Wlfyh8D zFe4QzeUU6-K;1WAtjy!SKbcV|RCHAw?LW`tlHs)jFNis|ZbH#e`d(0&-c1f#+i$6Z zWC_az#`8KGcPC~y_A8n%1`@jA7sq6Tyz_WFG<2e9zg}?D-4otfGV^{n^ci>@r}GM| zMwBKqSO%A)$IbMhZ3NyJaiFZZaNw_zm~?39;ElRylPp*DsAAWy9Q%s6t^L$>F(pY7 zz+&>fmh=HcNO0#BO|xPFX_zS$hO^}Hgh}0C37V?hjR%Ql%Tq9yh)stwGlfEBl^0*= zv*kM1nd#iY9r#J!`0F{zn?*Q?Q^nZkaA;a|5a*OTW<^%mO$ zkxW=heF^VnuxpL$uI!&aRbz^5hzJXRTx=B47OgQ`dYcE=F*H~g8vvqdA0dEGAy%iK zi~8qWxy)>A5H-8*625+ECC8w%-C(riv_Az~EV!Ilwux+VXo}mSPi24KEmU%e8JP%c ztnNxei#|Q?(Adn2{}5LNX}sR?I;X^ObX2-ShHYc3WP%V|qh%|w&)Qi|z^+Gv`F+RF z9~#Mg`sd@ZO&j%Ky26GpG}ab5hl=L+W=*(d9d;{Cq)#ykDXzo$NyC>YD4U%X4C{O5 zpK*5$BzNH_z&U=Q54vzn_A35a4gA2>kk{o}yEkyeY%-DVNMf?;aeX1dAi&mUgdR=8 z$rm+^&u$#y5#9xfrRj72Qse9|c3IO3V*NcL0X@{_*{V7iiLl|*`Dlt2n5}R8UD;9} zB?a5_%Z$uYqm2!kjdyrEHm&yqD5X=GMk69`td7TBid1H5Q^O*9b@S;;F&{m;d@QKf&9Al_ z>=59C(ppr4hqUbMD!dCHD6`qkS47WZ(Yus2ATo@G6+*#xtxgG9+JTm~0b>=a5mk+Si?a%=^oU?dnNub_OydPm z4^~tL*)Wqd96t!tJ72b#+cxOQI9#TCk%*xZk*JVPsJe~QlMhT!608w-cZyauZl{#ac7gM~l|LpS@hEo#fDQt73#a9yI~PB*LtW z3{ozVuV23|n%G)MN;>QoADL3|@Z<*JIqTi3-CXpJfN$q;FEyM~5&nLg86o6**yxQ; zOhm$gcGUd-xa$vvln{i5gLBy%hT#HzlHV(Ak=T2@eBKdf5y$-Uuq_@UUBtr~1Wd80 z7p_28MqhWm*W9I@$e47KT0zanwX?r|dwRBMZm2dG*ua-`72X?fTyxvqP5Kcg!g{wm z@;hFH4`+1El!jbvpMU6g9{*$}4-tng>OxN-61=*?8_`!(^%T};Z$j^@VkxgfOz&0+ zDK1Gz)X=2#&5z^&!qn1o)S&9x4t0#k6u?oO<0R%hkz(I+(qDqaR|A9hEl-?6DxHX4 z)bVHq_H-m{a1X&lTHWI*#YE2w`?Cv^_80rd-6XMqUAH_xwnn!4;R3oemqX0TKKFx7 z5qyenQ8u@+MG3}_UiVr`ZMIb|Wamx3_;s8`;7VF7w%NUKIATC5Kp^eoCzMVUeEwec zJm&d)+Bk9>b-6uYY-~L2&0z4{`%^f2gPve97?w|@x%pcpjTTtKrMieoj-YMX(_!KL zn)`mhRtS?Kc{|D1iWv&s^QxMI>A@9SO!e`kvyvF)4mp?TQ-@UR~^+T{lLy^2cuU;M8H ztTu7zWO-?Od0{Pe9cupyOd>1zT1Q*-14-pNpjd~_F}W^lRF5ogV>I~-g>jE7lxf#8hr8wauxQ8-g7!v!?$Kp0oC zxlwe)_G(AWlAvLjZneh~Vlag$g1qE?zC12cJH$6oh{2CpaLxN2{1MZ)FYoJE)90YS zFa#6et!Js!>96GP#bIm%ksoR69Zu`xsu_p^*S+pnm#ted&gGN1Ko5O*ihh+}g+^fq zPb6PN^^s#Gf%`)tz#$;G-?!iAVVi!mH2Z!9hn=jQm+rFF)83Vnpby|hiy^e^pDY)v z<~qYfzHd8xe%u+iHacfIo@s5|Q3+qI9ocWxywe1)g3z5TL1P>Z7=W!oD>YQ?@_*Ur z7E;mTtoeeaINU~jZ+I|83}av=+8ng?qg?YVT-(bPt*RL=j~hDT(0KueTt`upDqEta z^J;w!2EwwDj@My7EC7-5*A8OR_f#9OVT?4Y#xz?^e7vFubIJbz8H@@8ge2NufgW4d zFT;H{<+Wi;@|_|ejd;Nf(f;5E-E`;!xpk8+Mg@9_Evapr+%!q(%vU5?x?tx_h8k3-yUGYv3*|m zKHd>M8N#+7H>E=*hGLW%q@B&rtI%p)alBu7ygontog0i^>-mh>tVj>Wl)vKkjPGLI zartC10U;vjr}>!KzSX?_Ln@li?Pj9&EGVn*#eHun=@n2>*df8T>-@mjce+Qfu`3F( zg&)dk1QnoH>Z5_==JGUa_9*GrXK+sI^ik-Q|57rQNdOaHw5OQTMFHOMcM9_sXKfp> z_SQuRBWoK{8_{Sp>!Crn)1%hdzcp#GdpvY0!o2odPBWs=q&jkSD+sTU#(Q!@ka&HI z%8E0>ry@0XJi#?y&(u$b?~Q|qiGRtWM6yPeHu|2QyCv_&y(=dLkscpAUUN9m^I6;m z2{a6Vy2uB&r%>RXe%DlbsoxqPG=>cseT3SWA?nZK_};?{ZV6(Ph-ZI1U%sQ*rht%` z97m~u><_>0aZRtOc?uc)s|U26xIDB>U8#dDphorFwrNJmS`==m6TZ6o6Pp;5=mxSp zN8{20=|^~(ZatxhMu4e#0dP$yU6Y&H7GD9O5GNebWc=~SqH@_#fgn#y>w6phM`LhK zjA!~?CNNuc*|mAHm1+a%;NKTvpC4kn(!PqXb{GWLG}3FtR~|0LzivH$z}dCc5%})E&gBkn*viutZ?s$VGB#u5Y=D`4PTNV}$MxxiR4$IUvl^*8yciY^ z=Rh}{CPkv94X7OM7TWbH3$dB2k&hDn4XAIX#FEgU9>&fq=$5KpzTRVe7ku~HHHbIB zhqAM?&vz+HSTt;U*a|1+Fdl1yWz?@0i?v>Eu)4l3Axsd<@_fs0LxxJZx~*Z1FaE?@ z)kJm8EC~$FnL@z34^J##ZgLVg9#0SDE1RsJ0MvBwxxDZ-4E_E5b+dF{cH%~GFQ6N* z?lgNj*2L8ymR0xG993%jjG>VT`ba`P53gbS%z8fGb=wh{2&r7=1y}F)BJstNX1Tn4 zvSdkU7}~lBEftA;dn`=gm_bX59~^*`XD~&xJ-B^*#M0Ty9it9MYV#~GiO#HQ8mck- zU1OBSZWHraXrSJFPF@XJFTbkmbn0{Ouh_y&15id~!|I{^q?mE)Ph=+DNlL6KMVYxWj#G?btI)aJBBeEfRp6@nrOgo5F}+nKYb z3teAbTX_grH@&s!VR3m4ZJL?eB=Qwj^d8#v4vYljtfik_>>d`OL4iM~daJ#b;=>jO zuni9@6t3O?3ag_rRjwNjwlBlHPpQ?h8Q{yFC|o`tE*^`;xdA+*XRdfntmm!U+p5A!e{pU?(yte^1(aDQlEv$N zJ9z59dUyyLcZ=K(7iK2XtOH0PO<#k|?t~0=F@P!~a$PLjbT0QfpU+Euk(#6ExSBT? zc3GSvuGuJ(L=6CaeWtZR8PMCgO2l00Y4c?-kxb@Lb2S|~QDf)wC=&UqoS6&PzSu0G z(tNdtu^hgG4PpDa#sPLV~_{pw5v#& zV`+Dl2<$+-!~r@G9Oo`#)Gr|B4|r3#DmEvcMPhqLvrr>FnJ8Fz!3bHggS}gn1ij&$ z$m^9^LKL`Ps~Cp3migx{v$LW-yt7SQ?vEd^okOX4keRuk}|3 zD#)qG1#Nf7mw?cs{brLaD5}0_LO#TEIg8~2gn5w*dagjK(Vs+7u!G8~Mr4{)Rc-kZ z0@zT6+C1(R>qG?JeyvQxa8>VdXW z-=zQ31oVmZ$$~>{(@}J~>^1k4*ViAP-1LDaadH(!-o|B-{l#6#gjjdB+KR;@BK93t zyOt!OU*c4cnBU}r0HG}hJ^GPBi$PQt|FfJH8uqj>mQsfixOd3%exE;~4QVe_BsetE z1`KlB7KZB-rZ!LXi|Q*V+_QX$@A7u07FSip<*M`g`}HIrmcvhV6 zA83>OtYG6vRvQ?vt(&i-I4>R_ZWnYe-LMW6b%V=dyfb$EMnL-FJZJ-#8*QLdXhkv= zvR&nWaqgNJ{~;m}U?l+}3$qe@cPk{kb(R%Qj5dv--(8NY%6ikaQ9=VlQ%65mV#~EV zqb@6zpvg=;L!lI)Lr*YgDU^6Ai_~vk9TsIQ@w2bw zvB}oPscbcSJe2(aIxP1O{`~v}aIQgy7{Chsb38zS!Xd6Fi$wYT>;7@40-Rbz28l}q zn3DiUhX5c_v+u>^{@3Jpn z|C{EA&pldpVDIz(57Pe)LkSq>QlSqK7%hMS18~I#pd!5k^WQMrfM&AG3wpKxUqQ$= zUI8(*%^Q&u45&LGk8=SaV*)c18 z{+}QQ|M9Dk?K6zz@f+)F^Sm34FjLCPT5=|}0lj&GnEwA$Ws}mdIE^-VLX2@lzxgci#xk6vO z1Es79^uH(HNdPLh?5K|2qDwK8hW(MLz%5Az)a1Vt!kq}(_2m3+_2h$ge|*Xxpzw5Q zn)a_5TbvRkhZ&H_abiFNM*~pk!?dA&(Lc+`>Hsc03g=$_)0hAZ$OoKBByK$CpK@GM3`DN{T$V4>R@WMUvfXT8gVpJML6@ zp_C1r3LVy%F}3`9h0x+Gj)`?<*zyJnDT2FGPy~U=Fn8R0Hy2xep2kp2QD8KNS8bU? z@6$y}Bl-Y4&C?$3b2>_`4dauM(r~Iyj7ix_;&0FhU)tDFpG650zN-cUBoV$hz6nS_F z52Ob_iJzo1qzdKB0t5HPB)8u@3*ylbKQo8@Te%Y%Akl2j17!~lY7?=OpXkrpWvS9!op;P`NiWzHKIpkx|>vLH?`J+v{vUVt~7exEP$dcwX>Ab+7Whl!BVY+F{h|_&C8&FS!J*938ox$-VUbkC zql`+jRK;Sk{gGcZ&-D|Np8DZ{ zN9+c>!5TASpbD=b;pN(7SjQUzfk0Us-1~171UMJKj!mglECOHiDvXW+G)ZvoXyeBZ zIRiys-@9?u2}8q)PKAX6EB>T2$kEOS&pjgnrG|!_A@vqdi8YByVz4!g0t1n{P%&XX z53Dc7g54@vcny}n>dg@dqkf)uD90oBRAhkF%UzwX=cmnwA2VVkk+V~tkE;j`%D{D+ zCD!LPIc&SxtCtur+U7wcU@Nwmk%IYpKK*`(*=fJ~srNh|_T?e&pQX*keEf0~HzwrA zEE(Qh$*+ofNQpQ~M$1AYKV*Fdr~N2Q+wtimFWHBv5Uw-o$LGmkx9_Qwh9O3*xE5x` zheLWWQL)}{J!@#&YpckgXv#6UWXV|l;eUlmUZ&0^{`C7XS^l z&ThqzIjhJ{9Fqw=1YRK(Tbnt9b)q%$AXuQ^Hqi$DIZEK(aYXgi9fFm0d5D&~j z$61A05OBY(aLVK_Xu!c$VF;Uv`at$L+*Ii;Ctf9v?UlKoBOc6A+D;)Sv#`ibf3NJM zbOyVF4Y*F~(0Li9fykD)pjN*ur(j@sis^5zY$uz;=hz?-B`hmPFMrXd!DBHk5-)E+ z-@$rq0(&c2gj9IihGPkfA_h-1FtkCU=Ii`Vo_U}=krQeH3DQ{i6Y`&eTTb%g%-aNV z2*jN%KOD?0sA)NwHQTiPM1&J`Sd^-z`~5p`lvfCQ9>(aKganhW=?-IYNWR1Eo zZOE4V-~h&Zhx&R>Tz(PL{UN3Px(i`AU6=#Zzxle10P|@E)zpxb3a=ctxWwRZ+v#7OfOK1tr>2dC$(W}UQS)5nj&-C?E+ID1 z3!PDiWw(3qqx4(SKDXVF-o%g5%9=|-gtn^AcxKNh$HhH3n~0F*GrxDUHFukYvRC@8 zGf2=327ajYYGSMO>PpPjnMSLu=c{Wf>#Py%zv&9Khzqc_rG=SW0wHiTX)}Pq@H4@R z4X@`21-mrW;HH*5S=1o1%%yy(?N|_J{g!5A7?|pp?)iis!cJQ4XA9xWxLN%Ub3$6P8J+zPS+A!thvj=Y|J3-4Yioa^E3e7v_feY!x%z;$l}YP#ze z*}AU(P{nL2hzzb{&_q3Dp6V78|NcRUT0TpFi0kC~K zYVWXmo4FK!VX31W=ARskdhrRMz6lD&IgW0%&ok+$vaIGOEE%DHmFoqla`pZ;w1C#! z`M=N2_3h8*ZduEpvL{Ne3t4QzdAxBy4T}E>ryCI<&cz(Lr1>fHuNF`C?sqO z%aisSKdJ{{tE^GN=Iyb1%TqP_ z|I|<93kQ%GgY18CN3_cd@a>hLM2x?v1Q0wG0obpIsQW(`;RmxO1!R7LXV^ z1#(xpMw-FyKYfe(Fxp)AiZy<$>DND;+wXaOz9%K-%=!lFWPh&Hv|1Ttx&TOO|>K(F8SwA=%=Ca}Prj>E!Re|hT( zh_SJ3HBsF%j1;HD;8sYlp*NtPSi%2ox3{@+%J=aV`LZ1^vZ?H`E~#N9O0oGZF(!ku zJ}o-=<|kU#iJE0yytvq~-0Dp#5oekdQT~RmlUOP~XT`Xd7|Q9chSA1jUwiCrEw>eTT)a0=^X_*>Hj0VnALr`5dz417OO;gJ?Qrr2 zCdN9?&s!aaTZ)T?MH2q)^gu0g1}v{zUP$W`kbwR!id>uHJNaZ@bN2y4HF7hl-le`^ zGAJ`4e@CS;*yma{A=|ODs~d^5{T-ao`Mlj<^fBmYquaRhw|moO+|D?zlhD15O4IZ{ z7FVqE5x$!4#@z4B9&`ou5BMPz^9_H3VS%w`Yx>QRQ1T1?JGb|FaZm3;L+5=l!pt*U z2MKSUYk0_qA80>CG>qLiQyWXClEah1gsi29Q+%aF-rY`W1EvzCdeq;&wmuvrFd#7a zZOAtCF#RQN`#}De-fZhBV<*n6{oBoC0m@&5C98(j^Yn)?T0`FZe0?|ab7GCe%-YiT z^S%cA!N&GhDFbyLj>j>`1UOkNlW(oGuGbmxz1t8R3Zir0R}%G zZ7U0+YSnS3pDRnZfeq6<%U|!Q*f1i@U-@=Ul5CZtAHq={JkFV8i?65xj7H zeygzokwy|iqbz|OcMe_?rRTsUKqlSomLEEpZ|rD#WQ*%pHD{<{EDAxlAFn1{>Tv`P=WndLpaS>=0qe(#6ZjQUw*0p*+=ovfT=sri%q4jjQ2<|T zFnMt;pb{=+xW8jcMHos^N>8=mFi_dSCt2#h85nf+U2bW|&ik;MR8L)gfIaU3#nOxm z1|$4Lu9*=_(9!+Ud@~QO_6lzU`&Y5!BI^sfoYo@yAxR*S z^K~Nw1dZs6)wP@Z;Pt-VXVtYcU#ZF%ww&a0<7ef~qRYD|cbkI?qFCLd0~|ihU-+?; z5c70LR2+B4)(^D1ct)*}f*QJ!-*9R#vObY&tgR3=0e1fS($YSG5YF+W99Nsxa9#72 zRVi9G%E5lre?IwgeIEMaS=Ei61}C#~&ZlGx(f%>cgX?Gq<)?Vn-$ryW(Aj>3+N!XN zOA23L3!iqkT*%vh4{h#pmC!kH$IK!JSLtZH?#^v)&BAUXQN-G88&XqP9=HjB6ikuI z#Vp4f88!WsO!re@H_g9t%U!xrMIH{Robye%H5sXM>0RHDAN==dz5R&~iNV_ycqNgB z@g=nbk~N`O;9x#$YWbl>Jf2m&6w{xQJ(+AYAaxy~ygiyeZRHJ9Uft#7_gyq_lH*LI z1?U;rwYn#rdP|Qe>ofETeiJl3?rr9prHSm;>F8@-`mL@*XgG`6LY6xI&FH0M7ngknnnPe70}ajg21ktR_~=#`O+>O))}QNs=Z&gM z`oeX)iTh9t>DOznZ+hJrDlC~(<8??W3x%}2@H3s1D;3XvarB8d_x4E94Es~o`M)?` zU0pYZh-QQ(C-`8HwfM8q*KleCp;XU?dozJ5r&GCRK1`V>WjQQexoy+4%A_l~s2nyHn^ z9bF#0S^d5@ncqq{$hLH8buKx~*Tiao5Cs*3fZB^nd27ys&&m>g;KF3G%*Ay!$h%Au zce%YPQy0;)p?f#qDdR~yM~F4+;ND_7M%9U6Ew4}Wa=mjE1_O%oIZS4#5&kdFbO8fE zADLuG=UdQVyPj1&^Fa|3Fn!+N*JOyB9LepTmT8>dyQQ}MP{HbnYg)nkAh_Aycy2xQ zUEHySZCw@)dq|4|MXnLlPW9b3L6BUm#oGf!V5E2D@31u_bbVz9bUR@oL=^djPIyA$ zBZO%A2wdG)50!?%V?fJi$~UJz4ck|kc|I4qCv`da-lpb^Q&e!h8i;r2(5kNlyi!O& zy@iY|64DYPLY+^Gyr)GB0b&VqNwgwcFcTe>ousxIrl#z!2Grl$2edj)Sk1O&n&y;C|}`)t^9t7;|)uO7&XODBaO}z+lrRaohspBdyTBcfhmss4c?Lx zvm0Im2I7Y&k7KB7-m;1#_1}Gm{9vqrYNDLIGC|UHnP2a=+lk)CpBooduzJn_VLeiO zmXe?ctN#a8T!2N-$>d=5TQC#fg%bP^p%8U6JOY1hl+F%_!21aG$9U%0iv3D6w+Igo zkqG{&k2en-9Dgt$9pHjYR>J++H0|$6nF?OU%BVy<e~IZ#r!W#D1&i81h&a0Mv^z5-^y7 za`;#P3lfQx7WRz37el5jUA+b?5-Ih6kR=|Btyn*TtQz@$c$r@bAd!;mMbtljDB6Vp zlma9{>0kK`fYZqV`bmI3|5vvH0BC*ywEO?zAT7RKb%)GP2-s9g5g^v9Q!u4}34tvZ zz!uIiM(q{kO!|EnfX(3IjwC)B3-gmpe`Q?}2OxEOT5aXC&tRD0`6^i-08f=fviL_w(&2Ly<({YDdSJ?Ym<{TbO7cQxX8794i%y2EiKN-YCV#*7IB1Qzsb z#3n-gXv|V*Jl!sqsT58HC4#Q12!rFUe6Tbb4V#)0)8Fg|X!TLFa(xolQ{|JW@C55R z4r>#Cp8ByZxp*|xD|+yiI~<~7;>qxsQvWWtuoV$bf0@zezV*>%4ZA&KuBzx^3Y^-4uT;O}0*cOV4GYQF1>Q4e=6*|MHycki{e4EsW)HZ_o3 z%PTBW|7oEFES1*Xa^gjH;e^$5D=jE@A%SlpVK}Uc+$Mo-?~CWPj8YN(xk>3}{FkC! zn(TyZScTt=J&sEQ;bn;=cqqCPkLqal{%mK)+rwP_ElO?zAIXa9Xr!9d*EP{x z^Qql&;sbuFL0o#rQE`ARS<4o)z(6!C2iVM{G|myXE436T8-$7Dnbf1>QgL(z0v_A* z$pRAmEUBhoga!GF!owSqQfdSl3rABvi8FEgJ+22;1WE|0x|-TVKR(Gq!iIPP%rZ=) zHqS+KNoM@^?)c_e^ZHbKm0}^clxy$CNo7m}*37nL`8okKCpq2ck5|xQEdxl!;HefQ z3<`&Fwxy9e$cs)H;%EgDE|N(PZ2H-XWd+PvgYs=sRhXm%Du-{~doSyB`63c`NDb)c z@jEexV|YQm3(23gW3MjKfJ^oz5`-TAjcuENMO#T0%TbonVJNxfYtlnYc4(Kq`Vrw* ze>QWLIzLzm?7;Vp$4bOA>w0vJnoh;TwBj477%97cS!m~4^PjdBtoa%ecRiOR*|#+I zcPa%DSoH|jN@jwy0;l7TouYF~9;LmEfgk&0?`t{TaUjCdOKjd^IPHs@ApFfE3oot2 zy}RY>l-3PHFK2~9rYSpoZ$D1kqAsfE!_}bMG@6srH?Jow=uRj@J2CB7pvx-f2aADU z(nzt?g^T0qWCrsALrK>puxau;V8OL1ny=ag@VJ77s?_BKo3x#vOjkfQqGfnJl$5BA z!I6R=r$|1QioB#+7QnH~1{8jZflH&bQ2cb8Vy)hJ^Vx5waBEX7|AMV^G3-+h3Ti*W zUNB3kYYdoriY=MG!YBRI&v5#yCUr%dp*MNaZNhJQa%F{}dP5VV2u^5aUtcXrw7btlEtVkKQcp))d)9Ax)Hrx0n$k^_^$pKhV+k7 z?g2sZ;SImlAmGE^Wbgh7YgXA|?_Ba{nf&lz9ZCp*T|SsL<4chFao(Ruag6Cv2dsio zU!VpG73oemCrd;H_=_H9PAmrK*QZJro?*4Kj3k=vz^4{ftJeA|git%8Na8LvrR<&T zCce}!Egn`?C(9GoCc={LU^RB_RG_kK+TzutzXfAYhmtwx(-f6c6qT#y%w;2;@N6AQu_ou3uttToc^xP zJBBIRNCendc3r=j?T#WDR9BZNvuj?#f>o-hLB-w1b z`^XB8mq$LB`m89Vxd69Hw#`(DN8h zyeZOVj(zG%4vJ%%=R7DE&kb#s12AF#yf7+Dex>6yb+~s{{1)|(Q{pSeKOlY zRN)6{?UY{VmJds;>X4`r*(My*{u4M}=%|KgBV5^cD-;PW;nVu|V=6&F1zVynT1cNmA&jU$aC z@(Sa~=S4R+Tp2zJ)zZvfy_kl6^EnjKx=-vS{$G-7c>4=<99!uxc982(TE2Z?osJuG z?M&W8Exi#{athJ=ldI(bOOE$Twf1Mavd>-H0vO5gy-sT(l6ONc3_t2qice84omOv)L2F4;|-s|O5#e82!W$nAbaRi6JGLAkFh z)>DS)$0PKG>%+beG3v9yoSr{zePI2ftwWg0l*?}lRd|?ZgYO}QE?-sWM&s`yXc}3i zAG!o^w}$bzqJCG}_CUYT&-$L)_J|l|Y@N;L%bQ7T>Wr9wRa2-zdbWd<$nT|&I_^R_ zJg^^LTN@eM)w2f$`+>VC>p#wD2ZgUrGw(l|ZY1sv1sxzN;ya9k{Rakl1AyBmQtip1 z0n0vJ^%p@3M>x<$YT0>VrP{4D?;-}`9ea^fTnztVK~O~P%b zZmMpC8%e{=X9giI~ai zDZ&dJN<2dVq>KZ?hV=e10Uk;N}RkG&Ps_F4ukK+{Foik&BWXPG>p^{~mq710m#bM@hp6@#z zf66sooTwX}bo($7zh6T^2<~3@g9^_-pFMYAZ=bQ!DiX>UPd9qV$|mc@xIla>g5tw= zJ*kXc9qmv5l`zGVEoSptiL|HuHH1$HujF|$a`DnNhm9X&wdTs3p9Li`8x~%Ly^~6J z+`v^nM!U9`j^cQL{X^OAX~;BvFcjoqQ7^8Alb4#q%eg!?Wk=fWhY+cXGTEpkFlaBD zVLqcoQZ5<9Y3SlB^iO772$XNEEGI=OPW%&-0Nx1rMSvLo-OfzMvXFkUu6vk`Pg(9g z@!TXu{ZsrQ(aDBd-=lVKlzUS=2a5L8GkOMOV=bh9D=yio%9cuiW!U?C8(uUxaT5|P zyzE99ugiZ_4p%e%MN8C@(C|Dfn^r@)kTBr<%enp2R~AQ88ea1pqSc7JyIj9`C&Zzo zgTyZe)fidXrjEH4Zq$}E)f6`{{1KX*V|a3*OS7j?wcSfa;cK#{)S|4=gXXx7Go!A5 zgYE)q(cL-m0$cBrXqN=+$wL{8GJ-)2c|pB$smkelHMSF&XHm&*zQB_#cMq)<)KKvU zc`OrJOO&XA2&~Mcly81SYFF}Osy##8y5{rjU2@vQM*hSc1ytMu?!#N6`QL>nR_sJK zItXd3XgCL@4xr@qPGLf4MD;=v`recbk>z9drz*)2z8qvb-g&85vZ-sp!%3cC*}8=b zRHXmm#a>~<u{09fCA{fCDYEqfdH-*qCSA8Zs{e-;j2i?A4_Fp?$6^iuo z(ua8A6qi^bM$X;}0oJB8ZzfheBvefD?b|bgWEe)u)9h6m4w;I|RtDv~U&#ZNj%d~h z%rmC)3QdQp#%l-aQH}{a$l%sR-l)18U5ZO~lD1w>HI$&b;arCRKbX-a3_K+X4{t?ebIlqWm)*pdt&2PWX5$`}4L&`=60;-(4AW!hGKgF7lbK5=>Xb*^nTX zGzkpPS;8RWy>&*y#ea#X2@sK%A;$Zw(mFtWA)5Pre`g!1Eo-6p12@(rC^`2C5>0fT zc%~s*coZ5_%Fn=hkIiH1v`I&Teq)7+|~1?wu44> z4N#S73INC`!Bm5~PI>W6+U$Q8&T(Ns+?^GM=k$N{_Eu4GZB5iDG!DU?h5*6cg1d#r zJrE>V2<|}x!5xA-!JXjlp5PYToj`DR?(Up(zHwjfefq~gMh{--y?gDoYSo&vYF6!; z>tq6tj}=ueJv?A|ZMLkJhU=Z(GO|hurr5#G<;{ZN8DzJF@>Zsn`9N5E!n&~_=k$JR zmH_P7?lg15*qCmK{DvZJfFCGAp>N2Vn;rfuj3^TH zEqTV9ZWEaS@B~B*T;!(@TZ&m0jI_~(DH@T(eBL#UuY`Fe>2h}vgofa$gph!RQyLVR zO)rl}Iv82Oa~arYC7?$&h`h%rWb%gLKwu(J!vgUuS&)Qk*BYF-e*zu@sS3C5;2X&+ z)rq3&`#(9}8DpY%g^g7N<#gM1=SWZ=(-;ge^P}}a9j`!`M4@i571A>Kmy4)L$x`{s zsNCHbr`8eP2K^0u9&a`&B5l#)oOeftzMQrlm-4d;N405+4@WK!PgjFnrA5l>qsjEgRG zxE`dz?}f~UKEJ?L?@8l>h5|I)kx2eN zh=h`7%hj#ti#u3#ombmg{n>qDLR4<8$F~l@QM|Tgq57_!bWi#aTe0^!ZPFE7@2$4A z^%}!Ewa*gis-siH!BLXo05= zH!`>GCtPda8e&~?$j$U(gzUNEAy2h2uzLW{J>Cgx_U)pL4t)UfE3{vw)RYB>_~Nie z`yH7hTzDaljJMTUi9Mk8)G$gWCZoSH4?PLs9H$|A7dnQ+_n;eU899EmpLNhvFh%yp zLS~>i648^yWd?=dK!t_;zL*7ZQ{J8UGZUcy38zTV6=g&=GCP>bN6;qlt&hf_WrNgw z_YxwU2}dNm(EctS6xIrgeezHf0zyT*Lk&F;S&OD0mleCg+>_}G8s$p%uimYv$nC1T z1s&1XZhhl9zAq<|iI)g5oRBJ?iME^XD7o44&bJVZXu@B#n(!ul?FTDo#q0R-ZxW-E z20#^helZC*oUn~f#${b!0xTAp5`2>_`*NGrY$!lqNp9xwdI|7bt9xm2ko?xEIkv-9 ztvTmbC79Nzewv6&VNm(Nb>(q&QD>@{;&iiH9OzPhg?u4=(Tz|zax=HJ^;aa{7$%m0 zV4|ft=?~~v)sXIi77@+lg z(-~y)u|5V+3^io2n>B&>Esg z9m4=8fSjJ>d|EUfoOk$v=()|$qE|qVmnU3Qbtc}%SVd>}wFch=yg8mCo)XDkH-J>^ z0}xh2Cg}7@qEq>RbUkJx&HCK2`oZ-5A0DMs&DV2#!-Tst=v4A?KCv)K8u73HX;}fq z?e;(yB8&z@)BJx?y%-287Lz0So3#ClN*V(J*ZB{5`Fo;Lz|sJh{F^rUi|m)6X7ms9 z`Flk)@GA(xv50>g6a3Xz*#gZm)(O6UkN-<0{$JDhFLj`RZ2&-^J=)v1|0tt?i?VThN`0QZYnw$nd%H=z6u_u3iu0LMn-DoQoXT!*{9G`LO>M&4>4sP@TmqOPL z8}{xmbD@Og#qzP~;kN8S_c}je1fac8Yuv$0lpB0tr8-h=F=mF44Qcv@JPu@+X@r$i z(XRsG;ZZT3aH4&7aeP*Tc3nm{Kfm#SD)O_up+bv_+a2?^aItT#Qf*d6w!c~SnqV1A zseKoqL_t_E@qd!AA^=@|CGj)n`EMQn|GsiU2BM;RB><0TEF|mER(=3cOsm=>la_OD zMnuStPZ#Z19Ys-9jr`Ocy|4UaUNrqRG$NMC;bk%r{<7E*u7A3uF(Zl_EbNor0YY3a zYb?-_!N~GbAAOUIRyGDnPF`emFt)o&=kV(lnJxd9gFor%`6Ifm$r)Fj#p)fkN~1N& z6@rc*TxCP`#+HK6?Y>&EKXg8Q-UJT}ZW>zbRUa_7={$arh!aISBNy=^xlP-n%fG%g502av*T2@t3-H4lrmTIZV6iAxcrPG$pPY@Cn&qW}l^RlRX~Ac~{*aOR{L$Fhx39Ie zgu?AuVTTMIyh6BY-W}7UR+syVYIQ`2OPI%2SCvBmW@s>CZq7H`$iKV$jAiFVt}Fp5 zVQ`>TFK{4Sh;$)#*S)-V%uH4ipK3Ll&cLXq zXE8mZ^|oH`qo=rjo2`=aicT1lKV*>b|S+V`y*BF@xJ?p*23^NwZ#i zKVajaIw_SW{FmkGAfE~T_tjc!?u*VRtyCVg@B8~PraVY?^URuo2}$1$1z%6?*?%6% z_Gfa}Xo^S%qBatM^M21~@p62dj)1M}C!D~Bzy4gK1+D^F>;YD6svt3CBIE?}2GPyj zI3~v{g`D0NZn|XW4rY&_oiM1{b+}#iV_V3Cxvky!Nzp)KS$Ca8$@6Zj5OWuWo_UpL zdIHLQFm94^F>-s{1?+5M*_2ooJpCuhsy@`7fuL$lFh3W_n-H&a$HB@U@i)$y=&wB4 zsOYtCeF;ZYK(Dlpgydv1Ko3XC8{eKb)w)^!E#+g4;>*9g0(uPDr7&FmI!4wWyW+g- zLs2Y?#92z;BvNG41%wDC&+^gk#sl z+}_I#TI8N~ba(TklOUEz@hYox3%hf&T!v&{jC>6Bm*`1sunyJ4`M_GIou#wJ5mq^J z`OanL=C^sc;UOVO*iNM$PQlFFR*aq5&pv&8Y<{=rc7xcsV|iJ3X3F)l-aL+A%!JRW z{kKba(JreRT=u+m1D3L#4bWV~)kE`_PuHx;QBi;Xm`2WB#7qg%(Gk{10>$S|TN~lh z)JT~8uuiiBxKa6GEz*_j*d?l~_7_F*#DX#}m4zSO=fe>5{Po~SIm~|a*|0JO#O(>1 zjWP>)p>jOe+kmqtteNq&bhqSdnc^7``8@GbM`D5Q28VE>JKKoX^AF-`u>*_>f-V<@ zGi5Zt!a3_+omNlT(3$<$5_nRVNhLkdd{b_#_$r~?= zb(539p7Ds_ShKOAM9i2lvOcNy+V^g)Dn_+l&Hu2j%W@>Dsi_PO?k*^x7WKsgAJ=)z z4;1YW;yn0I>Us^l<|m%NKCbS3Samw1MlC_WudmHINROjidwFk`R!@cb5~7OCAgu~j z^9v=xU_PBKH5rXPM0U;^c)fF~qwMLD)oYWKm`UOf7>v2{r8F{<$4PyNPeV)Va@w;H z-QMw9uErl-OipriOfVinK+r{muSG__;TEkJ%2+1z1I59CjCLCz)_ijj%}I2<(ICE% zG6LGfAc4~g!Uumpn}%@#VL$)Px`o_t0{X<*zHaoGo*juX7}s9|BT1-U#C#IBXLtF& zgoS&qviT!r$8qEr8#SKgX7Cc}93-sSneA{!KUd9bB8LVv#$zGyI5&aj=eNe^N8$z$ zSm4;u;cK;OpVP%Dl7LZz8^zT=>l~eCMA5XfmzdpU(a9r1=Y1&*iu+N=G11fAvu+LB z1oJ$8vszMGwL__tAu_C-~6m4mQX50@g{e?==KM`Swo`4kDEg$_}SU zDJk0VG0hLIMqPP5!BuRCjC68T9&XkatFYlR9oyUMhZVr-><~LgE9k0G%-jK8oD{&R z(v4xyP{=qL$B z3s;!oGWcM&JY7jCHC7&L9D-sF`X0+{KGkntcfcapgIDO2&Pj6Ze1KOvtzYdun^-N( zxw^BJb&2QiAgfcNM+q{=Ue$gbGox4;eAU=hS+l{caX-Q~SPg~9Zp?t+iuy+45&=Id zVQ6a0N+3f}STG1y$OA>CipFAu?l=--->rn z5mS3TG_$Ev@j6ac4cvdO`$dFj6_M%c*WffGTt$IdCxaAm4uWyPpr zN)cB~jK?PDpUj^PT03Bh`{U>i-xp@@hM|L` z<_{tm;!*BDkP68<0zAq7Xf$`UPYd#=sXxn_b>vfvz84RMiTqM*(0W7ZxW4i`GT%My zjRN)eKnU5RZu5s4^%^a3mf3=a00)ZzPa7O;04CV+3wx+Q1!^ds!MrjGpbU9{BMG_M z&T-+u_-cW9eiP!|`~};vbOte@PM{NyE&)7ium*TkoFf5#6sR%%dOnuU65H8?-C6Ui z;$R8@|Cg=?D1=l=uqp0qG1)JLvrdBdi~>yfc!WVl>Tf9r zKuDnZl+A(wGH8q*`dNie%4erRY^W#*`1t&UBI`y5qu_tpBoN~T&W)9HN2!0g*O~(` zQ$n_KbCmzW=@VgK3fg%KNwNP8mb;Nc%`FYb<*#lEI_4;#cJR85e>()ysf(hJCSr2j z-lleZk4`jKuej*C^5t9z^W$cLqJ_oY?d`2O&`w4a851+pbxbevjZ;QT*A4_21rWpd zJ5HYlod1~A3YE{|xoE8D(~T3Lk1bTreDkZK{pv1TGPsy$^qIL*8Ymp;T95lRC?4aZ zg+nB4sp05YJ>?8<|M@BSv}3*o2RCita5R-$9fJ#+Lm>p7!#VpWwAWxcH6Xv*9ZO@H z4uP@NfA@K09~Bu{8)y@ywgQy0U;SQb`?#G9#68!T;rG{{cWW*}27s%+D2Q=7P9?cZ zg1j%MwJr}Ak&IG#A8vSKBwdAJ1tOa>7_0zNQp62A->=HHgWj|#pW$Y_0kjWnK9l>~ zJjz!9*bGHfVgz)s-gGCwupeEKKp5NR5d;bH+S)AYs$*7}(-n`-DqB+tJxP5{AEX>< z1nTNc^KJ)c@_W+2TM$G@r!sWC2Be&lsn-ZV%H?QJdk`P1(znyWe}W#d{BQ;4Wo9@K zQ?2b1U5*6~>pvX|w}tO(gTv!|T(OH*J1ASj@juH0lMx7G4QAB>Ym%HSg8^G!B_o%4 z1Hu6A&F9li53s;gtWG&O#cGZyNl@M{78;dTGGJ<$%B;a}Ku0t%9q89QYrpE^GL)6s zkam55f5Fj505(^I0;}a7I+Mq;Iwa`5t0}I(^KP)e(9WclQ0aq} zB&qWuuqpqF9^m32QS?i(cz{D9O*_r;tKFt#V2lkZ9S7hm#ALHJp5;wR|AqqA1VB+3 z_)o%=LYEENCJL1&OUOpugx%}bi-;!?9qr*Zd7jU!DC_r++pcy7H0k}gBFn51TBIYF zLzEnsZeLF}w!3e}0;%{n4xN%v-_+QTvH8uvT9KRGLX(1>VtnIvXSbdvyd6`P6PP00 zXYVWScH_F9dgb?)idlzBZ~hH3LmcfNC4t{uXOcqs?#otrDb89@gy zYFOAgoKz{~WtQ%9s@?@Z=Z)(}LKOFWd&A5rj6C zcfw>JaS?L!)$Bd%)!oc1*}n%GvZDB+25UmAb8y*u?e>Bm}+>FW0H zK&#G&yNcOt>TXw9uV3ljm(1zz#3y`pp@jAJB^IkKgWjZCJQaK73oC|)iU#`vh&c{x za@n>Y6{pJU=zc=@U^$u#8%CLsjgMY(+boj6{=fnJ!V@jX5+j=qpsN7==oNbnXUO*XuDZ+S`CLQbpnqf1D{3$B;QH= zAzJ^C!P&;yy6-d2r!ZW(FF={|9WKGbG+XvtATMv?&+SB1Ec)Lk(y}?-K4Ri9vqOIZ zES3k)*N|Qv?`ye(wXdRnqa|q)58=xX;cJ?T1VK8Fp#b@@0tPnPXAxQKLxd&WgNxLh zcfkWCi@TN>6T}5UXvn7gGaC*Id~DoLXF_Buo$$RwFfy3Y8qt2j?L!g!vDtbiZqAyI zex7NqBH4CB2zfkpkinfY@}#D~S25wvjH(-Djy;X`8y5X&?uKx-e8Qu9O+A{JM2#=a z?LwMQr-$!h$@fU6^xV#HIFjE|C_Geqs%%?40CmkO31XL{TAJsle^t1n37u26IdJgb zu~o$-X5WAg(7nkB|7bf&y>PYFp8iBx=B|xUCpVtpp0EKn@{E5;^qDi@*KIdb652A! zw|qhEq&-qLkB^;t+3Mkbl6QvAKzzOkDRU`yP!6k!NgsI%rQs5Lg#GtRQ1!EgX?vK8 zLbUxc%)}Re`3t-~gP2ZeJ>FNSLk>aR1h%A}_*(TAW8H_OkbPLK;&)2Jz$*0h;WawIn@jWOxYQn+%B0%gM|Iz&7&mFjplaWD zUJ=m45ow)~wUNHGr76WkGZ6^kPm@7eRO=JV{}Vjr*~fd;!A#1GM-n*8i;RYZqWr+n z>KJ%3=3q446-Ek;%c~>+$y?2rt$;wlp3L`}2Q4%vr@x;KpOEaRSp}Kx^YUVX4MMoI z=K~X)(DJ%hs8C}bO@fsm+OyrULRM+XsPNNaS|~gYCrG061s0Z+$_WQ@&I?5Gsuwyj zcRD|nL`s!Q%}Z^{=4M#;PD;uJuBSy{@llJ0iY8EviQy;N<5OTb;2{!35MvQVNL4c&Ghde^kO=|FKS>@LaSSb!! zO3ekyj%Yl0nsHwRt$-f0VN2sb8(C9{15`f7K3v-u+p!ljMU&0h+{%YikX|bIcWlkh z_HQq5Ww;9O)yGLvYK+lTkaWwI4NI^02m4r3boP(N*L3Vs?D{Ve4|7ygeoJFpAUqDpV8>&ie)0 z+v;97@nL@Q!H`0;#FSbR>+fQ9SziGy^LPY|FzJZTNh~~s;uSm=`CVZsEsyaY>)4IF z65)5N-VgCdaX-UG@ar|g?BdL{JgPMw8Z_)(A@vg+9nXcbZ@eBDWv%Es9u*RkhB{f_ zyuJbRh!{c`-@QAM)$Hq^6A*XJTX@xi@3?N3namTyIqw8{Ql;g~huf=*mWi~DD?t0~ z7~x>@U>C~J6HOnEV#psA$*J6MaNaV!8@#CChT2MH??`c;2#jMf#*LFOEy9GxrOE+8e2ZNTcCCRg+NT(7_;? zBqq=q=Gsqa5T^CAtybr)R=-)xFs8K|W{tRi?y#Z#iUv8CnVX6Y5$S6jWB~49_xo!B zBV4D2;o!KY#SKD9IMJ)(7d4SHIEU+Lde1w`rJ9M0Hhe7YyX!2G%ba0!rnhF;+0brU zL^|H*ncE>Se?xinS-IrT2)|+fn;jNNK9ZkUv~eB~eBo zl?XGP1f0ewFjfaz+!?4%M#AJU$X})Aa#q3_d)aJWpO@xoHB&r*!e9m9g5p@Bvn}(J zH*nrjM|oSPLfRPr4dW8cU9`4R6~7kSplJqlD~OR0b5 zU*N6O*I|lg8W8K2D?2_cXC{p$%k|k^u_kOM=|)RG^;_XeD?$Z;U{aCU=XV2dpwx~Q!I zRRiWIxX1kQ!2Ki*n3JSIHqu!GW7sUuH5sv~80EoMRtsUQnUbJU%1##i-B$VXfPW#H zwLGv_>MMe90U!LAXF#hs?MGX-K#V*aej&9h?yG zAp!H#f@|NT$3^~B#VwC#Z_z`%dT(%@SD0^PoV?;C+B_S?wH2R};zRbF7P@oY1+C(l zOZ3^^sx186j=E6BwNU4KR!Jj%|<>JH(Uu6u^uvdJ*o*caS50h(%&B&expAp zkcxisTr>6G?clDkTWx>3WRB}}2h7u9#Q>HLuve^ipej@8szt&k%LXRb9)6L5!x^Hk zZM9uKC8?GQri$atZ$t}JwLr_;)YW9sVva)gTI{)S_)(y$eAD`aHdJB;4>~Q)_{zlO z*e$o$D#l`jy! z6!=kLxhWJp34OS|K)J7ven5H%c{H%@e_PN9>NVdalm6G~213CHaPT!fZGZ;-vrVzy z0Jk#=7{~^Gr9B9q^A0l8m*Jipk%>VF`DwW8XLgaO(6K3Kf}6isxrXM_hgc!Qg4lKQ zK3w*Mz$>s-LUuTQ&ZV6sew;~UUfthfD+;smb3Gb9Rg+16;B9&t)gM`kCHT=N1L?-h z-czWFbOymsX?DcN$y{zMO7)d+C=X4vIc`Mf5&lNtmEUxDMk)RBi-uO*`z)ledRB`2 z0sFDbtJlYGqzr?cm8!nQt#`>u181vH0PmVuKbqwchoNn--xg>%-?NcKfhNy4NMonR`Cyy zSSjaFZb=fQ`tv;VKu{r@Wdr!9S{6GIAfMRz7T)nkQLX2-jA-HwMy#lK{)ZOckzhdI z_jQ_ZEP7dfd+rPWdo&im3U6O|IM6Ewc}~i63KI2%{W-}$fU!Bw?D1PFa>J)6fdqX&; zp*5x^Nj~ln%9txQd#JworBJWx?&M{{B$?N;6K$#)%_oi3yE%p7F+E9gtcP@-Hiz=3 z2j0Sp8(ENzl#fhW1Gc#c@QR|WLzG%?CxszQ&A46U2l(l<{A=F4?DsUL=GP3{Vd89f z!^fsIAI?{4SXQ|&6^~V#J)81&hn}1>Qu7q1_i(QNs75_$UK;a%}IevXf7gZwP zUgnC&a1g6e&f!PJFtocawwVmCc_XT(RqUa^OU!c8BYX^YbZaOa<%1k)5{`{?>t6a1 zTP|@;KBBf6Hj|vHtFpG8yjAA1ZWMFS`xM96xbk@9ntw{PulcM?V^;g+`K3isTyBDz z0ohIZnwB#!0a8bo4vx7ntOuXYScEWOPwC=Wiz=IpbC<;zDX3mXQ$G@=JqE^{GZ`#9 zZ9I-H+cjS<9Xngd0ic0&fpSrg@n00VQK=8!8IIP1&YP>I=Mrr@?!*_u zq4H`eUKiys$ANZpOAfIf*{n=K1ry*Mw?EU)Y=c4kKLkPkguR>x9T86n`$A%N>A}my z-1~&F!Y?Mp72U*nMrH*?PhR)POuu=U+_%}|7vGMW&3sgg6_CBgR;!X@dK>1Iw>uHJwsGqw z?S~Ias9h71-PCcXu&$~Og`Ma1aR`adh-)1jwWghNYUO9s2oWRZ-6Y6M>p%GylDm8; z|4dw!d9)F%c|@dnBjdnpc>u5ZU1}+m#4YV2HB0N^y$fE-)#-rcje=*lX6|{pDzb>; zkQNYjZJN@oQK^tOh)XRipoxTEhz58ExO*oTm~w0BERPyicZ3vL+ALTS5J&c*U`mK; znc{au)XF%Sk>f^;Nt3(}my(^qgW$r_Cl)fNsk*T=-O9$RnZirmio0Bqw}I${2VO*E za8?W7PVF`slAff=Z`C5*6q+&AOw39Pkk!5R^X8YtdyBl0;LYOMxSk@?OEp)x8*^RR zRBr?QGUH?}y2xnjFH}+rWjv9l&vp197tI|Wmiwij`cRdL$>~73ie9|huY8e#pi>Bi z9)=>Ix3&VE!0SE6hgKXodyJr|vCGySe?YDLQP3J?E2*c&dy9x+JwBA7 z)luk@?6`Z>mq{HLoT_`iF;bX{Y7*UtHyh{ zmJcqZwMIF>{hZJ1QWL>L!iR0-<=P28(cv=G3_Vi}gcvuR zBhePI$=SAFv^*lt>M!xvRDAPy5Je}@_&F=@NY2yVfa)p5FoSL0BhX0ztm+56no~?u zScOXxYs;wQw-U9sf8CpG2m6!PVu)Mhxa z{SQKr1h(Wp$pzfE)WReo-{9mTG*R{Wo)P@f$I ze=ldI1S~$SswJ&Nek0*NpzM0Ea^(q3+E|M$D8j_gy<7HceP>}FCUW|jAe`F%3vh0v z8$5XmphS1xQu##Sq~EqVSApH>$B`t-bO)rzr8e^a{2AuiyB8AH1*wVQ#7j=M*VOi4?DGtwR;lekP*4E@_@J@OJ zne>tW;>eED$lHD-?h}_o+h|EaMO`PopXAhKNhq|^G{z!p389J_2)vMrKN@E+DNh++ zu5FPC^Eygug?L97vtoQkkWbdw(%P_;f&r513EzIUR^cNLqU zxd9Ypf?TU)&-ZbDT^AWa=0@9*+Gw2q`M=JVKJc%AHvCi@A-6!ygYUVtn2EP90VC{k zw{J=I*MTn+KzlE$)K!sLB@hPPn$n2t4JuWWkn7J@2*y}dE>!nE)#k{W44)G$X7ZHx z`WQN8Wr$h7Q$4tnE?+oArPChQq4p^vJdo^a5U-nfMYr+-kZZ}%Pt5@n`cG6hOB22^ zf09wp`k&4hP`HT-pfHu9D$IYwz|mr*K=ip5l@JWTR)94^i6bECqQbL0_*?t}#cJb> z08lII?)&jSaF-1@4&*?R`+qI~{?>*8zg%ix#qqz}(gX77I%I14DVn Z)K8e8>aQlCguYW#R$57_T*A=r{{fjRn6+LBNXJs5#ey*KtMncB_+Npfq;NbgMfghz<>cI8WM^TzzwLglK2;p zno0a);K4Uj4M{UuSrA&_J`4y1C@u)(pHqN~04UzyeKAmK5b%HGz<$CkK_LD;M-I6C z^Wy+6e{}x01naQUHn#js!n{-luwfuwFjfw^#)U+diKA3_T> zQ0t`?73=)(Hbf-BU<2+pYP_e+l71arIFUPGfqC4g>8EFBH-G4|PIcc-MpFuMYVQbx zkqiCXHpue;X4~|c5EB0XHWM&(d~f8xhn;f%fdi-EnxL@pApdKS(3_y2i2rT1Xn9*# zJVt8&^+zt$*XRCUR}#Ia5Y$|qvFRB9>B1^FToL@I`{{}Y6b`AD%nb7H?Eo(g{r@ig z|8MYVcVFwMMLI{-zDZs$F7d@i7RFniw4d1jy^{dSFaDUZlsCjn2>*(>vVnHbnv_p_ z5c~JF%Le;*NBk%}W;4D$U=WWbv|Mert$h4OM3no}Qp3q<^k5=0rTvSD2sE<5Y3pf| z2K^HxWIhQA5(PRImb!{YvP75OA@CQUCs6wI^b`;f0FYcxw?rbRC?=9qw?c@6k+;~~ zuxkkt@gdBew_5kx66$ESZPHrY!4s|4Yy4@~NVorRzFI0U#Bp%m$oS_rxhP;19JmBZ zjz61K={yk`&44%AEF1lv;FNEBVI2ONBcR`Gv%Ic+sVF6S*y1?QzFTA1*Rr|pxqANg zd{4l8pID!!6R52aiR-xW1bi6venUe;=z9u|A8-b3cQ=loO9Yu+Pm)6qRDTn3JDDuC zktJU}Uhn33zp|w5(?0=Pj%SHFFE_kuIxe)*VDU+beD`K@{oX|*I$s;c^t=Emt9Cv7 zbaXGJL_M6D6G#yRa*Ngaf;XLtBz=A6hytf)`69JF7g|ZbisX`V^&K{zu)@<_t<~Kn zBv48>;P>|T5BK&=4o!CB!Bg@T3nwqvE7KlmO@I9v_*?wI8P~Lwnvznj-y$ zqe?1kX{l+&o)lduF4_qL^7sRq(0@y4{0`@H7!tusyDObzQ;ol#`YrC|Qk(M<_u<8A z4^f1D_x{3^V77MJ@fVu&hs`w7_@vC2F(&vl25sK~z~a2>nB(98Ps7%#eN5regk;x*lu>O ze_XTSzY5_vR9Ra~fMi`737jWYgyWi7m>j1MLP65q$Ue%UDky z{N&Wso!!;VP5nJpXauMMf+YK}uCHJ1*4xiVVcARIQ7`eAnyeRp3+~CiIXrJ0!^I|$ ziACc$Ctwq4Hd)PE*Y-GG@+)UYsScN2I$mi8g(Bdv8Xt&A1uhf$&Q)tK;@P(fXX^!j z{`{HKW{p}-Twmd{3n{5QIY{|jlQdR(hFlSftKO3RTq!~l@OgS^zUF<0iv@>HJeftz zLw3uhC&_<{;5*~@y3fNCgT+%_*Ao+?l!2KXy5}y8d$|r-?{NQk&g8?+$G?&;I|Ko> zf!(dmsxz10p>h_e7}E#T@P1(7<9jczD+hA~K2b3+$d;c*Z**;ADd{%ey(oEP?L5X} z<@h0q;Pp#gk2g*UhqzpBOvqY#rr6icTfJ-&BrR5HzPup|62l`%*qH>^l@L=5fS6nSswCihBv=#6MI@bil}1D-mag|N<2V66*HQEsu|h^ESbeXFdEtNn&J8}; z90+hIgm3rXOGD$h3nzVLFt%Sz;TNAkOjiACm*yC}s6dTD$9hA1Y&Afkt2LBUf<^FBp&On`f*Gww*T$89&} z_0jfpSj22Qm{n5%Tb&-?{bN!lhwb;5h*LWZ_a9rCwff%2`%Ho#I<0=RA@Y6>P<$LH zIe=GZS5@_?$5p$o{YsBpW|mP%wZb3LDNnx3Hh?fO&Hd-23%D3wk^R)^_ojo6N5hYF8Y zPHR5SX4~fQb3Cc(!yqKKics>l;_G{uPd$iop9|9OdxNm8EMH5D?^PUXe4c|o&tKHk zi3Nv+@lq)d3)$)jyu+Cy)$#Z~wjGwqi(-p#%*?Q)-xkPtIilci`h0+!b&*~NA#N!L^dbu}bg$H|dz1r%-((~4g!IBL*csv3SslyK za-W}G*!VU80OaO?;DHFl;%SA9-CcQw$Js|nr-P7=20N0nvVM`wO>|N)aUqMC&gE|P zxw}}`HgUlzleX==Ua4eM?~z#RzY;fqgjUBxYezggphYCkdut?{i|>rh8ucoTM9v z!k^aJcHW}{aSw=hKTNKs={VIpH=srLVUNZ)hH;~V`NhJj z>v^0qB;oJOm#(^>DR?WOz@CmwaITkipVY;tIUR5HiJV-cQ`|&e?|v0qyWzd;rjjE7 z(-;H1zg$$uMIo>n?LIn_~HryhA<<@m0nYN zIX-4ypU~bzw_65K4LgQqs1b zj#w|>W=oA_=j15gr7I)(n&qf0?;}t>i6P=9u{w* z07=PTq@X&u+it{i@^-`u?097Yjm8FAW!4Q5PGsrH@cj9~WMpL9@pN`5Xp#m8eaF`J zo!pkcCtRy_NPm-opp9`KB4{`4EvBbqkM~7H#ULUh2j%#q?(fPU@VtQMM|NCx!_%#8 zvYSQ@8Tss7i_aJTi$Bz$aIuuvTccyvshj`+dlW~x;ImIwsLJ%MY}cV)!s8>@5v$;{ z!#!l-q^&;bgE6?m#4$*u=Jw6J#j)G8J&LC4E5+rM|2_YsT}_6jyz9xyWsgkfW}X$ zJ=Yw}4!;jyQ=@PRWp$9r($Or{FoSh8ulE`A;-&VFgV5_NW@Hhnt_Llq^v<|&-yEX{-8WsS)KVTFHZd|e?A7eQ(7CCL;{wvV+OgaTm5vvh=y*t6aS!iR+;Z)K z4oB2HE;s;u>h?4kMb31s5* z6?ZT{*GO$rZhj3D5hzz1MIW3#-J1JxnGeU}T9jc)Q0cj1gqkJescVs1cZl}r@ZGcK zQyRk4)KY)kCB>C<;}c@aOZr2|kpL&xhL1)R785FlfuU2D9{V-!kQnRPS)-8slt2Wk<@uk2TTf6%MkjqQ+75d%9-11RVaIg~Cj~dH>hsui zLL!F(j%TERj_#xYlTjzQm`fo0MN)+5dpk-f@Yy7`$Ug!7=k})82O9wM@FF+Nc}h|J zxwG@tPrV97eK-y;%$0d4d>p#byytBpvo*2?_tr_2)mtRWA;c<#B~8EO?HLfV)d22e2yw%h=_%Ku2nLGB% zOLGtqVf!+)uAI>k!y_Uv4P84o=C#UD@TGm<06-0%GA&YsWg?$5N5ydGUJn=$X*(hT z@5jyrvMK%td`>x7=`_Y62$k10!SjGIrVf?ltn^lOSZF9HE-c1G0(S$OCT;447tFxj z{+U8Ua)r@gO^I{}CFR*Q^|>~uZB_*PzAOI@wNJ(>FomK<%#aDd3=cVoS0M(exX8rlJAFs)y>b2N)wcj<*!=jX9;xjVf z*V)oPnhB^xwL=8YTWfIZIC-@Dytq}FIj$peHe1cw-H93_5%BC~Ay5X-SDKc};U59! zZG(;!cSJ<2#y?BR?7pg1{@B~gIPPGy9==mSFq8E&$ap?!oZ_z~OzLOD4}%<>i^yk~ z3bqA-j3sIiB(kX*>aEu<}?MiGhJZ zO31}XxO`v9-?zHlF`&`;=%eopmzUuUf3+FRQ5Z7?tpZcVQYTHMzQ{kOQjP+F414X& z@w?DWy9ZC3`egm3^|(zGvtEVUXxcB1$i2-8c2ooykEp#}m*)CDUW+GG%I6A@>L@AE z_QP;ZDJkl^A_>0Dq4~W&4Q~$|W8?PTEQy3=pE8Sn$re3tg2M_}TG9ZhQgm9)TcJkG z^ZwNJ#es@I31V0uj_FZqo9l3|eYwcJ-wHy$J6%$kpX3Bc6>#nWSykMewp~Aa@qSxpuYI zDDQXuRQmEjCi)QIJ{Y8nES{X4 z_dxGhr`;>9NG<}xh`#fqwN)Y*^@@dS@*mR_%Dc zDHaf_f2?VseOigCT%v+ZO&1AMLJfite7z#m(IJ2clb{E4XjW(*1?ME{(z6{ywafx1 zT|94DU+MDVJcN)!fRX?18MiY4zc@F875lWe%Uw8`rf%ivA=7rKSC6+joa+s?2n^V~ z*^C|?(jssq|49%bK+kDrr0hABa$?ifH;DjFyRPgAFTUL5LC&P9whjt-NXyqL2#o>Z zGP0HXuSb=*U?`Sr(Cx0LCsiErkPOQ$emx@{rl)GI)~ij`xU;CR$-SE&uVhA0$O6)^ zQ{IoLO#{$#P&+f)aa}g}Jifu#itnq5qK{7&_t2P?qRG?KAg_!pQpHd}Gb9xl?HD+< z+TQHRW%E?P2iN}E@KN=x3b)^^5sNKLieNs-=zd?R96i>y@80Nk;zn_tmo?Z((>EHS zYVZofbrRtQ_c@2R2Ir5ge33Bn(jtS%s^vv*uJfx~rp`P@;V!Upp6(pOo|V-Y zBV713^d0S?%k>VdAmWoRI=J9&mmAeEFccISaJHbvaqU>%7t7{b!+A0ZLoRXkX?pjo zwNcyo5hA}rK*3x^T|;y|eSG;p@LtOrVXgz#&7T41&{0wGvhbMnOLc~YiP)?)K*T+X zW*l&s@3iVqxvFeE`z^ic<<~sMhLlhTZWwx=6=!CAQY9^q`s482eZ%MZyEy?zXqU^` zlKY0QGL7uFsWSL5@8gZ?RokS?UNsLXKAq^xPA|A2-*x^dONLZ#_w`lsCBP>VU$2y5NE@Ovxr_o`ri+=EM98p;I#uiCL@p8V_ zSCW-cR2)ZIFlJ-oLau6gkRVxyzO&U9rc_<^-<6y{f+)*M)x35Ai^+}!6j8nbSRqO( zdU|@9Zm0f6Apun z3?COC=Rkk1s-eN=z2|YHEeg0o91Oig7QE50syOrBaxiFz_M{0Lfyy?Dp@)VK7(3HA zhf}uAW@1o|PY5OJMN~?EU!R%763*RVt7D%KV zpllvSf5vaO4TI3&L1ZBd&833~BTAlhsw_H@@lo%&y%=m2MyQ2s9~L=ckf}ioGZbhugI>rOP^7k&zlzc-sX}v$8*Eh?Hn

+_KXmVOl=>dV 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 CO^+x5 literal 0 HcmV?d00001 -- Gitee From bbeb7d78f656863ea437a728ac9e93da641b1b81 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Fri, 24 Sep 2021 17:16:39 +0800 Subject: [PATCH 41/63] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 4340600..da88c81 100644 --- a/README.md +++ b/README.md @@ -2180,18 +2180,18 @@ TNM的定义级中需实现的3个成熟度目标:制定测试与调试目标 提高测试成熟度和改善软件产品质量都要求将测试工作与软件生命周期中的各个阶段联系起来。 该目标有以下4个子目标: - (1) 将测试阶段划分为子阶段,并与软件生命周期的各阶段相联系。 - (2) 基于已定义的测试子阶段,采用软件生命周期V字模型。 - (3) 制定与测试相关的工作产品的标准。 - (4) 建立测试人员与开发人员共同工作的机制。这种机制有利于促进将测试活动集成与软件生命周期中。 + (1) 将测试阶段划分为子阶段,并与软件生命周期的各阶段相联系。 + (2) 基于已定义的测试子阶段,采用软件生命周期V字模型。 + (3) 制定与测试相关的工作产品的标准。 + (4) 建立测试人员与开发人员共同工作的机制。这种机制有利于促进将测试活动集成与软件生命周期中。 4. 控制和监视测试过程 软件组织采取如下措施,制定测试产品的标准,制定与测试相关的偶发事件的处理预案,确定测试里程碑,确定评估测试效率的度量,建立测试日志等。 - 控制和监视测试过程有以下3个子目标: - (1)制定控制和监视测试过程的机制和政策。 - (2)定义、记录并分配一组与测试过程相关的基本测量。 - (3)开发、记录并文档化一组纠偏措施和偶发事件处理预案,以备实际测试严重偏离计划时使用。 + 控制和监视测试过程有以下3个子目标: + (1)制定控制和监视测试过程的机制和政策。 + (2)定义、记录并分配一组与测试过程相关的基本测量。 + (3)开发、记录并文档化一组纠偏措施和偶发事件处理预案,以备实际测试严重偏离计划时使用。 在TMM的定义级,测试过程中引入计划能力,在TMM的集成级,测试过程引入控制和监视活动。两者均为测试过程提供了可见性,为测试过程持续进行提供保证。 @@ -2220,8 +2220,8 @@ TNM的定义级中需实现的3个成熟度目标:制定测试与调试目标 软件质量评价内容包括定义可测量的软件质量属性,定义评价软件工作产品的质量目标等项工作。 软件质量评价有两个子目标: - (1) 管理层、测试组和软件质量保证组要制定与质量有关的政策、质量目标和软件产品质量属性。 - (2) 测试过程应是结构化、已测量和已评价的,以保证达到质量目标。 + (1) 管理层、测试组和软件质量保证组要制定与质量有关的政策、质量目标和软件产品质量属性。 + (2) 测试过程应是结构化、已测量和已评价的,以保证达到质量目标。 #### 7.3.5 优化、预防缺陷和质量控制级 本级的测试过程是可重复、可定义、可管理的,因此软件组织优化调整和持续改进测试过程。测试过程的管理为持续改进产品质量和过程质量提供指导,并提供必要的基础设施。 @@ -2383,7 +2383,7 @@ Postman是谷歌的一款接口测试插件,它使用简单,支持用例管 2. 自动化测试发展历程 3. 测试成熟度模型 4. 自动化测试体系 -5. 测试工具 +5. 测试工具和测试工具的选择 ## 第8章 软件测试管理 ### 8.1 软件测试管理概述 -- Gitee From f5bfb84ba263b627bbed206404577865d8b599c1 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Fri, 24 Sep 2021 19:11:02 +0800 Subject: [PATCH 42/63] =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=9B=A2=E9=98=9F?= =?UTF-8?q?=E6=A1=86=E6=9E=B6(=E5=B7=AE=E5=9B=BE)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 170 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 166 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index da88c81..f49ee3f 100644 --- a/README.md +++ b/README.md @@ -2300,7 +2300,7 @@ TNM的定义级中需实现的3个成熟度目标:制定测试与调试目标 4. bugzilla(功能简单) 5. svn(代码和文档管理工具) 6. git,同svn,但是多分支管理比svn好 -7. QTP +7. QTP(HP) #### 7.5.2 接口测试工具 1. Jmeter(开源) @@ -2316,7 +2316,7 @@ Postman是谷歌的一款接口测试插件,它使用简单,支持用例管 #### 7.5.3 性能测试工具 1. jmeter 基于java平台的性能开源测试工具,其实也很强大,而且比较好用 2. ab -3. loadrunner +3. loadrunner(HP) 4. Load UI,一款开源的压力测试工具,支持图形化 5. Siege 一款开源的压力和指标测试工具 @@ -2387,6 +2387,168 @@ Postman是谷歌的一款接口测试插件,它使用简单,支持用例管 ## 第8章 软件测试管理 ### 8.1 软件测试管理概述 +软件测试管理就是通过专门的测试组织,运用专门的软件测试知识、技能、工具和方法,对测试项目进行计划、组织、执行和控制,建立起软件测试管理体系,确保软件测试在保证软件质量中发挥关键作用。 + +软件测试系统主要由测试计划、测试设计、测试执行、配置管理、资源管理、测试管理6个过程组成。 + +其中,测试计划、测试设计、测试执行在“软件测试流程”一章中讲解。 + +测试配置管理作为软件配置管理的子集,作用于测试的各个阶段,其管理对象包括测试计划、测试用例、被测版本、测试工具以及测试环境和测试结果等。 + +资源管理包括人力资源和测试所需的相关技术等管理。 + +测试管理是指采用合适的方法对测试的流程和结果进行监视。 + +#### 8.1.1 测试项目范围管理 +测试项目范围管理就是界定项目所必须包含且只需包含的全部工作,并对其他的测试项目管理工作起指导作用,以确保测试工作顺利完成。 + +确定项目目标后,下一步就是确定需要执行哪些工作或者活动来完成项目的目标,需要确定包含项目所有活动在内的一览表,一般有如下两种方法: +1. 头脑风暴法 + 测试小组根据经验集思广益,这种方法比较适合小型测试项目。 +2. WBS + 针对复杂的项目,往往需要工作分解结构(Work BreakDown Structure,WBS).工作分解结构是将一个软件测试项目分解成易于管理的更多部分或细目,所有这些细目构成了整个软件测试项目的工作范围。 + + 工作分解结构是测试项目团队在项目期间要完成或生产出的最终细目的等级树,组织并定义了整个测试项目的范围。 + +#### 8.1.2 测试管理主要功能 +1. 测试对象管理 + 测试对象包括测试方案的具体测试步翼、问题报告、测试结果报告等,主要是为各测试阶段的控制对象提供一个完善的编辑和管理环境。 + +2. 测试流程管理 + 测试流程管理是基于科学的流程和具体的规范来实现的,并利用该流程和规范严称约束和控制整个产品的测试周期,以确保产品的质量。整个过程避免了测试人员和开发人员之间面对面的交流,减少了以往测试和开发之间的矛盾,提高工作效率。 + +3. 统计分析和决策支持 + 在系统建立的测试数据库的基础上进行合理的统计分析和数据挖掘,例如根据问题分布的模块、问题所属的性质、问题的解决情况等方面的统计分析使项目管理者全面了解产品开发的进度、产品开发的质量、产品开发中问题的聚集,为决策管理提供支持。 + ### 8.2 测试过程改进 -### 8.3 人力资源 -### 8.4 知识点总结 \ No newline at end of file +软件测试技术解决了测试采用的方法问题,测试管理保证了各项测试活动的顺利开展。软件测试过程改进主要着眼于合理调整各项测试活动的时序关系,优化各项测试活动的资源配置以及实现各项测试活动效果的最优化。 + +#### 8.2.1 功能 +组织的规划内容通常包括以下内容: +1. 绘制远景:提升管理成熟度,提高测试生产率。 +2. 战略分析:根据软件成熟度模量适时进行评估,最终目标为CMMI4。 +3. 优缺点评估:以内部改进为宗旨,使过程改进更符合组织的实际情况。 + +测试过程的改进对象应该包括三个方面:组织、技术和人员。 +1. 组织 + 软件测试组织的不良架构通常表现在如下内容: + (1) 没有恰当的角色追踪项目进展。 + (2) 没有恰当的角色进行缺陷控制、变更和版本追踪。 + (3) 项目在测试阶段效率低下、过程混乱。 + (4) 项目成了测试经理个人的项目,而不是组织的项目。 + (5) 关心进度,而忽视项目质量和成本。 + + 因此,组织的改进应该使得测试从开发活动中分离出来,把缺陷控制,版本管理和变更管理从项目管理中分离出来。 + +2. 技术 +技术的改进包括对流程、方法和工具的改进,包括组织或者项目对流程进行明确的定义,应引入统一的管理方法。 + +3. 人员 +人员的改进主要是指对企业文化的改进,建立高效率的团队和组织。 + +#### 8.2.2 方法 +在改进的不同时期和阶段,选择的策略也不同,组织应根据实际情况进行选择。下面给出测试过程改进的一些策略方法。 + +1. 实施制度化的同时建设企业文化 + 实施全面制度化的管理是过程改进的有效保障,制度和组织文化总是互相依存,没有良好的文化保障,制度化将困难重重;而没有制度的支撑,文化也将是无本之木。 + +2. 引入软件工具 + 推行配置、自动化测试和缺陷跟踪等工具,将有效地分解事务性工作,可以缓解人力资源不足的困难。常见的过程管理方面的工具包括Rational公司的ClearCase等。 + +3. 调整测试活动的时序关系 + 由于有些测试活动是可以并行的,有些测试活动是可以归并完成的,有些测试活动在时间上存在线性关系等,因此必须区分优化调整,控制测试进度。 + +4. 优化测试活动资源配置 + 软件测试过程必然会涉及人力、设备、场地、软件环境与经费等资源,必须合理地调配各项资源给相关的测试活动,特别是人力资源的调配。 + +5. 提高测试计划的指导性 + 测试计划确保测试大纲真正执行、用于指导测试工作,保证软件的质量。 + +6. 确立合理的度量模型和标准 + 在测试过程改进中,测试过程改进小组应根据企业与项目的实际情况制定适合自己的质量度量模型和标准。测试过程改进随着测试过程的进行不断实践、不断总结、不断改进。 + +### 8.3 软件测试文档 +#### 8.3.1 测试文档的类型 +IEEE给出软件测试文档分为测试计划,测试设计规格说明、测试规程规格说明、测试日志、测试缺陷报告和测试总结报告等。 + +1. 软件测试计划文档 + 软件测试计划文档主要对软件测试项目以及所需要进行的测试工作、测试人员所应该负责的测试工作、测试过程、测试所需的时间和资源,测试风险、测试项通过/失败的标准、测试中断和恢复的规定、测试完成所提交的材料等做出预先的计划和安排。 + +2. 软件测试设计规格说明文档 + 软件测试设计规格说明文档用于每个测试等级,以制定测试集的体系结构、通过/失败准则和覆盖跟踪。 + +3. 软件测试用例规格说明文档 + 软件测试用例规格说明文档用于描述测试用例,包括测试项、输入规格说明、输出规格说明、预期要求和规程需求等。 + +4. 测试规程 + 测试规程用于指定执行一个测试用例集的步骤。 + +5. 测试日志 + 测试日志用于记录测试的执行情况不同,可根据需要选用。 + +6. 软件缺陷报告 + 软件缺陷报告用来描述出现在测试过程或软件中的异常情况,这些异常情况可能存在于需求、设计、代码、文档或测试用例中。 + +7. 测试总结报告 + 测试总结报告用于报告某个测试的完成情况,给出评价和建议。 + +#### 8.3.2 测试文档的重要性 +测试文档的重要性主要表现在如下几个方面: +1. 验证需求的正确性 + 测试文件规定了用以验证软件需求的测试条件。由于要测试的内容可能涉及软件的需求和设计,因此必须及早开始测试计划的编写工作。不应在着手测试时才开始考虑测试计划。通常,测试计划的编写从需求分析阶段开始,到软件设计阶段结束时完成。 + +2. 检验测试资源 + 测试计划不仅要用文件的形式把测试过程规定下来,还应说明测试工作必不可少的资源,进而检验这些资源是否可以得到,即它的可用性如何。 + +3. 明确任务的风险 + 测试计划文档帮助测试人员分析测试可以做什么,不能做什么。了解测试任务的风险有助于对潜伏的可能出现的问题事先作好思想上和物质上的准备。 + +4. 生成测试用例 + 测试用例的好坏决定着测试工作的效率,选择合适的测试用例是做好测试工作的关健,在测试文件编制过程中,按规定的要求精心设计测试用例有重要的意义。 + +5. 评价测试结果 + 测试文件包括测试用例,即若干测试数据及对应的预期测试结果。完成测试后,将测试结果与预期的结果进行比较,便可对已进行的测试提出评价意见。 + +6. 确定测试的有效性 + 完成测试后,把测试结果写入文件,这对分析测试的有效性甚至整个软件的可用性提供了依据。同时还可以证实有关方面的结论。 + +### 8.4 人力资源 +#### 8.4.1 测试团队框架 +![测试过程组织架构图](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/auto-tx.png) + +1. 测试主管 + 测试主管有权管理测试过程日常的组织,负责保证在给定的时间、资源和费用的限制下,测试项目产生满足质量标准的产品。测试主管负责与开发组联系,保证单元测试顺利进行,并与独立测试观察员联系,接收有关没有正确遵循测试过程的测试项目的报告。 +2. 测试组组长 + 测试组组长负责为测试分析员和测试者分配任务,按照预定的计划监控他们的工作进度,建立和维护测试项目文件系统,保证产生测试项目相关材料(测试计划文档、测试规范说明文档),测试组组长负责产生这个文档,也可以授权测试分析员来完成这个文档。 + + 测试组组长听取一个或多个测试分析员的测试报告,在验收测试时,测试组组长负贵和用户代表、操作代表联系,以便有一个或多个用户来执行用户和操作验收测试。 +3. 测试分析员 + 测试分析员负责设计和实现用于完成自动化测试的一个或多个测试脚本,协助测试组组长生成测试规格说明文档。 + + 在调试测试用例的设计过程中,测试分析员需要分析自动化测试的需求规格说明,以便确定必须测试的特定需求,在这个过程中,测试分析员应该优先考虑测试用例,以反映被确认特性的重要性以及在正常使用自动化测试中导致失败的特性的风险。完成测试项目后,测试分析员负责备份和归档所有的测试文档和材料,这些材料将提交给测试组组长进行归档。测试分析员还负责完成一份测试总结报告。 +4. 测试者 + 测试者主要负责执行由测试分析员建立的测试脚本,并负责解释测试用例结果,并将结果记录到文档中。 + + 执行测试脚本之前,测试者首先要建立和初始化测试环境,其中包括测试数据和测试硬件,以及其他支持测试所需的软件。在测试执行过程中,测试者负责填写测试结果记录表格,以便记录执行每个测试脚本观察到的结果,测试者使用测试脚本对预期结果进行描述,完成测试以后,测试者还负责备份测试数据、模拟器或测试辅助程序以及测试中使用的硬件的说明。这些材料将提交给测试组组长归档。 + + +#### 8.4.2 测试团队阶段性 + +### 8.5 配置管理 +#### 8.5.1 软件配置管理 +#### 8.5.2 基本概念 +#### 8.5.3 持续集成测试 +#### 8.5.4 变更管理的作用 + +### 8.6 软件质量 +#### 8.6.1 软件质量与测试 + +#### 8.6.2 常用的软件质量度量 + +### 8.7 知识点总结 +1. 软件测试管理 +2. 测试过程改进 +3. 测试文档 +4. 人力资源 +5. 配置管理 +6. 软件质量 \ No newline at end of file -- Gitee From ab0f4c4d3f41b4fa43e939c1be424b6dd351c8f9 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Fri, 24 Sep 2021 23:38:28 +0800 Subject: [PATCH 43/63] =?UTF-8?q?=E8=BD=AF=E4=BB=B6=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 65 ++++++++++++++++-- images/yingxiangzhiliang.jpg | Bin 0 -> 45339 bytes images/zhiliangmoxing.jpg | Bin 0 -> 83669 bytes ...344\273\266\346\265\213\350\257\225.xmind" | Bin 199947 -> 189534 bytes 4 files changed, 61 insertions(+), 4 deletions(-) create mode 100644 images/yingxiangzhiliang.jpg create mode 100644 images/zhiliangmoxing.jpg diff --git a/README.md b/README.md index f49ee3f..02ab802 100644 --- a/README.md +++ b/README.md @@ -2518,32 +2518,89 @@ IEEE给出软件测试文档分为测试计划,测试设计规格说明、测 1. 测试主管 测试主管有权管理测试过程日常的组织,负责保证在给定的时间、资源和费用的限制下,测试项目产生满足质量标准的产品。测试主管负责与开发组联系,保证单元测试顺利进行,并与独立测试观察员联系,接收有关没有正确遵循测试过程的测试项目的报告。 + 2. 测试组组长 测试组组长负责为测试分析员和测试者分配任务,按照预定的计划监控他们的工作进度,建立和维护测试项目文件系统,保证产生测试项目相关材料(测试计划文档、测试规范说明文档),测试组组长负责产生这个文档,也可以授权测试分析员来完成这个文档。 测试组组长听取一个或多个测试分析员的测试报告,在验收测试时,测试组组长负贵和用户代表、操作代表联系,以便有一个或多个用户来执行用户和操作验收测试。 + 3. 测试分析员 测试分析员负责设计和实现用于完成自动化测试的一个或多个测试脚本,协助测试组组长生成测试规格说明文档。 在调试测试用例的设计过程中,测试分析员需要分析自动化测试的需求规格说明,以便确定必须测试的特定需求,在这个过程中,测试分析员应该优先考虑测试用例,以反映被确认特性的重要性以及在正常使用自动化测试中导致失败的特性的风险。完成测试项目后,测试分析员负责备份和归档所有的测试文档和材料,这些材料将提交给测试组组长进行归档。测试分析员还负责完成一份测试总结报告。 + 4. 测试者 测试者主要负责执行由测试分析员建立的测试脚本,并负责解释测试用例结果,并将结果记录到文档中。 - + 执行测试脚本之前,测试者首先要建立和初始化测试环境,其中包括测试数据和测试硬件,以及其他支持测试所需的软件。在测试执行过程中,测试者负责填写测试结果记录表格,以便记录执行每个测试脚本观察到的结果,测试者使用测试脚本对预期结果进行描述,完成测试以后,测试者还负责备份测试数据、模拟器或测试辅助程序以及测试中使用的硬件的说明。这些材料将提交给测试组组长归档。 #### 8.4.2 测试团队阶段性 +在不同的阶段,测试团队也不尽相同,体现了测试团队的阶段性。 + +1. 需求分析阶段 + 需求分析规格说明是否完整、正确、清晰,是软件开发成败的关键。因此,为了确保需求的质量,应对其进行严格的审查。测试评审小组通常可由一名组长和若干成员组成,其成员包括系统分析员,软件开发管理者,软件设计、开发、测试人员和用户。 +2. 设计阶段 + 软件设计是将软件需求转换成软件表示的过程,主要描绘出系统结构、详细的处理过程和数据库模式。按照需求的规格说明对系统结构的合理性、处理过程的正确性进行评价,利用关系数据库的规范化理论对数据库模式进行审查。测试评审小组由下列人员组成:组长一名,成员包括系统分析员、软件设计人员、测试负责人员。 +3. 测试阶段 + 软件测试是软件质量保证的关键。软件测试在软件生存周期中横路两个阶段,通常,编写出每个模块之后进行单元测试,之后需要对软件系统进行各种综合测试。测试评审小组包括组长一名,负责整个测试的计划、组织工作;以及具备一定分析、设计与编程经验的测试组成员,人数可随具体情况确定,一般为3~5人。 ### 8.5 配置管理 #### 8.5.1 软件配置管理 -#### 8.5.2 基本概念 -#### 8.5.3 持续集成测试 -#### 8.5.4 变更管理的作用 +软件配置管理(Software Configuration Management,SCM)是标志和确定系统中配置项的过程,在系统整个生命周期内控制这些项的投放和起动,记录并报告配置的状态和变动要求,验证配置项的完整性和正确性。 + +在IEEE 610.12—1990标准中,软件配置管理的描述则比较详细,包括以下内容: +1. 标志:识别产品的结构、产品的构件及其类型,为其分配唯一的标识符,并以某种形式提供对它们的存取。 +2. 控制:通过建立产品基线控制软件产品的发布和在整个软件生命周期中对软件产品的修改。例如,确定哪些修改会在软件的最新版本中实现。 +3. 状态统计:记录并报告构件和修改请求的状态,并收集关于产品构件的重要统计信息。例如,修改这个错误将影响多少个文件? +4. 审计和复审:确认产品的完整性并维护构件间的一致性,并确保产品是一个严格定义的构件集合。例如,确定目前发布的软件产品所用的文件的版本是否正确。 +5. 生产:对产品的生产进行优化管理,它将解决最新发布的产品应由哪些版本的文件和工具来生成的问题。 + +从以上定义可以看出,软件配置管理贯穿整个软件生命周期,对软件产品进行标志、控制和管理,它系统地控制对配置项的修改,以维护配置项的完整性、一致性和可追踪性。软件配置管理应包括版本控制、系统集成、变更管理、配置状态统计和配置审计等功能,其中版本控制是软件配置管理的主要思想和核心内容。 + +#### 8.5.2 变更管理的作用 +软件开发和维护过程中,配置项的变更是无法避免的。首先要设计一个实现变更的方案,这对于那些规模比较大的变更是尤其必要的,可能会包括需求分析和设计过程,然后从配置库中检出需要修改的配置项,具体实现变更。实现的变更必须经过测试人员和质量保证人员的测试和验证,被证明正确无误后,在配置管理人员的指导下,将配置项检入到配置库中,形成新的版本。 + +在实现变更的整个过程中,变更执行人员、配置管理人员、QA人员都应该对变更负责,并在变更请求表上留有记录,因此该表能反映变更控制的全面情况。变更执行人员还应该在具体实现变更的模块代码或文档上留下反映变更情况的信息。 + +![变更请求表](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/biangengbiao.png) ### 8.6 软件质量 #### 8.6.1 软件质量与测试 +软件质量框架是一个“质量特征一质量子特征-度量因子”的3层结构模型,其中第1层称为质量特性,第2层称为质量子特性,第3层称为度量,如图: + +![软件质量模型](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/zhiliangmoxing.jpg) + +软件质量评价的目的是为了直接支持开发并获得能满足用户要求的软件。最终目标是保证产品能提供所要求的质量,即满足用户明确的和隐含的要求。软件产品的一般评价过程是确定评价需求,然后规定、设计和执行评价。 + +影响软件质量的因素很多: +![影响软件质量的因素](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/yingxiangzhiliang.jpg) + +软件测试与软件质量具有如下关系: +1. 测试不能提高质量,软件的质量是固有特性,测试人员只能通过有赖于开发人员的努力。 +2. 测试人员的工作成果不能从软件的产品质量或者软件的最终成果得到科学的评估。 #### 8.6.2 常用的软件质量度量 +1. 缺陷密度 + 缺陷密度指单位规模的软件所包含的缺陷的数量。 + 缺陷密度用以下公式计算: + **缺陷密度 = 已知缺陷的数量 / 软件规模** + 上式中的软件规模可以用代码行数或功能点数等方式度量。缺陷密度还可以进一步细化为更具体的度量指标,例如: + (1) 每千行代码中的高级设计缺陷。 + (2) 每千行代码中的编码缺陷。 + (3) 每千行代码中的用户发现的缺陷。 + +2. 平均失效时间(Mean Time to Failure,MTTF) + MTTF指软件在失效前(两次失效之间)正常工作的平均统计时间,它常用来度量软件的可靠性。MTTF度量常用于安全性要求较高的系统,例如航班监控系统、航空电子系统以及武器系统等。 + +3. 平均修复时间(Mean Time to Reparation,MTTR) + MTTR指软件失效后,使其恢复正常工作所需要的平均统计时间。MTTR用来度量软件的可维护性。 + +4. 初期故障率 + 指软件在初期故障期(一般以软件交付给用户后的3个月内为初期故障期)内单位时间的故障数,初期故障率用来评价交付使用的软件的质量,预测什么时候软件运行达到基本稳定。一般以每100小时的故障数为单位。 + +5. 偶然故障率 + 指软件在偶然故障期(一般以软件交付给用户后的4个月以后为偶然故障期)内单位时间的故障数。偶然故障率用来度量软件处于稳定状态下的质量,一般以每1000小时的故障数为单位。 ### 8.7 知识点总结 1. 软件测试管理 diff --git a/images/yingxiangzhiliang.jpg b/images/yingxiangzhiliang.jpg new file mode 100644 index 0000000000000000000000000000000000000000..23d22a6c4680b3e5348f3a85f07a128e5beb5425 GIT binary patch literal 45339 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 literal 0 HcmV?d00001 diff --git a/images/zhiliangmoxing.jpg b/images/zhiliangmoxing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f6fbd4679dbda9a1fa0454c56097a470a147d57b GIT binary patch literal 83669 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 H6;}EmFqZ1u literal 199947 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

6677r?C>`Q9NlJ%>NB5}t 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 xqU%H-b3$n5|HTB?2^ Date: Sat, 25 Sep 2021 00:00:43 +0800 Subject: [PATCH 44/63] =?UTF-8?q?=E8=BD=AF=E4=BB=B6=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=AE=A1=E7=90=86=EF=BC=8C=E8=A1=A5=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 02ab802..1049f4a 100644 --- a/README.md +++ b/README.md @@ -2514,7 +2514,7 @@ IEEE给出软件测试文档分为测试计划,测试设计规格说明、测 ### 8.4 人力资源 #### 8.4.1 测试团队框架 -![测试过程组织架构图](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/auto-tx.png) +![测试过程组织架构图](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/zuzhijiagou.png) 1. 测试主管 测试主管有权管理测试过程日常的组织,负责保证在给定的时间、资源和费用的限制下,测试项目产生满足质量标准的产品。测试主管负责与开发组联系,保证单元测试顺利进行,并与独立测试观察员联系,接收有关没有正确遵循测试过程的测试项目的报告。 -- Gitee From 261ef0df8c52aeb6274a6fcee936ae4edbbc4a77 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Sat, 25 Sep 2021 00:01:15 +0800 Subject: [PATCH 45/63] =?UTF-8?q?=E8=BD=AF=E4=BB=B6=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=AE=A1=E7=90=86=EF=BC=8C=E8=A1=A5=E5=9B=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- images/biangengbiao.png | Bin 0 -> 36382 bytes images/zuzhijiagou.png | Bin 0 -> 45692 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 images/biangengbiao.png create mode 100644 images/zuzhijiagou.png diff --git a/images/biangengbiao.png b/images/biangengbiao.png new file mode 100644 index 0000000000000000000000000000000000000000..d01580699e6c8891b34d2506c5dde34622a843b7 GIT binary patch literal 36382 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 XULU^8{WZT23jC3kRFWtYGYbBHp@tcW literal 0 HcmV?d00001 diff --git a/images/zuzhijiagou.png b/images/zuzhijiagou.png new file mode 100644 index 0000000000000000000000000000000000000000..f2fe1c7552fbc59fc2e7b4e6e63f3680d9662e0e GIT binary patch literal 45692 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 Date: Sat, 25 Sep 2021 00:09:10 +0800 Subject: [PATCH 46/63] =?UTF-8?q?=E6=89=8B=E5=8A=A8=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E8=B5=B5=E4=BD=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index 1049f4a..87b98b1 100644 --- a/README.md +++ b/README.md @@ -406,7 +406,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 在软件业较发达的国家,软件测试产业已形成规模,比较发达,软件测试不仅早已成为软件开发的一个重要组成部分,而且在整个软件开发的系统工程中占据着相当大的比重。在微软公司内部,软件测试人员与软件开发人员的比例一般为1.5∶1到2.5∶1左右,即一个开发人员背后,有至少两位测试人员在工作,以保证软件产品的质量。国外优秀的软件开发机构把40%的工作花在软件测试上,软件测试费用占软件开发总费用的30%至50%,对于一些要求高可靠性、高安全性的软件,测试费用甚至相当于整个软件项目开发所有费用的3至5倍。 -从国内软件公司软件测试部门的独立性来看,多数软件企业没有专门的测试技术部门,软件测试程序也不太规范,多数企业也不懂测试,对测试的投入资金过少。大多数是在经过简单地测试之后,就认为是没有问题了,就交于用户了,让用户去“测试”。于是,软件产品在没有经过严格测试的情况下就发布了。对国内消费类软件而言,经常出现一些已经推向市场的产品由于被发现有严重缺陷而导致大量退货的现象。定制的行业软件,常出现一再返工、无限期的修改和维护的现象。 +从国内软件公司软件测试部门的独立性来看,多数软件企业没有专门的测试技术部门,软件测试程序也不太规范,多数企业也不懂测试,对测试的投入资金过少。大多数是在经过简单地测试之后,就认为没有问题了,就交于用户了,让用户去“测试”。于是,软件产品在没有经过严格测试的情况下就发布了。对国内消费类软件而言,经常出现一些已经推向市场的产品由于被发现有严重缺陷而导致大量退货的现象。定制的行业软件,常出现一再返工、无限期的修改和维护的现象。 当前国内软件测试行业主要存在以下问题: 1. 软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题; @@ -457,45 +457,45 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 ### 1.6 测试认识的误区 1. 使用了测试工具,就是进行了有效的测试; ->有效的测试首先是指该软件具有可测试性。可测试性反映了软件质量的内在属性,是一个强内聚、弱耦合、接口明确的软件,它不会因为使用了某种测试工具,就证明被测试的软件具有可测试性。 +> 有效的测试首先是指该软件具有可测试性。可测试性反映了软件质量的内在属性,是一个强内聚、弱耦合、接口明确的软件,它不会因为使用了某种测试工具,就证明被测试的软件具有可测试性。 2. 存在太多无法测试的东西; ->在软件开发领域,确实存在一些看起来比另外一些东西难测试的东西,但是远非无法测试。在大多数情况下,发生这种情况还是由于被测试软件本身在设计时没有考虑到可测试性的问题。只不过这种不可测试性不是由于被测试软件内部的过紧耦合造成的,而是和外部某些很难测试的部分耦合过紧,从而表现出被测试软件本身很难测试的特征。这些很难测试的部分,比较常见的有图形界面、硬件、数据库等。 +> 在软件开发领域,确实存在一些看起来比另外一些东西难测试的东西,但是远非无法测试。在大多数情况下,发生这种情况还是由于被测试软件本身在设计时没有考虑到可测试性的问题。只不过这种不可测试性不是由于被测试软件内部的过紧耦合造成的,而是和外部某些很难测试的部分耦合过紧,从而表现出被测试软件本身很难测试的特征。这些很难测试的部分,比较常见的有图形界面、硬件、数据库等。 3. 软件开发完成后才进行测试; ->软件测试是一个系列过程活动,包括软件测试需求分析、测试计划设计、测试用例设计、执行测试,软件测试贯穿软件项目的整个生命过程,每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅包括软件代码,还包括软件需求文档和设计等各类文档。软件开发与软件测试是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试。如果等到软件编码结束后才进行测试,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将很差。更严重的是,如果发现了软件需求阶段或概要设计阶段的错误,要修复该类错误,将会耗费大量的时间和人力。 +> 软件测试是一个系列过程活动,包括软件测试需求分析、测试计划设计、测试用例设计、执行测试,软件测试贯穿软件项目的整个生命过程,每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅包括软件代码,还包括软件需求文档和设计等各类文档。软件开发与软件测试是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试。如果等到软件编码结束后才进行测试,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将很差。更严重的是,如果发现了软件需求阶段或概要设计阶段的错误,要修复该类错误,将会耗费大量的时间和人力。 4. 软件发布后发现质量问题,是测试人员的问题; ->这种错误的认识非常伤害软件测试人员的积极性。软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因此从根本上讲,软件测试不可能发现全部错误。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。如果出现软件错误,不能简单地归结为某一个人的责任,有些错误可能是技术原因,也可能是混乱的管理所致。因此,应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。 +> 这种错误的认识非常伤害软件测试人员的积极性。软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因此从根本上讲,软件测试不可能发现全部错误。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。如果出现软件错误,不能简单地归结为某一个人的责任,有些错误可能是技术原因,也可能是混乱的管理所致。因此,应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。 5. 软件测试很简单,就是点点点,是个人就能做; ->随着软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。软件测试技术不断更新和完善,新工具、新流程、新方法都在不断出现,因此,软件测试需要学习很多测试知识,更需要不断的实践经验和学习精神。 +> 随着软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。软件测试技术不断更新和完善,新工具、新流程、新方法都在不断出现,因此,软件测试需要学习很多测试知识,更需要不断的实践经验和学习精神。 6. 软件测试没有前途,只有程序员才是软件高手; ->随着市场对软件质量要求的不断提高,软件测试将变得越来越重要,对测试人员的要求也越来越高。测试人员不仅要懂得如何测试,还要懂得被测软件的业务知识和专业知识.而开发人员往往只需要对自己开发的模块了解比较深,对算法掌握的程度要求高一些,所以,软件测试和开发人员只是工作的侧重点不同,并不存在水平差异的问题。 +> 随着市场对软件质量要求的不断提高,软件测试将变得越来越重要,对测试人员的要求也越来越高。测试人员不仅要懂得如何测试,还要懂得被测软件的业务知识和专业知识.而开发人员往往只需要对自己开发的模块了解比较深,对算法掌握的程度要求高一些,所以,软件测试和开发人员只是工作的侧重点不同,并不存在水平差异的问题。 7. 软件测试是测试人员的事情和程序员无关; ->开发和测试是相辅相成的过程,需要测试人员、程序员和系统分析师等保持密切的联系,需要交流和协调,以便提高测试效率。另外,对于单元测试,主要应该由程序员完成,必要时测试人员可以帮助设计测试样例。对于测试中发现的软件错误,很多都需要程序员通过修改编码才能修复。程序员通过有目的地分析软件错误的类型、数量,找出产生错误的位置和原因,以避免同样的错误发生,积累编程经验,提高软件开发能力。 +> 开发和测试是相辅相成的过程,需要测试人员、程序员和系统分析师等保持密切的联系,需要交流和协调,以便提高测试效率。另外,对于单元测试,主要应该由程序员完成,必要时测试人员可以帮助设计测试样例。对于测试中发现的软件错误,很多都需要程序员通过修改编码才能修复。程序员通过有目的地分析软件错误的类型、数量,找出产生错误的位置和原因,以避免同样的错误发生,积累编程经验,提高软件开发能力。 8. 项目进度吃紧时少做测试,时间多时多做测试; ->这是在软件开发过程中不重视软件测试的常见表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。软件项目开发需要合理的项目进度计划,其中就包括测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单地缩短测试时间,压缩人力和资源。因为缩短测试时间使测试不完整,引入潜在风险,往往造成更大的软件缺陷。避免这种现象的最好办法是加强软件过程的计划和控制,包括软件测试计划、测试设计、测试执行、测试度量和测试控制。 +> 这是在软件开发过程中不重视软件测试的常见表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。软件项目开发需要合理的项目进度计划,其中就包括测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单地缩短测试时间,压缩人力和资源。因为缩短测试时间使测试不完整,引入潜在风险,往往造成更大的软件缺陷。避免这种现象的最好办法是加强软件过程的计划和控制,包括软件测试计划、测试设计、测试执行、测试度量和测试控制。 9. 测试要进行穷尽测试; ->测试最多只是采样。 +> 测试最多只是采样。 10. 采样是随机抽取过程; ->测试采样过程需要使用正确的测试用例设计方法来操作。 +> 测试采样过程需要使用正确的测试用例设计方法来操作。 11. 测试和开发是对头; ->开发和测试是合作伙伴的关系,在日常生活中要注意沟通技巧和方式,如意见不一致且不能说服对方的问题,上报给负责人去决定。 +> 开发和测试是合作伙伴的关系,在日常生活中要注意沟通技巧和方式,如意见不一致且不能说服对方的问题,上报给负责人去决定。 12. 测试少报bug开发就会高兴点,报告也会好看点; ->遇到缺陷一定要上报,即使他不能稳定复现(当然测试要尽可能的再现缺陷,并且找出再现问题的具体步骤)。但是一定不要不负责任的乱报。 +> 遇到缺陷一定要上报,即使他不能稳定复现(当然测试要尽可能的再现缺陷,并且找出再现问题的具体步骤)。但是一定不要不负责任的乱报。 13. 自动化测试终会取代手工测试; ->我们在选择用哪种方法的测试的时候,坚持“效率最高化,利益最大化”的原则来选择用最适合的方法。我们工作的目的是为了利益,而不是显得高端。 -> ->自动化测试的初衷是将测试从繁重的、重复的回归工作中解放出来,从而提高测试效率的。并不是为了取代手工测试的,当然以目前的情况来看也取代不了手工测试。另外自动化测试需要在前期投入大量的人力资源和时间,且维护成本很高,故不能盲目推崇测试自动化。 +> 我们在选择用哪种方法的测试的时候,坚持“效率最高化,利益最大化”的原则来选择用最适合的方法。我们工作的目的是为了利益,而不是显得高端。 +> +> 自动化测试的初衷是将测试从繁重的、重复的回归工作中解放出来,从而提高测试效率的。并不是为了取代手工测试的,当然以目前的情况来看也取代不了手工测试。另外自动化测试需要在前期投入大量的人力资源和时间,且维护成本很高,故不能盲目推崇测试自动化。 ||手工测试|自动化测试| |----|----|----| @@ -504,13 +504,13 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 |缺点|覆盖量化难
重复测试效率低
不一致性,可靠性低
人力资源依赖|机械、发现缺陷率低
一次性投入较大
对人员要求高| 14. 规范化软件测试是增加项目成本; ->大家常说“磨刀不误砍柴工”,但是真正用时又拿“能省则省”的理论来操作,殊不知此时省了相当于埋了颗雷。不仅要规范化软件测试,更要规范化整个软件过程,规避个人水平、责任心、经验的差距。 +> 大家常说“磨刀不误砍柴工”,但是真正用时又拿“能省则省”的理论来操作,殊不知此时省了相当于埋了颗雷。不仅要规范化软件测试,更要规范化整个软件过程,规避个人水平、责任心、经验的差距。 15. 测出bug越多测试越有效; ->测试过程中bug的数量并不能说明测试的有效性,只能说明开发人员的技术水平高低。项目上线后/产品卖出后现场反馈回来的线上bug数量才能反应测试的有效性。 +> 测试过程中bug的数量并不能说明测试的有效性,只能说明开发人员的技术水平高低。项目上线后/产品卖出后现场反馈回来的线上bug数量才能反应测试的有效性。 16. 软件测试工作只负责项目上线/产品发布之前的部分。 ->测试活动贯穿整个软件生命周期。 +> 测试活动贯穿整个软件生命周期。 ### 1.7 知识点总结 1. 软件定义与发展 @@ -716,7 +716,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 3. 在输入条件规定了输入值的集合的情况下,可以确立一个有效等价类和一个无效等价类; 4. 在输入条件规定了“必须如何”条件的情况下,可以确立一个有效等价类和一个无效等价类; 5. 在输入条件是一个布尔值的情况下,可以确立一个有效等价类和一个无效等价类; -6. 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的将情况下,可以确立n个有效等价类和一个无效等价类; +6. 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可以确立n个有效等价类和一个无效等价类; 7. 在规定了输入数据必须遵守规则的情况下,可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则); 8. 在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将改等价类进一步划分为更小的等价类。 #### 3.2.2 设计测试用例步骤 @@ -791,7 +791,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 边界值分析对布尔变量和逻辑变量没有多大意义。例如,布尔变量的极值是true和false,但是其余3个值不明确。 ### 3.4 决策表 -等价类划分法和边界值分析法只是孤立地考虑各个输人数据的测试效果,没有考虑输入数据的组合及其相互制约关系,而决策表考虑了多种条件的组合情况。决策表又称为判定表,分析多种逻辑条件(if-else、switch-case等)与执行之间的关系。 +等价类划分法和边界值分析法只是孤立地考虑各个输入数据的测试效果,没有考虑输入数据的组合及其相互制约关系,而决策表考虑了多种条件的组合情况。决策表又称为判定表,分析多种逻辑条件(if-else、switch-case等)与执行之间的关系。 决策表由4部分组成: 1. 条件桩:列出了问题的所有条件,通常认为列出的条件次序无关紧要; @@ -889,7 +889,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 等价类划分法和边界值分析法可能不会测试到投入面值50的人民币,然后点击充值100这种异常情况;因此,当程序的输入条件有多个的话,就需要用到因果图法来设计测试用例了。 -因果图利用图解法分析输入的各种组合情况,适合描述多种输入条件的组合、相应产生多不动作的方法。因果图法最终生成的是判定表。 +因果图利用图解法分析输入的各种组合情况,适合描述多种输入条件的组合、相应产生多个动作的方法。因果图法最终生成的是判定表。 #### 3.5.1 基本术语 1. 原因结果图: @@ -908,7 +908,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 ![约束图](https://gitee.com/XiaFuXiangFei/software-testing/raw/main/images/yueshutu.png) * E(互斥):原因不会同时成立,最多1个成立,可以都不成立。 -* I(包含):原因中至少一个成立,不能同时为0。 +* I(包含):原因中至少一个成立,不能同时为0。 * O(唯一):原因中有且只有一个成立。 * R(要求):原因中a出现,b必须出现,a=1则b=1,a=0的话,b随便。QQ登录的例子a为自动登录,b是记住密码。 * M(屏蔽):a为1时,b必须是0,a=1,则b=0,如果a=0,b随便。 @@ -967,7 +967,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 1. 作为输入条件的原因和输出结果之间的因果关系,很难从规格说明书得到; 2. 此方法得到的用例数量规模大。 ### 3.6 场景法 -通过尝尽该描述的业务流程(业务逻辑),设计用例来遍历场景(路径),验证系统功能的正确性。 +通过尝尽该描述的业务流程(业务逻辑),设计用例来遍历场景(路径),验证系统功能的正确性。 场景法重点是测试流程,因此每个流程用一个用例验证即可,流程测试没问题不代表系统功能没问题,还需要单步进行测试,结合前面的方法。 流程图: -- Gitee From 48de9160ca57819e0778caaf0c23ae81db06ea68 Mon Sep 17 00:00:00 2001 From: xiafuxiangfei Date: Sat, 25 Sep 2021 23:31:52 +0800 Subject: [PATCH 47/63] =?UTF-8?q?=E7=A6=85=E9=81=93=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .DS_Store | Bin 8196 -> 8196 bytes README.md | 325 +++++++++++++++++++++++++++++++-------------- images/auto-tx.png | Bin 43880 -> 44974 bytes 3 files changed, 224 insertions(+), 101 deletions(-) diff --git a/.DS_Store b/.DS_Store index 3fcd09786aea689853960d9bc768a3eddaf55298..4799f9d6faa78efc6afcbea055daf4d9cdca6f6a 100644 GIT binary patch delta 25 gcmZp1XmQwZLU8hQfdURgGgBP}BLl > 自动化测试的初衷是将测试从繁重的、重复的回归工作中解放出来,从而提高测试效率的。并不是为了取代手工测试的,当然以目前的情况来看也取代不了手工测试。另外自动化测试需要在前期投入大量的人力资源和时间,且维护成本很高,故不能盲目推崇测试自动化。 -||手工测试|自动化测试| -|----|----|----| -|概念|手工测试是由专门的测试人员从用户视角来验证软件是否满足设计要求的行为,更适合用于深度的测试和强调主观判断的测试。|自动化测试利用测试工具软件来控制测试的自动化执行以及对预期和结果进行检查。一般来说单元测试、接口测试和性能测试等就是利用自动化测试完成。| -|优点|易发现缺陷
容易实施
创造性、灵活性|高效率、速度快
高复用性
覆盖率容易度量
准确、可靠
不知疲劳| -|缺点|覆盖量化难
重复测试效率低
不一致性,可靠性低
人力资源依赖|机械、发现缺陷率低
一次性投入较大
对人员要求高| +| | 手工测试 | 自动化测试 | +| ---- | ---------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | +| 概念 | 手工测试是由专门的测试人员从用户视角来验证软件是否满足设计要求的行为,更适合用于深度的测试和强调主观判断的测试。 | 自动化测试利用测试工具软件来控制测试的自动化执行以及对预期和结果进行检查。一般来说单元测试、接口测试和性能测试等就是利用自动化测试完成。 | +| 优点 | 易发现缺陷
容易实施
创造性、灵活性 | 高效率、速度快
高复用性
覆盖率容易度量
准确、可靠
不知疲劳 | +| 缺点 | 覆盖量化难
重复测试效率低
不一致性,可靠性低
人力资源依赖 | 机械、发现缺陷率低
一次性投入较大
对人员要求高 | 14. 规范化软件测试是增加项目成本; > 大家常说“磨刀不误砍柴工”,但是真正用时又拿“能省则省”的理论来操作,殊不知此时省了相当于埋了颗雷。不仅要规范化软件测试,更要规范化整个软件过程,规避个人水平、责任心、经验的差距。 @@ -1003,7 +1003,7 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 | TC6 | 场景6:ATM无现金 | 合法卡 | 123456 | 0.00 | 5000.00 | n/a | 提款选项不可用,用例结束 | | TC7 | 场景7:金额错误 | 合法卡 | 123456 | 2000.00 | 5000.00 | 20 | 提示错误,重新输入 | | TC8 | 场景8:卡内余额不足 | 合法卡 | 123456 | 2000.00 | 5000.00 | 600 | 提示错误,重新输入 | -| TC9 | 场景9:ATM现金不足 | 合法卡 | 123456 | 2000.00 | 5000.00 | 2500 | 提示错误,重新输入 | +| TC9 | 场景9:ATM现金不足 | 合法卡 | 123456 | 2000.00 | 5000.00 | 2500 | 提示错误,重新输入 | ### 3.7 错误推测法 @@ -1133,15 +1133,15 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 判定覆盖的基本思想,是指设计的测试用例使程序中每个判定至少分别取“真”分支和取“假”分支各一次,即判断真很值均被满足。 -| 测试用例ID | 测试用例 | a>0 and b>0 | a>1 or c>1 | 执行路径 | -| :--------: | --------------- | :---------: | :--------: | --------- | +| 测试用例ID | 测试用例 | a>0 and b>0 | a>1 or c>1 | 执行路径 | +| :--------: | --------------- | :---------: | :--------: | ------------- | | TC1 | a=1, b=1, c=3 | T | T | I→II→III→IV→V | -| TC2 | a=1, b=-2, c=-3 | F | F | I→III→V | +| TC2 | a=1, b=-2, c=-3 | F | F | I→III→V | -| 测试用例ID | 测试用例 | a>0 and b>0 | a>1 or c>1 | 执行路径 | -| :--------: | -------------- | :---------: | :--------: | -------- | -| TC1 | a=1, b=1, c=-3 | T | F | I→II→III→V | -| TC2 | a=1, b=-2, c=3 | F | T | I→III→IV→V | +| 测试用例ID | 测试用例 | a>0 and b>0 | a>1 or c>1 | 执行路径 | +| :--------: | -------------- | :---------: | :--------: | ---------- | +| TC1 | a=1, b=1, c=-3 | T | F | I→II→III→V | +| TC2 | a=1, b=-2, c=3 | F | T | I→III→IV→V | 作为语句覆盖的超集,判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强的测试能力。同样,判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。但是,往往大部分的判定语句是由多个逻辑条件组合而成(如判定语句中包含and、or、case),判定覆盖仅仅判断其整个最终结果,而忽略判定内部的每个条件的取值情况,因此必然会遗漏部分测试路径。 @@ -1150,10 +1150,10 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 条件覆盖设计例4.2的测试用例,针对a>0 and b>0判定条件表达式,a>0取值为“真”,记为T1;a>0取值为“假”,记为F1;b>0取值“真”,记为T2;b>0取值为“假”,记为F2;条件表达式a>1 or c>1,a>1取值为“真”,记为T3;a>1取值为“假”,记为F3;c>1取值为“真”,记为T4;c>1取值为“假”,记为F4,如下表所示: -| 测试用例ID | 测试用例 | 覆盖条件 | 具体取值条件 | 执行路径 | -| :--------: | --------------- | -------------- | :-----------: | -------- | -| TC1 | a=2, b=-1, c=-2 | T1, F2, T3, F4 | a>1, b≤0, c≤1 | I→III→IV→V | -| TC2 | a=-1, b=2, c=3 | F1, T2, F3, T4 | a≤0, b>0, c>1 | I→III→IV→V | +| 测试用例ID | 测试用例 | 覆盖条件 | 具体取值条件 | 执行路径 | +| :--------: | --------------- | -------------- | :-----------: | ---------- | +| TC1 | a=2, b=-1, c=-2 | T1, F2, T3, F4 | a>1, b≤0, c≤1 | I→III→IV→V | +| TC2 | a=-1, b=2, c=3 | F1, T2, F3, T4 | a≤0, b>0, c>1 | I→III→IV→V | 条件覆盖只能保证每个条件有1次为真、1次为假,而不考虑所有的判定结果。上表中的测试用例a=2,b=-1和测试用例a=—1,b=2满足了条件覆盖的测试用例,保证了a>0 and b>0两个条件的可能值(True 和False)至少满足1次。但是,由于测试用例的所有判定结果都是False,并没有满足判定覆盖。所以**条件覆盖不一定包含判定覆盖。** @@ -1162,10 +1162,10 @@ IEEE729-1983 (电气和电子工程师协会标准IEEE) 对缺陷有一个标准 1. 所有条件可能至少执行1次取值。 2. 所有判断的可能结果至少执行1次。 -| 测试用例ID | 测试用例 | 覆盖条件 | 具体取值条件 | 执行路径 | -| :--------: | ---------------- | -------------- | :-----------: | --------- | +| 测试用例ID | 测试用例 | 覆盖条件 | 具体取值条件 | 执行路径 | +| :--------: | ---------------- | -------------- | :-----------: | ------------- | | TC1 | a=2, b=1, c=5 | T1, T2, T3, T4 | a>1, b>0, c>1 | I→II→III→IV→V | -| TC2 | a=-1, b=-2, c=-3 | F1, F2, F3, F4 | a≤0, b<0, c≤1 | I→III→V | +| TC2 | a=-1, b=-2, c=-3 | F1, F2, F3, F4 | a≤0, b<0, c≤1 | I→III→V | 条件判定覆盖能同时满足判定、条件两种覆盖标准,是判定和条件覆盖设计方法的交集。表面上,条件判定覆盖测试了所有条件的取值,但事实并非如此,往往某些条件掩盖了另一些条件,并没有覆盖所有的True 和False取值的条件组合情况,会遗漏某些条件取值错误的情况,为彻底地检查所有条件的取值,需要分解判定语句中给出的复合条件表达式,形成由多个基本判定嵌套的流程图。这样就可以有效地检查所有的条件是否正确了。 @@ -1236,24 +1236,24 @@ MC/DC具有如下优点: 条件组合覆盖测试用例: -| 测试用例ID | 测试用例 | 覆盖条件 | 覆盖判定 | 覆盖组合 | 执行路径 | -| :--------: | ---------------- | -------------- | -------- | ----------------------------------- | --------- | +| 测试用例ID | 测试用例 | 覆盖条件 | 覆盖判定 | 覆盖组合 | 执行路径 | +| :--------: | ---------------- | -------------- | -------- | ----------------------------------- | ------------- | | TC1 | a=2, b=1, c=5 | T1, T2, T3, T4 | 编号1,5 | a>0 and b>0 取 Y
a>1 or c>1 取 Y | I→II→III→IV→V | | TC2 | a=2, b=-1, c=-2 | T1, F2, T3, F4 | 编号2,6 | a>0 and b>0 取 N
a>1 or c>1 取 Y | I→III→IV→V | -| TC3 | a=-1, b=2, c=3 | F1, T2, F3, T4 | 编号4,7 | a>0 and b>0 取 N
a>1 or c>1 取 Y | I→III→IV→V | -| TC4 | a=-1, b=-2, c=-3 | F1, F2, F3, F4 | 编号4,8 | a>0 and b>0 取 N
a>1 or c>1 取 N | I→III→V | +| TC3 | a=-1, b=2, c=3 | F1, T2, F3, T4 | 编号4,7 | a>0 and b>0 取 N
a>1 or c>1 取 Y | I→III→IV→V | +| TC4 | a=-1, b=-2, c=-3 | F1, F2, F3, F4 | 编号4,8 | a>0 and b>0 取 N
a>1 or c>1 取 N | I→III→V | 条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则,但线性地增加了测试用例的数量,却不能保证所有的路径被执行测试,仍有可能有部分路径被遗漏,测试还不够全面。 #### 4.4.7 路径覆盖 相对于其他逻辑覆盖法,路径覆盖的覆盖率最大。但随着程序代码复杂度的增加,测试工作量将指数增长。例如:包含10个if语句的代码,有2^10 = 1024个路径要测试,如果增加一个if,就有2^11 = 2048个路径要测试。 -| 测试用例ID | 测试用例 | 执行路径 | -| :--------: | ---------------- | --------- | +| 测试用例ID | 测试用例 | 执行路径 | +| :--------: | ---------------- | ------------- | | TC1 | a=2, b=1, c=5 | I→II→III→IV→V | -| TC2 | a=1, b=1, c=-3 | I→II→III→V | -| TC3 | a=-1, b=2, c=3 | I→III→IV→V | -| TC4 | a=-1, b=-2, c=-3 | I→III→V | +| TC2 | a=1, b=1, c=-3 | I→II→III→V | +| TC3 | a=-1, b=2, c=3 | I→III→IV→V | +| TC4 | a=-1, b=-2, c=-3 | I→III→V | ### 4.5 路径分析 路径覆盖会存在如下的困难: @@ -1733,18 +1733,18 @@ Web应用系统是否有超时的限制,也就是说,用户登录后在一 9. 需求的关注重点和实现的先后顺序是否清晰地被描述出来,实现需求的优先级 10. 对软件系统的约束条件是否完整的进行描述,实现需求的可测试性 -|序号|检查项|检查结果| -|:---:|----|----| -|1|是否覆盖了用户提出的所有需求项|是[ ] 否[ ] NA[ ]| -|2|用词是否清晰,语义是否存在有歧义的地方|是[ ] 否[ ] NA[ ]| -|3|是否清楚的描述了软件系统需要做什么及不做什么|是[ ] 否[ ] NA[ ]| -|4|是否描述了软件使用的目标环境,包括软硬件环境|是[ ] 否[ ] NA[ ]| -|5|是否对需求项进行了合理的编号|是[ ] 否[ ] NA[ ]| -|6|需求项是否前后一致、彼此不冲突|是[ ] 否[ ] NA[ ]| -|7|是否清楚系统的输入、输出格式,以及输入和输出之间的对应关系|是[ ] 否[ ] NA[ ]| -|8|是否清晰地描述了软件系统的性能需求|是[ ] 否[ ] NA[ ]| -|9|需求的优先级是否合理分配|是[ ] 否[ ] NA[ ]| -|10|是否描述了各种约束条件|是[ ] 否[ ] NA[ ]| +| 序号 | 检查项 | 检查结果 | +| :---: | ---------------------------------------------------------- | ----------------- | +| 1 | 是否覆盖了用户提出的所有需求项 | 是[ ] 否[ ] NA[ ] | +| 2 | 用词是否清晰,语义是否存在有歧义的地方 | 是[ ] 否[ ] NA[ ] | +| 3 | 是否清楚的描述了软件系统需要做什么及不做什么 | 是[ ] 否[ ] NA[ ] | +| 4 | 是否描述了软件使用的目标环境,包括软硬件环境 | 是[ ] 否[ ] NA[ ] | +| 5 | 是否对需求项进行了合理的编号 | 是[ ] 否[ ] NA[ ] | +| 6 | 需求项是否前后一致、彼此不冲突 | 是[ ] 否[ ] NA[ ] | +| 7 | 是否清楚系统的输入、输出格式,以及输入和输出之间的对应关系 | 是[ ] 否[ ] NA[ ] | +| 8 | 是否清晰地描述了软件系统的性能需求 | 是[ ] 否[ ] NA[ ] | +| 9 | 需求的优先级是否合理分配 | 是[ ] 否[ ] NA[ ] | +| 10 | 是否描述了各种约束条件 | 是[ ] 否[ ] NA[ ] | ### 6.3 测试计划 测试计划以测试需求为基础,分析产品的总体测试策略,输出《产品总体测试策略)等报告。 @@ -1879,15 +1879,15 @@ Web应用系统是否有超时的限制,也就是说,用户登录后在一 增量式测试方法的比较: -|名称|自顶向下增量式|自底向上增量式|三明治集成| -|----|:----:|:----:|:----:| -|集成|早|早|早| -|基本程序工作时间|早|晚|早| -|需要驱动程序|否|是|是| -|需要桩程序|是|否|是| -|工作并行性|低|中|中| -|特殊路径测试|难|容易|中等| -|计划与控制|难|容易|难| +| 名称 | 自顶向下增量式 | 自底向上增量式 | 三明治集成 | +| ---------------- | :------------: | :------------: | :--------: | +| 集成 | 早 | 早 | 早 | +| 基本程序工作时间 | 早 | 晚 | 早 | +| 需要驱动程序 | 否 | 是 | 是 | +| 需要桩程序 | 是 | 否 | 是 | +| 工作并行性 | 低 | 中 | 中 | +| 特殊路径测试 | 难 | 容易 | 中等 | +| 计划与控制 | 难 | 容易 | 难 | 1. 自顶向下测试是逐步求精,让测试者了解系统的框架,但需要提供驱动模块。由于驱动模块可能不能反映真实情祝,因此测试可能具有不充分性。 2. 自底向上测试采用驱动模块模拟了所有调用,但是需要等到只有最后一个模块加入才能知道整个系统的框架。 @@ -2036,15 +2036,15 @@ Web应用系统是否有超时的限制,也就是说,用户登录后在一 3. 注入矩阵分析 软件缺陷有“注入阶段”和“发现阶段”两个阶段,缺陷注入-发现矩阵如下表: -||需求|设计|编码|注入总计| -|----|----|----|----|----| -|需求阶段|8|||8| -|设计阶段|26|62||88| -|单元测试阶段|4|11|12|27| -|系统测试阶段|4|3|112|119| -|验收测试阶段|0|0|28|28| -|发现总计|42|76|152|270| -|本阶段缺陷移除率|19%|82%|8%|| +| | 需求 | 设计 | 编码 | 注入总计 | +| ---------------- | ---- | ---- | ---- | -------- | +| 需求阶段 | 8 | | | 8 | +| 设计阶段 | 26 | 62 | | 88 | +| 单元测试阶段 | 4 | 11 | 12 | 27 | +| 系统测试阶段 | 4 | 3 | 112 | 119 | +| 验收测试阶段 | 0 | 0 | 28 | 28 | +| 发现总计 | 42 | 76 | 152 | 270 | +| 本阶段缺陷移除率 | 19% | 82% | 8% | | 矩阵的每行表示该阶段或活动发现的各阶段产生的缺陷数;矩阵的每列表示该阶段或活动注入的缺陷泄漏到后续各环节的缺陷数。 @@ -2084,14 +2084,14 @@ Web应用系统是否有超时的限制,也就是说,用户登录后在一 手工测试与自动化测试对比: -|手工测试|自动化测试| -|----|----| -|效率低,耗费时间|效率高| -|耗费人力|覆盖率高| -|可靠性低|可靠性高| -|不一致性|可重复性利用| -|仅对一次性的测试有益|重复测试节省时间| -|对测试人员要求低|对测试人员要求高| +| 手工测试 | 自动化测试 | +| -------------------- | ---------------- | +| 效率低,耗费时间 | 效率高 | +| 耗费人力 | 覆盖率高 | +| 可靠性低 | 可靠性高 | +| 不一致性 | 可重复性利用 | +| 仅对一次性的测试有益 | 重复测试节省时间 | +| 对测试人员要求低 | 对测试人员要求高 | 当然,自动化测试也有如下的局限性,不能取代手工测试。 1. 测试用例的设计:测试人员的经验和对错误的猜测能力是工具不可替代的; @@ -2133,7 +2133,7 @@ TNM的定义级中需实现的3个成熟度目标:制定测试与调试目标 软件组织必须区分软件开发的测试过程与调试过程,识别各自的目标、任务和活动。正确区分这两个过程是提高软件组织测试能力的基础。与调试工作不同,测试工作是种有计划的活动,可以进行管理和控制。这种管理和控制活动需要制定相应的策略和政策,以确定和协调这两个过程。 制定测试与调试目标包含以下5个子成熟度目标: - (1) 分别形成测试组织和阔试组织,并有经费支持。 + (1) 分别形成测试组织和调试组织,并有经费支持。 (2) 规划并记录测试目标。 (3) 规划并记录调试目标。 (4) 将测试和调试目标形成文档,并分发至项目涉及的所有管理人员和开发人员。 @@ -2189,9 +2189,9 @@ TNM的定义级中需实现的3个成熟度目标:制定测试与调试目标 软件组织采取如下措施,制定测试产品的标准,制定与测试相关的偶发事件的处理预案,确定测试里程碑,确定评估测试效率的度量,建立测试日志等。 控制和监视测试过程有以下3个子目标: - (1)制定控制和监视测试过程的机制和政策。 - (2)定义、记录并分配一组与测试过程相关的基本测量。 - (3)开发、记录并文档化一组纠偏措施和偶发事件处理预案,以备实际测试严重偏离计划时使用。 + (1) 制定控制和监视测试过程的机制和政策。 + (2) 定义、记录并分配一组与测试过程相关的基本测量。 + (3) 开发、记录并文档化一组纠偏措施和偶发事件处理预案,以备实际测试严重偏离计划时使用。 在TMM的定义级,测试过程中引入计划能力,在TMM的集成级,测试过程引入控制和监视活动。两者均为测试过程提供了可见性,为测试过程持续进行提供保证。 @@ -2313,12 +2313,18 @@ jmeter是一款100%纯Java编写的免费开源的工具,它主要用来做性 Postman是谷歌的一款接口测试插件,它使用简单,支持用例管理,支持get、post、文件上传、响应验证、变量管理、环境参数管理等功能,可以批量运行,并支持用例导出、导入。 +| 工具 | 接口类型 | 测试类型 | +| ------- | --------------------------------------- | ---------------- | +| SoapUI | Soap、Rest | 功能、压力、安全 | +| Jmeter | Rest、Soap等
可扩展WebSocket、socket | 功能、压力 | +| Postman | Rest | 功能 | + #### 7.5.3 性能测试工具 -1. jmeter 基于java平台的性能开源测试工具,其实也很强大,而且比较好用 -2. ab +1. jmeter:基于java平台的性能开源测试工具,其实也很强大,而且比较好用 +2. ab(apache bench):apache自带的压力测试工具。 3. loadrunner(HP) -4. Load UI,一款开源的压力测试工具,支持图形化 -5. Siege 一款开源的压力和指标测试工具 +4. LoadUI:一款开源的压力测试工具,支持图形化 +5. Siege:一款开源的压力和指标测试工具 #### 7.5.4 白盒测试工具 目前的白盒测试工具主要支持C、Visual C++、Java、VisualJ++等程序开发语言。白盒测试工具一般针对被测源程序进行测试,测试所发行的故障可以定位到代码级。 @@ -2336,33 +2342,33 @@ Postman是谷歌的一款接口测试插件,它使用简单,支持用例管 2. 性能与内存分析 常见工具: -1. jtest java语言的单元测试框架 -2. JUnit 验证java的工具 -3. cppunit 跨平台的c++单元测试框架 -4. gtest 跨平台的c++单元测试框架 -5. PhpUnit Php -6. BoundsChecker C++,Delphi API和OLE错误检查、指针和泄露错误检查、内存错误检查 -7. TrueTime C++,Java,Visual Basic 代码运行效率检查、组件性能的分析 +1. jtest:java语言的单元测试框架 +2. JUnit:验证java的工具 +3. cppunit:跨平台的c++单元测试框架 +4. gtest:跨平台的c++单元测试框架 +5. PhpUnit:Php +6. BoundsChecker:C++,Delphi API和OLE错误检查、指针和泄露错误检查、内存错误检查 +7. TrueTime:C++,Java,Visual Basic 代码运行效率检查、组件性能的分析 #### 7.5.5 网络测试工具 -1. Ixia,也是对网络设备进行性能和压力测试工的平台 -2. firebug,抓包工具 -3. Fiddler,抓包工具 -4. wireshark 数据包抓取分析和回放测试工具 -5. tc 网络丢包和试验模拟工具,非常好用 -6. iperf 用来测试tcp和udp的网络质量 -7. tcpping工具工作在 TCP 层,通过发送伪造的 TCP SYN 包并侦听来自服务器或中间设备返回的 SYN/ACK 或 RST - -#### 7.5.6 web安全测试工具 -1. appscan,算是用的非常多的一款工具了,扫描后能够将绝大部分的漏洞找出来。 -2. Netsparker Community Edition 这个程序可以检测SQL注入和跨页脚本事件,还能提供解决方案 -3. Websecurify 这是个简单易用的开源工具,此程序还有一些人插件支持,可以自动检测网页漏洞。运行后可生成多种格式的检测报告 -4. Wapiti 这是一个用Python编写的开源的工具,可以检测网页应用程序,探测网页中存在的注入点。 -5. N-Stalker Free Version 此工具可一次检测100个以上的页面,包括跨页脚本的检测。 -6. skipfish 这是一个轻量级的安全测试工具,处理速度很快,每秒可处理2000个请求。 -7. Scrawlr HP的一款免费软件,可检测SQL注入漏洞。 -8. Watcher: 这个是Fiddler的插件,可在后台静默运行,可检测跨域提交等。。 -9. WebScarab 这个实际上是一个代理软件,有很多功能,可以检测XSS跨站脚本漏洞、SQL注入漏洞等。 +1. Ixia:也是对网络设备进行性能和压力测试工的平台 +2. firebug:抓包工具 +3. Fiddler:抓包工具 +4. wireshark:数据包抓取分析和回放测试工具 +5. tc:网络丢包和试验模拟工具,非常好用 +6. iperf:用来测试tcp和udp的网络质量 +7. tcpping:工具工作在 TCP 层,通过发送伪造的 TCP SYN 包并侦听来自服务器或中间设备返回的 SYN/ACK 或 RST + +#### 7.5.6 Web安全测试工具 +1. appscan:算是用的非常多的一款工具了,扫描后能够将绝大部分的漏洞找出来。 +2. Netsparker Community Edition:可以检测SQL注入和跨页脚本事件,还能提供解决方案 +3. Websecurify:这是个简单易用的开源工具,此程序还有一些人插件支持,可以自动检测网页漏洞。运行后可生成多种格式的检测报告 +4. Wapiti:这是一个用Python编写的开源的工具,可以检测网页应用程序,探测网页中存在的注入点。 +5. N-Stalker Free Version:可一次检测100个以上的页面,包括跨页脚本的检测。 +6. skipfish:这是一个轻量级的安全测试工具,处理速度很快,每秒可处理2000个请求。 +7. Scrawlr:HP的一款免费软件,可检测SQL注入漏洞。 +8. Watcher:这个是Fiddler的插件,可在后台静默运行,可检测跨域提交等。。 +9. WebScarab:这个实际上是一个代理软件,有很多功能,可以检测XSS跨站脚本漏洞、SQL注入漏洞等。 ### 7.6 如何选择测试工具 当前市场上的测试工具很多,每个测试工具在不同环境有各自的优点和缺点。如何选择最佳的测试工具,主要依赖于系统工程环境以及组织特定的其他需求和标准。因此,选择自动化测试工具应从以下几方面考虑。 @@ -2378,12 +2384,129 @@ Postman是谷歌的一款接口测试插件,它使用简单,支持用例管 5. 确定项目预算。 根据成本/效益分析,确定所投入的总成本与获益之间的关系。 -### 7.7 知识点总结 +### 7.7 Postman + +### 7.8 禅道 +禅道是一款开源项目管理软件。它集产品管理、项目管理、质量管理、文档管理、组织管理和事务管理于一体,是一款专业的研发项目管理软件,完整覆盖了研发项目管理的核心流程。 + +禅道将产品、项目、测试这三者的概念明确分开,产品人员、开发团队、测试人员,这三者分立,互相配合,又互相制约,通过需求、任务、bug来进行交相互动,最终通过项目拿到合格的产品。 + +[官网地址](zentao.net) + +#### 7.8.1 主要功能 +1. 产品管理:包括产品、需求、计划、发布、路线图等功能。 +2. 项目管理:包括项目、任务、团队、版本、燃尽图等功能。 +3. 质量管理:包括bug、测试用例、测试任务、测试结果等功能。 +4. 文档管理:包括产品文档库、项目文档库、自定义文档库等功能。 +5. 事务管理:包括todo管理,我的任务、我的Bug、我的需求、我的项目等个人事务管理功能。 +6. 组织管理:包括部门、用户、分组、权限等功能。 +7. 统计功能:丰富的统计表。 +8. 搜索功能:强大的搜索,帮助您找到相应的数据。 +9. 扩展机制,几乎可以对禅道的任何地方进行扩展。 +10. api机制,所见皆API,方便与其他系统集成。 +11. +#### 7.8.2 环境搭建 +[开源版手册](https://www.zentao.net/book/zentaopmshelp/40.html) +1. web服务:Apache或Nginx +2. 数据库:Mysql(推荐5.5/5.6) +3. PHP:PHP7.0/7.1/7.2 + +#### 7.8. 基本流程 +1. 产品经理创建产品 +2. 产品经理在产品下创建需求 +3. 项目经理创建项目 +4. 项目经理确定项目要做的需求和任务 +5. 项目经理分解任务,指派到研发人员。 +6. 测试人员测试,提交bug。 + +#### 7.8. 创建产品 +禅道的设计理念是围绕产品展开的,因此我们首先要做的就是创建一个产品。进入产品主页,在下拉菜单中,选择“添加产品”。或者先进入“所有产品”页面,点击右侧的“添加产品”。之后便可以添加产品的具体信息。 + +新增产品的时候,需要设置产品的名称、代码,几个负责人信息。 + +1. 产品名称和产品代号是必填项。其中产品代号可以理解为团队内部约定俗称的一个称呼,比如我们禅道的代号是zentao,需要是英文字母和数字的组合。 +2. 产品线:该产品属于那一个产品线。比如禅道这个产品线,下面包含禅道专业版,禅道开源版,禅道企业版。 +3. 产品负责人:负责整理需求,对需求进行解释负责,制定发布计划,验收需求。 +4. 测试负责人:可以为某一个产品指定测试负责人,这样当创建bug,而不知道由谁进行处理的时候,该产品的测试负责人会成为默认的负责人。 +5. 发布负责人:由这个角色负责创建发布。 +6. 产品类型:默认是正常的类型,还可以选择多分支(适用于客户定制场景)和多平台(适用于跨平台应用开发,比如iOS,安卓,pc端等)的产品。 +7. 访问控制:可以设置产品的访问权限,其中默认设置只要有产品视图的访问权限就可以访问。如果这个产品是私有产品,可以将其设置为私有项目,那么就只有项目团队成员才可以访问。或者还可以设置白名单,指定某些分组里面的用户可以访问该产品。 + + +#### 7.8. 添加需求 +产品经理可能都习惯了写需求设计文档,或者规格说明书,通过一个非常完整的word文档将某一个产品的需求都定义出来。但在禅道里面,提倡按照功能点的方式来写需求。简单来讲,就是将原来需求设计文档中的每一个功能点摘出来,录在禅道里面,作为一个个独立的功能点。如果按照scrum标准走的话,我们可以称之为 用户故事(user story)。所谓用户故事,就是来描述一件事情,作为什么用户,希望如何,这样做的目的或者价值何在,这样有用户角色,有行为,也有目的和价值所在,非常方便与团队成员进行沟通。 + +创建需求的步骤如下: +1. 使用产品经理角色登录系统。 +2. 进入产品视图。 +3. 点击二级导航的“ 需求”,在页面右侧,有提需求的按钮,并支持批量创建,点击新增需求的页面。 + + +* 需求的标题是必填项。 +* 所属计划和模块,可以暂时保留为空。 +* 需求评审,我们选上不需要评审,这样新创建的需求状态就是激活的,否则只有指定人员进行评审通过后,才能转为激活状态。 **只有激活状态的需求才能关联到项目中,进行开发。** +* 需求可以设置抄送给字段,这样需求的变化都可以通过email的形式抄送给相关人员。 +* 可以设置关键词,这样可以比较方便的通过关键词进行检索。 +#### 7.8. 创建项目 +导航的下拉菜单中直接点击“添加项目”或者在项目主页的项目总览区块中点击“添加项目”。在项目添加的页面中,设置项目名称、代号、起止时间、可用工作日、团队名称、和项目描述等字段。 + +#### 7.8. 设置团队 +项目创建成功,然后可以选择设置团队。或者从项目视图中的团队菜单,也可以进行项目的团队管理。 +1. 在维护项目团队的时候,需要选择都是哪些用户可以参与到这个项目中,同时需要设置这个用户在本项目中的角色。 +2. 可用工作日和可用工时每天需要仔细设置,设置完毕之后,系统会自动计算这个项目总得可用工时。 + +#### 7.8. 关联产品 +如果在创建项目的时候,已经关联过产品,可以忽略这个步骤。 +1. 以项目经理身份登录。 +2. 进入项目视图。 +3. 点击“关联产品”按钮。然后点选该项目相关的产品即可。 + +#### 7.8. 关联需求 +1. 在关联需求的时候,可以按照优先级进行排序。 +2. **关联的需求状态必须是激活的(评审通过,不能是草稿)** + +#### 7.8. 分解任务 +设置了团队之后,下一步操作就是创建任务。 +1. 在创建任务的时候,指派给是从项目团队成员中读取。 +2. 姓名列表中的首字母可以用来快速筛选用户。 +3. 任务的优先级、预计工时(单位小时)都需要进行设置。 +4. 如果需要设置任务必须在某一个时间点截止,可以设置截止日期。 +5. 可以上传附件。 + +#### 7.8. 管理任务 +对于项目团队的成员来讲,他要做的事情就是更新任务的进度和状态。 +1. 任务的列表: 在任务的列表页面,可以看到系统中所有的任务列表,可以通过各种标签方便的进行筛选。点击某一个任务的名称进入详情页面。 +2. 任务的详情页面: 在任务的详情页面可以看到任务的详细信息,包括历次的修改记录等信息。同时也给出了各种操作的按钮。 +3. 开始任务: 开始某一个任务的时候,可以设置已经消耗的时间和预计剩余的时间。单位都是工时。 +4. 更新任务工时: 点击操作栏里的“工时”按钮,通过更新工时消耗,来管理任务执行进度。 +5. 完成任务: 完成任务的时候,需要设置下已经消耗的时间。 +6. 关闭任务:任务完成之后,点击操作栏里的“关闭”按钮,将该任务关闭,这个任务就结束了。 + +#### 7.8.3 测试用例管理 +1. 用例编写 +2. 用例导出评审 +3. 用例修改 +4. 用例执行 +5. 对于用例执行结果是失败的,可以【转Bug】 + +#### 7.8.4 缺陷管理 +Bug处理流程: +1. Bug的基本处理流程:测试提交bug => 开发确认bug => 开发解决bug => 测试验证bug => 测试关闭bug。 +2. 如果bug验证没有通过,可以激活:测试提交bug => 开发确认bug => 开发解决bug => 测试验证bug => 测试激活bug => 开发解决bug => 测试验证 => 测试关闭。 +3. 还有一个流程就是bug关闭之后,又发生了。测试提交bug => 开发确认bug => 开发解决bug => 测试验证bug => 测试关闭bug => 测试激活bug => 开发解决bug => 测试验证 => 测试关闭。 + +操作方法: +1. 研发人员负责模块对照表,用于指派开发修改。 +2. 单独的Bug,直接新建,填写描述。 +3. 执行阶段Bug,勾选测试步骤,点击【转Bug】,可以自动填写步骤重现,适当补充截图说明。 + +### 7.9 知识点总结 1. 自动化测试对比手工测试的优缺点 2. 自动化测试发展历程 3. 测试成熟度模型 4. 自动化测试体系 5. 测试工具和测试工具的选择 +6. 工具应用举例(Postman、禅道) ## 第8章 软件测试管理 ### 8.1 软件测试管理概述 diff --git a/images/auto-tx.png b/images/auto-tx.png index 50fad3d4827290b59b2e5bc6d73f60c51f19e103..d195ceae608f5627ebc8d3041836b5fc0400e956 100644 GIT binary patch literal 44974 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