知识理论
一、软件测试概述
二、软件测试基础
1、软件测试的基本概念
1.1、什么是软件测试/h4>
针对软件产品的检测,称为软件测试。
软件测试的对象是软件,包含程序、数据、文档。大量的测试活动需要支持测试的环境。包括软件的运行环境和测试环境,涉及到被测对象软件之外的软硬件环境、 络环境、数据环境甚至是应用环境。
1.2、验证与确认
国家标准定义:
验证(Verification):通过提供客观证据来证实规定需求已得到满足
确认(Validation):通过提供客观证据来证实针对某一特定预期用途或应用需求已得到满足
对软件来讲,验证时检验软件是否满足需求规格说明的要求,或者说是是否实现了需求规格说明中规定的所有特性(功能性、性能、易用性等),因此验证是判断生产者是否(按需求规格)正确地构造了软件,或者说是不是“正确地做事”
确认是检验软件是否有效,是否满足用户的预期用途和应用需求。因此确认是判断生产者是否构造了正确的软件,或者是是否“做了正确的事”
1.3、软件缺陷
常常将软件的问题(Problem)、错误(Error)、以及因软件而引起的异常(Anomaly)、故障(Fault)、失效(Failure)、偏差(Variance)等均称为软件缺陷
“从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背”
软件缺陷是如何产生br> 需求的表述没有真实反映实际的要求、设计有瑕疵、采用的技术方案不合理、软件太复杂、沟通问题、软件过程不规范、文档不充分等
软件在需求分析和设计阶段同样会引入缺陷,例如需求本身不清晰不明确、需求变化频繁、用户对需求的表达不准确、沟通问题;另一方面需求的获取方式、文档化工作和质量以及需求确认也是一些重要因素
在软件工程活动中,缺陷从产生到发现的时间越短,修复的代价越小
缺陷的优先级:紧急、高、中、低、无
缺陷的严重性:阻塞、严重、一般、轻微、可忽略
1.4、测试与质量保证
软件质量的定义:在规定条件下使用时,软件产品满足明确的或隐含的要求的能力
软件的产品质量模型(八个质量属性):功能性、性能效率、兼容性、易用性、可靠性、信息安全性、维护性、可移植性
使用质量模型:有效性、效率、满意度、抗风险、周境覆盖
1.5、测试用例
测试用例定义:为某个特定目标(例如:为演练具体的程序路径或验证对特定需求的依从性)而开发的输入、执行条件以及预期结果的集合
定义包含的要点:
1)、测试用例时测试人员针对具体目标设计或开发出来的,有非常强的目的性;
2)、测试用例将体现软件的某一个具体运行实例或场景,包括输入的测试数据、执行条件、逻辑过程以及预期的逻辑结果等
3)、测试用例需提供准确的判定准则(即依照用例实施测试获得实际结果时如何判定)
测试用例设计规定:应当通过确定前置条件,选择输入值以及必要时执行所选测试覆盖项的操作,以及确定相应的预期结果来导出
测试用例模板包含内容:标识、名称、说明、环境配置、操作过程、前置条件、输入数据、预期结果、输出结果等
1.6、测试策略
软件测试策略是在一定的软件测试标准、测试规范的指导下、依据测试项目的特定环境而规定的软件测试的原则、方法的集合
测试策略的输入包含内容:
1)、测试所需软硬件资源的详细说明
2)、针对测试和进度约束,需要的人力资源角色和职责
3)、测试方法、测试标准和完成标准
4)、目标系统的功能性和非功能性需求、技术指标
5)、系统局限
2、软件测试的原则
溯源性原则:不同阶段的测试有不同的阶段性目标,总目标是保证软件质量
工程型原则:测试是贯穿软件生产的各阶段,需要以工程化的思想和方法来组织和实施
独立性原则:独立的测试工程师或测试部门承担测试工作
合理性原则:在质量要求和测试强度之间寻找合理的结合点,获得最优的测试效费比
相关性原则:对暴露错误多的模块应该加强测试
可接受性原则:允许某些缺陷遗留在软件中
风险性原则:构造测试用例时需考虑如何规避和减少风险
3、软件测试模型
3.1、V模型(瀑布模型)
3.3、H模型
4、软件测试分类
4.1、按工程阶段划分的测试
单元测试:(模块测试)包含测试方法:白盒测试、黑盒测试、灰盒测试
集成测试:发现单元之间的接口可能存在的问题
系统测试:对象是应用系统,除软件外可能还包含硬件、 络及数据,并且需要在一个比较真实的环境下进行
确认测试:(有效性测试)α测试和β测试
验收测试:用户方组织,在生产环境下进行
4.2、按是否执行代码划分的测试
静态评审包含内部评审、外部评审:内部评审的范围比较广泛、如各个阶段的文档、程序的结构、逻辑、过程、算法、接口等,偏重技术层面;外部评审比较多的体现在对需求和设计文档的评审
静态测试需要对代码进行走查,及阅读代码并分析其是否存在错误(一般采用人工走查的方式)
4.3、按测试实施主体划分的测试
开发方(供方)测试、用户方(需方)测试、第三方(独立评价方)测试
4.4、按是否关联代码划分的测试
白盒测试、黑盒测试、灰盒测试
白盒测试:结构化测试、逻辑驱动测试或基于代码的测试
白盒测试的主要工作是进行各类逻辑覆盖测试:语句覆盖、路径覆盖、判定覆盖、条件覆盖、条件组合覆盖等
黑盒测试:功能测试、基于规格说明的测试、数据驱动的测试方法。测试人员进行测试设计的依据是需求规格说明、通过设计测试用例,分析在特定输入的情况下预期的输出结果,获取软件的实际运行结果来判定程序是否存在错误。测试方法更体现软件的外在表现,除了软件的功能,也包括软件的界面、使用便利程度、兼容性、效率等
4.5、按软件质量划分的测试
功能性测试:在指定条件下使用时,测试软件提供满足明确和隐含要求的功能的程度,包括软件功能的完备性、正确性和适合性
性能效率测试:在指定条件下使用时,测试软件的性能及效率能满足需求的程度,包含时间特性(如响应时间、处理时间、吞吐率)、资源利用性(如内存占用、CPU占用)、容量(如用户并发数、通信宽带、交易吞吐量、数据库规模)
兼容性测试:在共享相同的硬件或软件环境的条件下,测试软件能够与其他软件交换信息或执行其所需的功能的程度,包括软件的共存性和互操作性
易用性测试:包括软件的可辨识性、易学性、易操作性、用户差错防御性、用户界面舒适性、易访问性
可靠性测试:测试软件在指定条件下指定时间内执行指定功能的程度,包括软件的成熟性、可用性、容错性、易恢复性
信息安全性测试:测试软件保护信息和数据的程度,包括保密性、完整性、抗抵赖性、可核查性、真实性
维护性测试:测试软件能够被预期的委会人员修改的有效性和效率的程度,包括软件的模块化、可重用性、易分析性、易修改性、易测试性
可移植性测试:测试软件能够从一种硬件、软件或其他运行(或使用)环境迁移到另一种环境的有效性和效率的程度,包括软件的适应性、易安装性、易替换性
4.6、按符合性评价要求划分的测试
4.7、回归测试
只要软件发生了变化,都应该进行回归测试。每一次回归测试可能需要设计一些新的测试用例,同时也会复用到之前已经建立的许多测试用例
三、软件测评相关标准
软件测试是保障软件质量的重要手段,与之相关的主要标准包括软件质量标准、软件测试文档和技术标准、软件测试工作量和成本估算标准。其中软件质量标准主要解决了软件产品质量如何评价、怎么评价的问题;软件测试文档、过程和技术标准则是支撑软件质量中各质量特性及测度的取值和评价,并给出了相关的测试过程、测试文档以及测试技术;软件测试工作量及成本估算标准从成本控制和成本管理的角度,给出了测试工作量及价格的量化方法。
1、标准化概述
1.1、标准化的意义
标准化作用主要体现在以下几个方面:
1)、标准化是建立软件测试最佳秩序的工具
2)、标准化是促进软件测试技术创新应用的途径
3)、标准化是推广软件测试新技术的桥梁
1.2、标准的分类
根据标准制定的主体进行分类:标准可分为国际标准、国家标准、行业标准、地方标准、团体标准、企业标准
2、软件质量模型与评价标准
2.1、软件质量模型和测量
使用质量模型:有效性、效率、满意度、抗风险、周境覆盖
有效性:指用户实现指定目标的准确性和完备性。准确性一般由软件产品的出错频率进行评价,完备性是指实现用户期望功能的完整性程度
效率:指用户实现目标的准确性和完备性时相关的资源消耗。包括人的智力、体力、时间、材料、财力等
满意度:指产品或系统在指定的使用周境中,用户的要求被满足的程度
抗风险:指产品或系统在经济现状、人的生命、健康或环境方面缓解填在风险的程度。包含经济风险、健康和安全风险、产品对运行环境带来的影响
周境覆盖:在指定的使用周境中,产品或系统在有效性、效率、抗风险和满意度等特性方面能够被使用的程度,不单要满足用户的需求,还需要具备一定的扩展性,能够一定程度地适应超出产品文档范围的使用周境
产品质量模型:功能性、性能效率、兼容性、易用性、可靠性、信息安全性、维护性、可移植性
功能性:在指定条件下使用时,产品或系统提供满足明确或隐含要求的功能的程度,包括功能的完备性、正确性、适合性以及依从性
- 功能完备性:功能集对指定的任务和用户目标的覆盖程度
- 功能正确性:产品或系统提供具有所需精度的正确的结果的程度
- 功能适合性:功能促使指定的任务和目标实现的程度
- 功能依从性:产品或系统遵循与功能性相关的标准、约定或法规以及类似规定的程度
性能效率:性能与在指定条件下所使用的资源量有关。资源的影响因素包括硬件配置和配套的软件产品
- 时间特性:产品或系统执行其功能时,其响应时间、处理时间及吞吐率满足需求的程度
- 资源利用性:产品或系统执行其功能时,所使用资源数量和类型满足需求的程度
- 容量:产品或系统参数最大限量满足需求的程度,如存储数据、并发用户、宽带、吞吐量等
- 性能效率的依从性:产品或系统遵循与性能效率相关的标准、约定或法规以及类似规定的程度
兼容性:在共享相同的硬件或软件环境的条件下,产品、系统或组件能够与其他产品、系统或组件交换信息,和/或执行其所需的功能的程度
- 共存性:在与其他产品共享通用的环境和资源的条件下,产品能够有效执行其所需的功能并且不会对其他产品造成负面影响的程度
- 互操作性:两个或多个系统、产品、组件能够交换信息并使用已交换的信息的程度
- 兼容性的依从性:产品或系统遵循与兼容性相关的标准、约定或法规以及类似法规的程度
易用性:在指定的使用周境中,产品或系统在有效性、效率和满意度特性方面为了指定的目标可为指定用户使用的程度
- 可辨识性:用户能够辨识产品或系统是否适合他们的要求的程度
- 易学性:
- 易操作性:
- 用户差错防御性
- 用户界面舒适性
- 易访问性
- 易用性的依存性
可靠性:系统、产品或组件在指定时间内执行指定功能的程度
- 成熟性:正常运行时满足可靠性要求的程度
- 可用性:在需要使用时能够进行操作和访问的程度
- 容错性:运行符合预期的程度
- 易恢复性:在发生中断或失效时,产品或系统能够恢复直接受影响的数据并重建期望的系统状态的程度
- 可靠性的依从性:产品或系统遵循与可靠性相关的标准、约定或法规以及类似法规的程度
信息安全性:产品或系统保护信息和数据的程度,已使用户、其他产品或系统具有与其授权类型和授权级别一致的数据访问度
- 保密性:只有在被授权时才能被访问的程度
- 完整性:防止未授权访问、篡改计算机程序或数据的程度
- 可抵赖性:活动或事件发生后可以被证实且不可被否认的程度
- 可核查性:实体的活动可以被唯一地追溯到该实体的程度
- 真实性:对象或资源的身份标识能够被证实符合其声明的程度
- 信息安全性的依从性:产品或系统遵循与可靠性相关的标准、约定或法规以及类似法规的程度
维护性:产品或系统能够被预期的维护人员修改的有效性和效率的程度
- 模块化:
- 可重用性:
- 易分析性:
- 易测试性:
- 维护性的依从性:
可移植性:能够从一种硬件、软件或者其他运行(或使用)环境迁移到另一种环境的有效性和效率的程度
- 适应性:
- 易安装性:
- 易替换性:
- 可移植性的依从性:
2.2、软件质量评价
软件质量评价模型:包括评价过程以及关联的评价输入、评价约束、评价资源、评价输出
评价过程的策略和步骤具体如下:
1、确立评价需求
- 明确评价目的;
- 获取软件产品质量需求;
- 标识待评价的产品部件;
- 确定评价严格度;
2、规定评价
- 选择质量测度;
- 确定质量测度判定准则;
- 确定评价判定准则;
3、设计评价
- 策划评价活动
4、执行评价
- 实施测量;
- 应用质量测度判定准则;
- 应用评价判定准则;
5、结束评价
- 评审评价结果;
- 编制评价 告;
- 评审质量评价并向组织提交反馈;
2.3、就绪可用产品(RUSP)的质量要求和评价细则
RUSP是一种打包出售给对其特征和其他质量没有任何影响的需方的软件产品。
1、RUSP要求:包含产品说明要求、用户文档集要求、软件质量要求
产品说明要求:陈述软件各种性质的文档,分为纸质文档和电子文档
用户文档集:能够指导、帮助用户使用软件的所有文档的集合
软件质量要求:针对软件质量从产品质量八大属性和使用质量的五大特性的角度做规定
2、测试文档集要求:包括测试计划、测试说明、测试结果等文档
3、符合性评价细则:
3、软件测试标准
3.1、测试过程标准
组织级测试过程、测试管理过程、动态测试过程
组织级测试过程:定义用于开发和管理组织级测试规格说明的过程,例如组织级测试方针、组织级测试策略、过程、规程和其他资产的维护
测试管理过程:定义涵盖整个测试项目或任何测试阶段(例如系统测试)或测试类型(例如性能测试)的测试管理过程(例如项目测试管理、系统测试管理、性能测试管理)
测试管理过程包含测试策划过程、测试监测和控制过程、测试完成过程3个子过程
动态测试过程:定义执行动态测试的通用过程。动态测试包含测试设计和实现过程、测试环境构建和维护过程、测试执行过程、测试事件 告过程
3.2、测试文档标准
3.3、测试技术标准
四、软件测试过程和管理
测试技术
五、基于规格说明的测试技术
1、测试用例设计方法
1.1、等价类划分法
一种典型的黑盒测试方法。把程序的输入域划分为若干部分(子集),然后从每个部分中选取少数代表性的数据作为测试用例。
1.1.1、等价类的划分
等价类划分有两种情况:有效等价类、无效等价类
有效等价类指的是对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能
无效等价类指对于程序的规格说明来说是不合理的或无意义的输入数据所构成的集合
1.1.2、划分等价类的原则
划分方式包括按区间划分、按数值划分、按数值集合划分、按限制条件或规划划分、按处理方式划分
原则如下:
1)、在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类
2)、在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类
3)、在输入条件是一个布尔量的情况下,可以确立一个有效等价类和一个无效等价类
4)、在规定了输入数据的一组值(n个),并且程序要对每一个输入值分别进行处理,以确立n个有效等价类和一个无效等价类
5)、在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
6)、在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步划分为更小的等价类
1.1.3、建立等价类表
举例:要求输入日期,设定日期的范围在2000年1月至2100年12月之间,规定显示为6为数字,前4为表示年,后2位表示月
等价类表
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
日期的类型及长度 | 1:6位数字字符 | 1:包含非数字字符 2:少于6为字符 3:多于6位字符 |
年份范围 | 1:2000年至2100年之间 | 1:年份在2000年之前(小于2000) 2:年份在2100年之后(大于2100) |
月份范围 | 1:1月至12月之间 | 1:小于1月(小于1) 2:大于12月 (大于12) |
1.1.4、确定测试用例
根据建立的等价类表,从划分出的等价类中按照以下步骤确定测试用例
1)、为每个等价类规定一个唯一的编
2)、设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖
3)、设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖
1.2、分类树法
分类树是另一种对程序的输入域划分自己的方法。将输入域分隔成若干个独立的分类,每个分类在根据一定的准则再次划分类和子类,直到将整个输入域分割成一些不可再分的子类的组合为止(即所有输入域都被识别且被包括在了某个分类中)
举例:
单选项 | 可选值 |
---|---|
目的地 | 北京、上海、广州、深圳、武汉、西安、成都、重庆 |
舱位 | 头等舱、公务舱、经济舱 |
座位 | 靠过道、靠窗、中间 |
食物偏好 | 糖尿病餐、蛋奶素食、低脂、低糖、严格素食、标准 |
1.3、边界值法
1.3.1、二值基本边界值分析
基本边界值分析:依据“单缺陷”假设(单缺陷:失效极少是由两个(或多个)缺陷的同时发生引起的)
如果有一个n变量的软件输入域,使其中一个变量略小于最小值、最小值、正常值、最大值、略大于最大值这五种选择,其余的变量取正常值,则该n变量软件输入域的边界值分析会产生4n+1个用例
测试技术应用
新技术应用
文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览208248 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!