• 【软件测试及质量保证】小结


    文章目录

    part Ⅰ

    测试基础

    三种质量模型-“产品质量模型”分析

    产品质量模型如图所示:
    在这里插入图片描述

    一级指标“功能性”

    “功能性”指标是指:当软件在指定条件下使用时,软件产品提供满足明确和隐含要求的功能的能力。

    1. 适合性。软件产品为指定的任务和用户目标提供一组合适的功能的能力
    2. 准确性。软件产品提供具有所需精度的正确或相符的结果或效果的能力
    3. 互操作性。软件产品与一个或更多的规定系统进行交互的能力
    4. 安全保密性。软件产品保护信息和数据的能力,以使未授权的人员或系统不能阅读或修改这些信息和数据,而不拒绝授权人员或系统对它们的访问。
    一级指标“可靠性”

    “可靠性”指标是指:在指定条件下使用时,软件产品维持规定的性能级别的能力。

    1. 成熟性。软件产品为避免由软件中故障而导致失效的能力。
    2. 容错性。在软件出现故障或者违反其指定接口的情况下,软件产品维持规定的性能级别的能力。
    3. 易恢复性。在失效发生的情况下,软件产品重建规定的性能级别并恢复受直接影响的数据的能力。
    一级指标“易用性”

    在指定条件下使用时,软件产品被理解、学习、使用和吸引用户的能力。

    1. 易理解性。软件产品使用户能理解软件是否合适以及如何能将软件用于特定的任务和使用条件的能力。
    2. 易学性。软件产品使用户能学会其应用的能力。
    3. 易操作性。软件产品使用户能操作和控制它的能力。
    4. 吸引性。软件产品吸引用户的能力。
    一级指标“效率”

    在规定条件下,相对于所用资源的数量,软件产品可提供适当性能的能力。

    1. 时间特性。在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐率的能力。
    2. 资源利用性。在规定条件下,软件产品执行其功能时,使用合适数量和类别的资源的能力。
    一级指标“可维护性”

    软件产品可被修改的能力。修改可能包括修正、改进或软件对环境、需求和功能规格说明变化的适应。

    1. 易分析性。软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。
    2. 易改变性。软件产品使指定的修改可以被实现的能力。
    3. 稳定性。软件产品避免由于软件修改而造成意外结果的能力。
    4. 易测试性。软件产品使已修改软件能被确认的能力。
    一级指标“可移植性”

    软件产品从一种环境迁移到另外一种环境的能力。

    1. 适应性。软件产品毋需采用额外的活动或手段就可适应不同指定环境的能力。
    2. 易安装性。软件产品在指定环境中被安装的能力。
    3. 共存性。软件产品在公共环境中同与其分享公共资源的其他独立软件共存的能力。
    4. 易替换性。软件产品在同样环境下,替代另一个相同用途的指定软件产品的能力。
    产品质量模型各指标间相关性

    在这里插入图片描述

    三种质量模型-“使用质量模型”分析

    使用质量模型如图所示:
    在这里插入图片描述

    1. 有效性。软件产品在指定的使用周境下,使用户能正确和完全地达到规定目标的能力。
    2. 生产率。软件产品在指定的使用周境下,使用户为达到有效性而消耗适当数量的资源的能力。
    3. 安全性。软件产品在指定使用周境下,达到对人类、业务、软件、财产或环境造成损害的可接受的风险级别的能力。
    4. 满意度。软件产品在使用环境中,让用户感到满意的程度。

    五种软件测试的分类-按软件的“不同阶段”分类

    五种分类方式
    1. 按软件的“不同状态”分类
    2. 按软件的“不同阶段”分类
    3. 按软件的“不同特性”分类
    4. 按软件的“不同开发方式”分类(业界)
    5. 按测试的“不同方法”分类(学界)
    按不同阶段分类

    在这里插入图片描述

    1. 单元测试:对程序员编写完成的某个程序单元测试;
    2. 集成测试(组装测试):将所有程序单元(模块)进行有序的、递增的组装并测试。发现模块间接口以及全局数据结构等问题。
    3. 确认测试:通过检验和提供客观证据,证明软件是否满足《软件需求说明书》中规定的需求。
    4. 系统测试:为确认是否达到原始目标,对集成的硬件和软件系统进行的测试。检查完整的程序系统能否和系统(硬件、外设、网络和系统软件、支持平台等)正确配置、连接、并满足用户需求。
    5. 验收测试:按照项目任务书或合同、供需双方约定的验收依据文件进行的对整个系统的测试与评审,决定是否接收或拒收系统。
    回归测试

    回归测试:重复以前的全部或部分的相同测试。

    • 目的:软件的改变可能是源于发现了错误并做了修改,也有可能是因为在集成或维护阶段加入了新的模块。回归测试就是为确定修改和检查修改是否损害了原有的正常功能。
    • 重要性:回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在极端编程方法中,更是要求每天都进行若干次回归测试。
    附:简述“验证”与“确认”的区别?

    在这里插入图片描述

    • 验证:过程正确,符合设计规范
    • 确认:结果正确,符合客户要求

    软件测试的一组重要观点-软件错误的四种现象

    1. 软件未达到产品说明书标明的功能
    2. 软件不能正常运行
    3. 软件未达到产品说明书虽未指出但应达到的目标
    4. 软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好

    软件测试的一组重要观点-软件测试的成本

    1. 测试在软件开发中占有重要地位
    2. 测试成本占有开发成本的近一半
      如:
      在这里插入图片描述

    附:软件测试的七条基本原则

    1. 初心原则。所有软件测试,都应追溯到用户需求
    2. 从速原则。尽早地和不断地进行软件测试
    3. 折衷原则。完全测试是不可能的,测试需要终止条件(原因:输入量太大;输出结果太多;路径组合太多)
    4. 不完备原则。测试无法显示软件潜在的缺陷
    5. 正比原则。测试后程序中残存的错误数目与该程序中已经发现的错误数目成正比
    6. 回避原则。程序员应避免检查自己的程序
    7. 设计原则。遵循PDCA规律,避免测试的随意性

    软件测试的一组重要观点-软件测试的一组“重要论断”

    1. “零缺陷软件”是不可能的,只是一个可望不可及的目标;
    2. 完全测试程序是不可能的
    3. 测试只能证明错误存在,不能证明错误不存在
    4. 测试应当循序渐进,不应企图一次性测完
    5. 80-20原则:80%的错误聚集在20%的模块中,经常出错的模块改错后还会经常出错
    6. 找到的软件缺陷越多,说明软件缺陷越多
    7. 并非所有软件缺陷都能修复
    8. 需求说明书总是在不断变化
    9. 测试资源是很有限的
    10. 软件测试人员通常在项目组中不受欢迎

    黑盒测试

    黑盒测试(功能测试),又被称为数据驱动测试、基于规格说明的测试或用户测试

    边界值分析-基础定义

    三个点的定义
    • 内点:在域范围内的任意一个点;
    • 上点:边界上的点(无论开区间、闭区间)。
    • 离点:离上点最近的一个点,且满足:
      1)如边界封闭,则域范围外离上点最近的点;
      2)如边界开放,则域范围内离上点最近的点。
    “边界值”定义

    边界上的一组“上点”和“离点”分别构成了这个边界域范围的“内/外”边界值。域的边界被“夹”在上点与离点之间。

    常见的几类边界
    1. 报表的第一行和最后一行
    2. 数组元素的第一个和最后一个;
    3. 循环的第0次、第1次、倒数第2次、最后1次等
    4. 2字节的正整数边界:65535;65536
    常见边界的边界值

    在这里插入图片描述

    四种黑盒测试技术

    • 等价类划分法
      关键1:如何划分等价类
      关键2:设计测试用例,覆盖等价类

    • 边界值分析法
      关键1:用“单故障假设”逐一分解要素
      关键2:对每个要素,寻找到它独特的“边界”
      关键3:用“上点”、“离点”覆盖“边界”

    • 错误推测法
      关键1:根据“经验”,从“时间、人、技术”等 ,对错误进行“聚类”
      关键2:根据所聚类型,增加一组测试用例

    • 判定表驱动法
      关键1:识别所有条件、动作,画“判定表”
      关键2:根据需求,填“判定表”,并规约
      关键3:根据规约后的“判定表”设计测试用例

    白盒测试

    白盒测试(结构测试),又被称为逻辑驱动测试、基于程序本身的测试或程序员测试

    逻辑覆盖的6种方法-一组实例

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    part Ⅱ

    测试基础

    过程质量模型(生存周期)

    过程质量模型如图所示:
    在这里插入图片描述

    生存周期基本过程
    • 合同视图
      获取-供应

    • 工程试图
      开发

    • 运作视图
      运作

    • 维护

    五种软件测试的分类-按软件的“不同阶段”分类

    五种分类方式
    1. 按软件的“不同状态”分类
    2. 按软件的“不同阶段”分类
    3. 按软件的“不同特性”分类
    4. 按软件的“不同开发方式”分类(业界)
    5. 按测试的“不同方法”分类(学界)
    按不同阶段分类

    在这里插入图片描述

    1. 单元测试:对程序员编写完成的某个程序单元测试;
    2. 集成测试(组装测试):将所有程序单元(模块)进行有序的、递增的组装并测试。发现模块间接口以及全局数据结构等问题。
    3. 确认测试:通过检验和提供客观证据,证明软件是否满足《软件需求说明书》中规定的需求。
    4. 系统测试:为确认是否达到原始目标,对集成的硬件和软件系统进行的测试。检查完整的程序系统能否和系统(硬件、外设、网络和系统软件、支持平台等)正确配置、连接、并满足用户需求。
    5. 验收测试:按照项目任务书或合同、供需双方约定的验收依据文件进行的对整个系统的测试与评审,决定是否接收或拒收系统。
    回归测试

    回归测试:重复以前的全部或部分的相同测试。

    • 目的:软件的改变可能是源于发现了错误并做了修改,也有可能是因为在集成或维护阶段加入了新的模块。回归测试就是为确定修改和检查修改是否损害了原有的正常功能。
    • 重要性:回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在极端编程方法中,更是要求每天都进行若干次回归测试。

    软件测试的一组重要观点-软件错误的四种形式

    • 软件错误
      当程序没有实现其最终用户合理预期的功能要求时,就表现为软件错误
    • 软件错误的四种形式
      错误(error):在软件生存周期内的不希望或不可接受的人为错误,其结果是导致软件缺陷的产生;
      缺陷(defect):存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差;
      故障(fault):是一种动态行为,指在软件运行过程中,出现的不希望或不可接受的内部状态;
      失效(failure):指在软件运行时产生的,一种不希望或不可接受的外部行为结果。

    软件测试的一组重要观点-软件测试的一组“重要论断”

    1. “零缺陷软件”是不可能的,只是一个可望不可及的目标;
    2. 完全测试程序是不可能的
    3. 测试只能证明错误存在,不能证明错误不存在
    4. 测试应当循序渐进,不应企图一次性测完
    5. 80-20原则:80%的错误聚集在20%的模块中,经常出错的模块改错后还会经常出错
    6. 找到的软件缺陷越多,说明软件缺陷越多
    7. 并非所有软件缺陷都能修复
    8. 需求说明书总是在不断变化
    9. 测试资源是很有限的
    10. 软件测试人员通常在项目组中不受欢迎

    缺陷管理-“缺陷管理信息系统”的设计

    定义:缺陷管理是指对于测试人员发现的软件缺陷,如何进行提交、确认、修复、验证等管理过程的跟踪管理。

    MIS设计的三个关键问题?
    问题一:“缺陷”对象数据结构设计

    在这里插入图片描述
    “核心属性”是缺陷管理的信息化基础,包括:
    缺陷引发后果的“严重性”、处理缺陷的“优先级”。
    严重性和优先级的设计:
    在这里插入图片描述

    • 四种严重性
      1.严重。系统崩溃、数据丢失、数据破坏(系统级、数据级)
      例如:蓝屏、死机、数据保存异常、完整性约束被破坏
      2.较严重。操作性错误、错误结果、遗漏功能(功能级)
      例如:某菜单项功能无法使用、报表项统计错误、“下一步”无法进入指定环节
      3.一般:错别字、小问题(表现级)
      例如:对必填框未作校验
      4.建议:不影响使用的“瑕疵”或有“更好的”实现(优化级)
      例如:某图片显示变形、界面不“横平竖直”、关键内容显示不完整

    • 五种优先级
      1.最高。立即修复,停止进一步测试
      2.次高。在产品发布之前必须修复
      3.中等:如果时间允许应该修改
      4.最低:可能会修改,但也能发布

    问题二:“缺陷”对象状态设计

    缺陷的“状态”及“状态之间的转换关系”设计是“缺陷管理信息系统”过程管理基础。
    通常,参考生命周期理论,缺陷对象可设定六种“状态”:
    “生死”状态:New 、 Closed(由测试决定)
    “确认”状态:Open 、 Fixed(由开发决定)
    “拒绝”状态:Declined 、Deferred

    • 六种常见的“错误状态”及“转换关系”
      1.New(新信息):测试中新报告的软件bug
      2.Closed(关闭):错误已被修复,并已经过验证。
      3.Open(打开):bug已被确认,并分配给相关的开发人员处理
      4.Fixed(修正):bug已由开发人员修正完成,等待测试人员验证
      5.Declined(拒绝):测试人员或开发人员认为不是错误,拒绝修改
      6.Deferred(延期):不在当前版本修复,在之后某个版本中修复

    错误状态转换图:
    在这里插入图片描述

    问题三:针对“缺陷”对象的功能设计

    功能一:“缺陷”对象的基础功能,增删改查;
    功能二:系统角色定义和OA流转功能;
    功能三:常用统计、分析功能

    黑盒测试

    黑盒测试(功能测试),又被称为数据驱动测试、基于规格说明的测试或用户测试

    等价类划分-等价类划分的基本方法

    *基本思想

    等价类划分”的测试方法是把所有可能的输入数据,即程序的输入域划分为若干子集,然后从每一个子集中,选取少数具有代表性的数据作为测试用例。
    它的一个基本假设是在划分的子集中,每个输入条件都是等效的(即等价类),如果其中一个输入不能发现问题,那么集合中其他输入条件进行测试也不能发现错误。
    由此可见,该方法的基本思想是用一组有限的数据代表近似无限的数据。

    *基本步骤

    根据程序的I/O特性,将程序的定义域划分为有限个等价区段 ,即“等价类”;
    根据每个等价类设计出“测试用例”。

    *基本类型

    有效等价类 — 对于程序的规格说明是合理的、有意义的输入数据构成的集合。
    无效等价类 — 对于程序的规格说明,是不合理的,是没有意义的输入数据构成的集合。

    基本方法

    在这里插入图片描述

    附:设计测试用例的基本原则
    1. 为每个等价类编号;
    2. 一个测试用例,尽可能覆盖多个有效等价类
    3. 一个测试用例,只能覆盖一个无效等价类。

    等价类划分-练习题

    示例一:在某大学学籍管理信息系统中,假设学生年龄的输入范围为16~40,则根据黑盒测试中的等价类划分技术,下面划分正确的是____
    A:可划分为2个有效等价类,2个无效等价类;
    B:可划分为1个有效等价类,2个无效等价类;
    C:可划分为2个有效等价类,1个无效等价类;
    D:可划分为1个有效等价类,1个无效等价类;
    正确答案:B

    示例二:某录入界面有4个输入项,要求分别如下:1)姓名,2-4个汉字;2)性别,男/女;3)年龄,16~40;4)学历,博士/硕士/学士/其他。请用等价类划分方法,对这个界面设计测试用例,预期结果略。
    依据等价类划分思想,本题计划采用5个测试用例,进行等价类覆盖:
    1.大,大,10,大大
    2.大大,男,18,博士
    3.大大大大大,女,42,硕士
    4.大,大,10,学士
    5.大,大,10,其他

    示例三:在黑盒测试方法中,等价类划分方法设计测试用例的步骤是:根据输入条件把数目极多的输入数据划分成若干个有效等价类和若干个无效等价类;设计一个测试用例,使其覆盖_(1)尚未被覆盖的有效等价类,重复这一步,直至所有有效等价类均被覆盖。设计一个测试用例,使其覆盖(2)_尚未被覆盖的无效等价类,重复这一步,直至所有无效等价类均被覆盖.
    A.1个; B.7个左右; C.一半;
    D.尽可能少的; E.尽可能多的; F.全部.
    正确答案:E,A

    示例四:Nextdate()的等价类划分测试用例设计。
    提示:包括“普通、跨月、跨年”三种情况。
    在这里插入图片描述
    1.03/08/2016 (1)
    2.03/32/2016 (2)
    3.03/31/2016 (3)
    4.04/30/2016 (4)
    5.02/29/2016 (5)
    6.02/28/2015 (6)
    7.13/28/2015 (7)
    8.12/31/1999 (8-10)
    9.12/31/0 (11)

    示例五:三角形问题:
    一个程序读入三个整数,把这三个数值看作一个三角形的三条边的长度值。这个程序要打印出信息,说明“非三角形”、“不等边三角形”、“等腰三角形”、“等边三角形”。
    提示:区分“是否为三角形的三条边”、“是否等腰”、“是否等边”三种情况
    在这里插入图片描述
    在这里插入图片描述
    依据“覆盖原则”,对测试用例化简:删1(留11)删8-10(留13-15)

    示例六(应用题):佣金问题。某商店销售玩具枪支配件,包括枪机(45元/只) ,枪托(30元/只),枪管(25元/只),为了刺激销售业绩,实施佣金计算公式如下:
    1.销售额≤1000元 佣金=销售额*10%
    2.1000<销售额≤1800 佣金=100+(销售额-1000)*15%
    3.销售额>1800 佣金=220+(销售额-1800)*20%
    现已开发“销售业绩计算程序”,输入为某员工所售的枪机、枪托、枪管销售数量,输出为该员工的佣金数。请依据等价类方法,设计测试用例,检验该程序的有效性
    分析:本程序输出为“分段函数”,具有三段,之和覆盖数轴。因此,具有三个“有效等价”类,无“无效等价类”
    1.用例1,输入:5,5,5 预期输出:50
    2.用例2,输入:15,15,15 预期输出:175
    3.用例3,输入:25,25,25 预期输出:360

    思考:健壮性测试(Robustness Testing)又称为容错性测试,用于测试系统在错误输入或出现故障时,是否能够自动恢复或者忽略故障继续运行。如考虑健壮性评价,则可以补充哪些“无效等价类”的测试用例?

    小结
    • 思考:
      等价类划分方法,是一种思维模式。对问题空间进行分类,并用测试用例进行“覆盖”验证的思想。

    • 建立这种思维模式,有利于迅速窥视一个系统的全貌和概要,从按摩器、相机等功能浏览,到汽车、机床的试驾。有利于迅速找到一个系统的漏洞和弱点的漏洞(例如CCH)。

    • 等价类划分方法,具有“快速遍历”的性质,是涉猎学习一个系统或一台设备的重要方法。

    边界值分析-练习题

    常见边界的边界值
    在这里插入图片描述

    例题一:用边界值分析法,假定X为整数,10<=X<=100,那么X在测试中应该取__边界值。
    A:X=10,X=100
    B:X=9,X=10,X=100,X=101
    C:X=10,X=11,X=99,X=100
    D:X=9,X=10,X=50,X=100
    正确答案:B

    例题二:每位密码都要求为字符(包括大小写字母)或“0”-“9”,请问其ASCII编码的边界是什么?
    在计算机软件中,字符是很重要的表示元素,ASCII是最常见的编码,编写一段代码,观察1-255的ASCII符号
    在这里插入图片描述
    正确答案:
    CHR(64);CHR(65);CHR(90);CHR(91)
    CHR(96);CHR(97);CHR(122);CHR(123)
    CHR(47);CHR(48);CHR(57);CHR(58)

    例题三:下面为C语言程序,边界值问题可以定位在___。
    Int data(3);
    Int I;
    For (i=1;i<=3;i++)
    data(i)=100
    A.Data(0)
    B.Data(1)
    C.Data(2)
    D.Data(3)
    正确答案:A

    例题四:有一个二元函数f(x,y),其中x取值【1,12】,y取值【1,31】
    分析:依据“单故障假设”,即有两个或两个以上故障同时出现而导致软件失效的情况很少,也就是说,软件失效基本上是由单故障引起的。因此,在边界值分析法中,获取两元以上函数的测试用例方法,通常逐一针对每个变量设计其边界,同时对其他变量固定为“中间值”,类似于求“偏导”。
    正确答案:
    测试用例共分两组,8个
    第一组:<0,15>,<1,15>,<12,15>,<13,15>
    第二组:<6,0>,<6,1>,<6,31>,<6,32>

    例题五:有一个三元函数f(x,y,z),其中,x取值【1900,2100】,y取值【1,12】,z取值【1,31】,请写出该函数采用边界值分析法设计的测试用例。
    正确答案:
    测试用例共分三组,12个
    第一组:<1899,6,15>,<1900,6,15>,<2100,6,15>,<2101,6,15>
    第二组:<2000,0,15>,<2000,1,15>,<2000,12,15>,<2000,13,15>
    第三组:<2000,6,0>,<2000,6,1>,<2000,6,31>,<2000,6,32>

    白盒测试

    白盒测试(结构测试),又被称为逻辑驱动测试、基于程序本身的测试或程序员测试

    逻辑覆盖的6种方法

    白盒测试通常采用覆盖法进行测试,即通过遍历程序结构设计测试用例。按照覆盖的程度,可以分为多种覆盖准则:

    1. 语句覆盖,SC(Statement Coverage)
      在这里插入图片描述

    2. 判定覆盖,DC(Decision Coverage)
      在这里插入图片描述

    3. 条件覆盖,CC(Condition Coverage)
      在这里插入图片描述

    4. 条件/判定覆盖,CDC(Condition/Decision Coverage)
      在这里插入图片描述

    5. 多条件覆盖,MCC(Multiple Condition Coverage)
      在这里插入图片描述

    6. 路径覆盖,PC(Path Coverage)
      在这里插入图片描述

    性能测试

    定义,场景,步骤,3道例题

    • 定义:
      通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。用于“能力规划、能力验证、缺陷发现、性能调优”,负载测试和压力测试都属于性能测试,两者可以结合进行。
      1.负载测试,确定在各种负载下系统的性能,目标是测试当负载逐渐增加时,系统性能指标的变化情况,结果为一条“曲线”
      2.压力测试,通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试,结果为是一个门槛值(极限值)。
    • 五种应用场景
      1.涉及“复杂计算”,特别是一些人工智能分析
      2.涉及“大量数据IO”(读写和通讯)
      3.涉及“大量数据检索”
      4.具有“大量用户”(多个并发用户)
      5.具有“有限资源”。软件运行时,可用资源(特别是CPU和内存)很紧张,例如一些嵌入式系统软件等;
    • 测试步骤
      1.目标。确定明确的测试目标
      2.性能边界。提取和确认系统瓶颈的因素和边界
      3.用例设计
      4.脚本开发、执行。脚本开发、数据准备、测试执行
      5.结果分析

    例题一:什么是性能测试,其应用领域分别是什么?
    性能测试,是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
    应用领域,包括四个:能力规划、能力验证、缺陷发现、性能调优。

    例题二:1台客户端有300客户与300客户端有300客户对服务器施压,有什么区别?
    从4个角度进行分析:
    1.客户端角度。300个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。
    2.客户线程角度。线程之间可能发生干扰,而产生一些异常。
    3.带宽角度。300个用户在一个客户端上,需要更大的带宽。
    4.IP地址角度。IP地址问题,可能需要使用IP Spoof来绕过服务器对于单一IP地址最大连接数的限制。

    例题三:典型的应用数据库问题有哪些,解决办法分别是什么?
    典型应用数据库问题的三个类型:过量的数据库调用、数据库连接池问题、SQL语句及其索引或锁定属性问题。
    1.过量的数据库调用。增量减次,即增大每次从数据库中获取的数据量,避免应用程序反复回调数据库;
    2.数据库连接池问题。及时关闭连接。仔细分析程序代码,是否没有close连接?或者遗漏了finally块?或者尽管有close但并没有成功或者调整连接池大小;
    3.SQL语句及索引或锁定问题。优化代码。优化SQL语句及其索引或锁定属性。

    其他测试

    文档测试

    文档测试是检验样品用户文档的完整性、正确性、一致性、易理解性、易浏览性。
    测试文档通常情况下指软件测试文档,测试文档是提供测试信息的一组文档,而并非单纯地指文档测试。

    注意事项:

    1. 仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。
    2. 检查文档的编写是否满足文档编写的目的。
    3. 内容是否齐全、正确。
    4. 内容是否完善。
    5. 标记是否正确。

    软件质量保证

    1.三名管理大师及他们的主要质量观点

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    2.软件质量保证基本概念

    软件质量保证(SQA-Software Quality Assurance)是建立一套有计划,有系统的方法来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。
    国内软件质量保证的“三种体系”:
    方法一:国标《软件生命周期》体系
    方法二:ISO9000体系
    方法三:CMM体系
    在这里插入图片描述

    ISO9000体系

    ISO 9000 部分需要掌握的重点

    1. “标准”的基础结构
      在这里插入图片描述

    2. “四级文件”的定义和层次结构
      在这里插入图片描述
      在这里插入图片描述

    3. “ISO9000”实施的流程

    • 以“标准”的结构为指导 – “基类”
    • 结合“本企业”具体情况,制定“本企业”的ISO9000操作文件,共分为“四级文件” – “实例化”,经确认后,授予“ISO9000”证书
    • 每天,本企业依据“四级文件”进行各种生产活动
      监督机制
      1.内省机制:内审。每年定期,由企业内部质量主管部门发起,检查本企业对四级文件的落实情况;
      2.外部监督机制:外审(维持证书)。每年一次,由外部机构,检查本企业对四级文件的落实情况。
    1. 简单阐述“ISO9000”提升质量的原因
      采用ISO9000族标准,可以使质量管理规范化,质量活动程序化,实施ISO9000,要求建立文件化的质量体系。质量体系要求各项活动的范围和目的、做什么、谁来做、何时做、何地做、如何做、采用什么设备和材料,如何对活动进行控制和记录等都做出详细的规定,做到工作有章可循,有章必循,违章必纠。

    part Ⅲ

    测试基础

    缺陷管理-“缺陷管理信息系统”的设计

    定义:缺陷管理是指对于测试人员发现的软件缺陷,如何进行提交、确认、修复、验证等管理过程的跟踪管理。

    MIS设计的三个关键问题?
    问题一:“缺陷”对象数据结构设计

    在这里插入图片描述
    “核心属性”是缺陷管理的信息化基础,包括:
    缺陷引发后果的“严重性”、处理缺陷的“优先级”。
    严重性和优先级的设计:
    在这里插入图片描述

    • 四种严重性
      1.严重。系统崩溃、数据丢失、数据破坏(系统级、数据级)
      例如:蓝屏、死机、数据保存异常、完整性约束被破坏
      2.较严重。操作性错误、错误结果、遗漏功能(功能级)
      例如:某菜单项功能无法使用、报表项统计错误、“下一步”无法进入指定环节
      3.一般:错别字、小问题(表现级)
      例如:对必填框未作校验
      4.建议:不影响使用的“瑕疵”或有“更好的”实现(优化级)
      例如:某图片显示变形、界面不“横平竖直”、关键内容显示不完整

    • 五种优先级
      1.最高。立即修复,停止进一步测试
      2.次高。在产品发布之前必须修复
      3.中等:如果时间允许应该修改
      4.最低:可能会修改,但也能发布

    问题二:“缺陷”对象状态设计

    缺陷的“状态”及“状态之间的转换关系”设计是“缺陷管理信息系统”过程管理基础。
    通常,参考生命周期理论,缺陷对象可设定六种“状态”:
    “生死”状态:New 、 Closed(由测试决定)
    “确认”状态:Open 、 Fixed(由开发决定)
    “拒绝”状态:Declined 、Deferred

    • 六种常见的“错误状态”及“转换关系”
      1.New(新信息):测试中新报告的软件bug
      2.Closed(关闭):错误已被修复,并已经过验证。
      3.Open(打开):bug已被确认,并分配给相关的开发人员处理
      4.Fixed(修正):bug已由开发人员修正完成,等待测试人员验证
      5.Declined(拒绝):测试人员或开发人员认为不是错误,拒绝修改
      6.Deferred(延期):不在当前版本修复,在之后某个版本中修复

    错误状态转换图:
    在这里插入图片描述

    问题三:针对“缺陷”对象的功能设计

    功能一:“缺陷”对象的基础功能,增删改查;
    功能二:系统角色定义和OA流转功能;
    功能三:常用统计、分析功能

    • MIS设计的三个关键问题?
      问题一:“缺陷”对象数据结构设计
      问题二:“缺陷”对象状态设计
      问题三:针对“缺陷”对象的功能设计

    黑盒测试

    黑盒测试(功能测试),又被称为数据驱动测试、基于规格说明的测试或用户测试

    等价类划分-练习题

    示例一:在某大学学籍管理信息系统中,假设学生年龄的输入范围为16~40,则根据黑盒测试中的等价类划分技术,下面划分正确的是____
    A:可划分为2个有效等价类,2个无效等价类;
    B:可划分为1个有效等价类,2个无效等价类;
    C:可划分为2个有效等价类,1个无效等价类;
    D:可划分为1个有效等价类,1个无效等价类;
    正确答案:B

    示例二:某录入界面有4个输入项,要求分别如下:1)姓名,2-4个汉字;2)性别,男/女;3)年龄,16~40;4)学历,博士/硕士/学士/其他。请用等价类划分方法,对这个界面设计测试用例,预期结果略。
    依据等价类划分思想,本题计划采用5个测试用例,进行等价类覆盖:
    1.大,大,10,大大
    2.大大,男,18,博士
    3.大大大大大,女,42,硕士
    4.大,大,10,学士
    5.大,大,10,其他

    示例三:在黑盒测试方法中,等价类划分方法设计测试用例的步骤是:根据输入条件把数目极多的输入数据划分成若干个有效等价类和若干个无效等价类;设计一个测试用例,使其覆盖_(1)尚未被覆盖的有效等价类,重复这一步,直至所有有效等价类均被覆盖。设计一个测试用例,使其覆盖(2)_尚未被覆盖的无效等价类,重复这一步,直至所有无效等价类均被覆盖.
    A.1个; B.7个左右; C.一半;
    D.尽可能少的; E.尽可能多的; F.全部.
    正确答案:E,A

    示例四:Nextdate()的等价类划分测试用例设计。
    提示:包括“普通、跨月、跨年”三种情况。
    在这里插入图片描述
    1.03/08/2016 (1)
    2.03/32/2016 (2)
    3.03/31/2016 (3)
    4.04/30/2016 (4)
    5.02/29/2016 (5)
    6.02/28/2015 (6)
    7.13/28/2015 (7)
    8.12/31/1999 (8-10)
    9.12/31/0 (11)

    示例五:三角形问题:
    一个程序读入三个整数,把这三个数值看作一个三角形的三条边的长度值。这个程序要打印出信息,说明“非三角形”、“不等边三角形”、“等腰三角形”、“等边三角形”。
    提示:区分“是否为三角形的三条边”、“是否等腰”、“是否等边”三种情况
    在这里插入图片描述
    在这里插入图片描述
    依据“覆盖原则”,对测试用例化简:删1(留11)删8-10(留13-15)

    示例六(应用题):佣金问题。某商店销售玩具枪支配件,包括枪机(45元/只) ,枪托(30元/只),枪管(25元/只),为了刺激销售业绩,实施佣金计算公式如下:
    1.销售额≤1000元 佣金=销售额*10%
    2.1000<销售额≤1800 佣金=100+(销售额-1000)*15%
    3.销售额>1800 佣金=220+(销售额-1800)*20%
    现已开发“销售业绩计算程序”,输入为某员工所售的枪机、枪托、枪管销售数量,输出为该员工的佣金数。请依据等价类方法,设计测试用例,检验该程序的有效性
    分析:本程序输出为“分段函数”,具有三段,之和覆盖数轴。因此,具有三个“有效等价”类,无“无效等价类”
    1.用例1,输入:5,5,5 预期输出:50
    2.用例2,输入:15,15,15 预期输出:175
    3.用例3,输入:25,25,25 预期输出:360

    思考:健壮性测试(Robustness Testing)又称为容错性测试,用于测试系统在错误输入或出现故障时,是否能够自动恢复或者忽略故障继续运行。如考虑健壮性评价,则可以补充哪些“无效等价类”的测试用例?

    小结
    • 思考:
      等价类划分方法,是一种思维模式。对问题空间进行分类,并用测试用例进行“覆盖”验证的思想。

    • 建立这种思维模式,有利于迅速窥视一个系统的全貌和概要,从按摩器、相机等功能浏览,到汽车、机床的试驾。有利于迅速找到一个系统的漏洞和弱点的漏洞(例如CCH)。

    • 等价类划分方法,具有“快速遍历”的性质,是涉猎学习一个系统或一台设备的重要方法。

    因果图-练习题

    基本思想

    等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。
    因果图方法为了更好的分析问题,绘出判断表,进一步得出测试用例
    当遇到较为复杂的问题时,这个方法常常十分有效
    因果之间的四种关系:
    在这里插入图片描述
    因之间/果之间的五种约束
    在这里插入图片描述

    E(互斥,异):表示a,b两个原因不会同时成立,两个中最多有一个成立
    I(包含,或):表示a,b,c这3个原因中,至少有一个必须成立
    O(唯一):表示a,b当中必须有一个,且仅有一个成立
    R(要求):表示当a出现时,b必须也出现。即a出现时,不可能b不出现
    M(屏蔽、强制):表示当a是1时,b必须是0。而当a为0时,b的值不定

    例题一:某《软件规格说明书》要求如下:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。
    正确答案:
    根据题意,设定如下:
    原因:
    1——第一列字符是A;
    2——第一列字符是B;
    3——第二列字符是一数字。
    结果:
    21——修改文件;
    22——给出信息L;
    23——给出信息M。
    11为中间节点,根据绘图自行设计,目的为更好的对输入和输出之间进行分割
    在这里插入图片描述
    在这里插入图片描述

    例题二:阅读下列说明,回答问题1~问题3,将解答填入答题纸的对应栏内。
    【说明】因果图方法的思路是在用自然语言书写的程序规格说明描述中找住因(输入条件)和果(输出或程序状态的改变),通过因果图转换为判定表。
    分析中国象棋中走马的实际情况(下面未注明的均指对马的说明),马走日字形(邻近交叉点无棋子)。遇到对方棋子可以吃掉,遇到本方棋子不能落到该位置。
    【问题1】应用中可能有多种输入条件,在什么情况下可采用因果图法设计测试用例?
    答:当应用中有多种输入条件,且输出结果与输入条件之间的关系可以明显依赖关系的情况下,可采用因果图法。
    【问题2】根据上述说明,利用因果图法,下面列出走棋出现的情况和结果。找出哪些是正确的输入条件,哪些是正确的输出结果,请把相应的字母编号填入表中。
    A.落点在棋盘上 B.落点与起点构成日字
    C.移动棋子 D.落点处为对方棋子
    E.落点处为自己方棋子 F.移动棋子,并除去对方棋子
    G.落点方向的邻近交叉点无棋子 H.不移动棋子
    I.落点处无棋子
    在这里插入图片描述
    【问题3】下图为中国象棋中走马的因果图,请把问题2中列出的输入条件和输出结果的字母编号填入到空白框中相应的位置。
    在这里插入图片描述
    在这里插入图片描述

    1,“因果图”的设计思想?
    直观、清晰的描述从因到果之间的逻辑关系。
    2,用因果图方法,设计测试用例的步骤?
    分析题目,罗列因变量、果变量;
    绘制因变量、果变量,设计“辅助节点”,按因果关系连线,标注因果关系,标注约束关系; 绘制“判定表”,化简“判定表”,设计测试用例;
    3,因果图的4种因果关系,5种约束关系是什么?
    因果关系:与、或、非、恒等
    约束关系:唯一(O)、互斥(E)、包含(I)、要求( R )、屏蔽(M)
    4,因果图中“辅助节点”如何设计?
    便于“汇集”因变量;便于“说明”果变量;

    白盒测试

    白盒测试(结构测试),白盒测试,是根据程序结构进行设计的测试方法,一般由程序员完成。它通过测试用例实现对程序结构(语句、判定、条件、路径)的“覆盖”,用来验证程序的实现是否与设计预期一致。

    提升程序“易测试性”方法-错误桩

    在检查测试效果时,常要在程序中插入一些错误语句。根据被检出的比例,推算出本次测试的覆盖度及程序剩余错误的保有量。

    示例:测试团队对某程序进行测试,之前,质量监控部领导在该程序内插入了“10个错误桩”。测试团队提交的测试结果显示有27个错误,其中包含4个错误桩。此时,质量监控部领导如何评价本次测试团队的工作质量?
    结论1:本次测试的覆盖程度 40%
    结论2:估算系统剩余“错误”保有量= ( 27 – 4 ) / 4 * (10 - 4) = 34.5

    性能测试

    LoadRunner11中文版-基础教程

    • Loadrunner负载测试软件主要功能
      创建虚拟用户
      创建真实负载
      实时监测
      分析结果
    • Loadrunner中基本过程
      创建批量“虚拟用户” 
      为每个虚拟用户,执行预先编写的“测试脚本”
      通过测试脚本,加载“真实负载”
      对系统状态进行“实时检测”
    • 系统输入模拟和输出监测的主要参数
      输入模拟:并发用户数、业务负载
      输出监测:吞吐量(单位时间处理的事务数量)、业务响应时间(系统业务的执行时间,执行前后的时间戳之差)
    • 被测系统的主要“调优”方向
      硬件方面:硬件参数调整、硬件性能提升、系统架构优化(机群、负载均衡设备、上云等) 
      软件方面:结构设计、算法设计、参数调整
      数据端方面:结构设计、平台选择
    • 其他性能测试种类
      并发性能测试:逐渐增加并发用户数负载,直至不能接受点
      疲劳测试:达到最大允许负载后,保持一段时间
      大数据量测试:包括独立的数据量测试、综合数据量测试两种
  • 相关阅读:
    LeetCode LCP 06. 拿硬币【贪心,数学】简单
    说好的女程序员做测试有优势?面试十几家,被面试官虐哭~~
    【博客485】prometheus-----为什么prometheus与alertmanager之间要用full mesh,不能load balance
    The system is running in low-graphics mode解决方法
    【leetcode】58.最后一个单词的长度
    发布与更新自己的npm包
    Matlab:设置命令历史记录预设项
    用java语言写一个RSA方式的数据签名、验签,服务端和客户端双方各生成一对RSA公私钥,并交换公钥。己方私钥用于加密,对方公钥用于验签,代码实例类编写。
    文件上传下载
    在openSUSE上开启护眼模式
  • 原文地址:https://blog.csdn.net/weixin_46277553/article/details/126579752