【软件测试及质量保证】小结(上)

简介: 【软件测试及质量保证】小结

part Ⅰ


测试基础


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


产品质量模型如图所示:



一级指标“功能性”


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


  1. 适合性。软件产品为指定的任务和用户目标提供一组合适的功能的能力


  1. 准确性。软件产品提供具有所需精度的正确或相符的结果或效果的能力


  1. 互操作性。软件产品与一个或更多的规定系统进行交互的能力


  1. 安全保密性。软件产品保护信息和数据的能力,以使未授权的人员或系统不能阅读或修改这些信息和数据,而不拒绝授权人员或系统对它们的访问。


一级指标“可靠性”


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


  1. 成熟性。软件产品为避免由软件中故障而导致失效的能力。


  1. 容错性。在软件出现故障或者违反其指定接口的情况下,软件产品维持规定的性能级别的能力。


  1. 易恢复性。在失效发生的情况下,软件产品重建规定的性能级别并恢复受直接影响的数据的能力。


一级指标“易用性”


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


  1. 易理解性。软件产品使用户能理解软件是否合适以及如何能将软件用于特定的任务和使用条件的能力。


  1. 易学性。软件产品使用户能学会其应用的能力。


  1. 易操作性。软件产品使用户能操作和控制它的能力。


  1. 吸引性。软件产品吸引用户的能力。


一级指标“效率”


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


  1. 时间特性。在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐率的能力。


  1. 资源利用性。在规定条件下,软件产品执行其功能时,使用合适数量和类别的资源的能力。


一级指标“可维护性”


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


  1. 易分析性。软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。


  1. 易改变性。软件产品使指定的修改可以被实现的能力。


  1. 稳定性。软件产品避免由于软件修改而造成意外结果的能力。


  1. 易测试性。软件产品使已修改软件能被确认的能力。


一级指标“可移植性”


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


  1. 适应性。软件产品毋需采用额外的活动或手段就可适应不同指定环境的能力。


  1. 易安装性。软件产品在指定环境中被安装的能力。


  1. 共存性。软件产品在公共环境中同与其分享公共资源的其他独立软件共存的能力。


  1. 易替换性。软件产品在同样环境下,替代另一个相同用途的指定软件产品的能力。


产品质量模型各指标间相关性



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


使用质量模型如图所示:



  1. 有效性。软件产品在指定的使用周境下,使用户能正确和完全地达到规定目标的能力。


  1. 生产率。软件产品在指定的使用周境下,使用户为达到有效性而消耗适当数量的资源的能力。


  1. 安全性。软件产品在指定使用周境下,达到对人类、业务、软件、财产或环境造成损害的可接受的风险级别的能力。


  1. 满意度。软件产品在使用环境中,让用户感到满意的程度。


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


五种分类方式


  1. 按软件的“不同状态”分类


  1. 按软件的“不同阶段”分类


  1. 按软件的“不同特性”分类


  1. 按软件的“不同开发方式”分类(业界)


  1. 按测试的“不同方法”分类(学界)


按不同阶段分类



  1. 单元测试:对程序员编写完成的某个程序单元测试;


  1. 集成测试(组装测试):将所有程序单元(模块)进行有序的、递增的组装并测试。

发现模块间接口以及全局数据结构等问题。


  1. 确认测试:通过检验和提供客观证据,证明软件是否满足《软件需求说明书》中规定的需求。


  1. 系统测试:为确认是否达到原始目标,对集成的硬件和软件系统进行的测试。检查完整的程序系统能否和系统(硬件、外设、网络和系统软件、支持平台等)正确配置、连接、并满足用户需求。


  1. 验收测试:按照项目任务书或合同、供需双方约定的验收依据文件进行的对整个系统的测试与评审,决定是否接收或拒收系统。


回归测试


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


  • 目的:软件的改变可能是源于发现了错误并做了修改,也有可能是因为在集成或维护阶段加入了新的模块。回归测试就是为确定修改和检查修改是否损害了原有的正常功能。


  • 重要性:回归测试作为软件生命周期的一个组成部分,在整个软件测试过程中占有很大的工作量比重,软件开发的各个阶段都会进行多次回归测试。在极端编程方法中,更是要求每天都进行若干次回归测试。


附:简述“验证”与“确认”的区别?



  • 验证:过程正确,符合设计规范


  • 确认:结果正确,符合客户要求


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


  1. 软件未达到产品说明书标明的功能


  1. 软件不能正常运行


  1. 软件未达到产品说明书虽未指出但应达到的目标


  1. 软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好


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


  1. 测试在软件开发中占有重要地位


  1. 测试成本占有开发成本的近一半


如:



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


  1. 初心原则。所有软件测试,都应追溯到用户需求


  1. 从速原则。尽早地和不断地进行软件测试


  1. 折衷原则。完全测试是不可能的,测试需要终止条件(原因:输入量太大;输出结果太多;路径组合太多)


  1. 不完备原则。测试无法显示软件潜在的缺陷


  1. 正比原则。测试后程序中残存的错误数目与该程序中已经发现的错误数目成正比


  1. 回避原则。程序员应避免检查自己的程序


  1. 设计原则。遵循PDCA规律,避免测试的随意性


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


  1. “零缺陷软件”是不可能的,只是一个可望不可及的目标;


  1. 完全测试程序是不可能的


  1. 测试只能证明错误存在,不能证明错误不存在


  1. 测试应当循序渐进,不应企图一次性测完


  1. 80-20原则:80%的错误聚集在20%的模块中,经常出错的模块改错后还会经常出错


  1. 找到的软件缺陷越多,说明软件缺陷越多


  1. 并非所有软件缺陷都能修复


  1. 需求说明书总是在不断变化


  1. 测试资源是很有限的


  1. 软件测试人员通常在项目组中不受欢迎


黑盒测试


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


边界值分析-基础定义


三个点的定义


  • 内点:在域范围内的任意一个点;


  • 上点:边界上的点(无论开区间、闭区间)。


  • 离点:离上点最近的一个点,且满足:


1)如边界封闭,则域范围外离上点最近的点;


2)如边界开放,则域范围内离上点最近的点。


“边界值”定义


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


常见的几类边界


  1. 报表的第一行和最后一行


  1. 数组元素的第一个和最后一个;


  1. 循环的第0次、第1次、倒数第2次、最后1次等


  1. 2字节的正整数边界:65535;65536


常见边界的边界值



四种黑盒测试技术


  • 等价类划分法


关键1:如何划分等价类


关键2:设计测试用例,覆盖等价类


  • 边界值分析法


关键1:用“单故障假设”逐一分解要素


关键2:对每个要素,寻找到它独特的“边界”


关键3:用“上点”、“离点”覆盖“边界”


  • 错误推测法


关键1:根据“经验”,从“时间、人、技术”等 ,对错误进行“聚类”


关键2:根据所聚类型,增加一组测试用例


  • 判定表驱动法


关键1:识别所有条件、动作,画“判定表”


关键2:根据需求,填“判定表”,并规约


关键3:根据规约后的“判定表”设计测试用例


白盒测试


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


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






目录
相关文章
|
1月前
|
测试技术 持续交付 UED
软件测试的艺术:确保质量的实战策略
在软件开发的舞台上,测试是那把确保每个功能如交响乐般和谐奏响的指挥棒。本文将深入探讨软件测试的重要性、基本类型以及如何设计高效的测试策略。我们将通过一个实际的代码示例,展示如何运用这些策略来提升软件质量和用户体验。
|
1月前
|
jenkins 测试技术 持续交付
软件测试中的自动化与持续集成:提升效率与质量的关键
在快节奏的软件开发环境中,自动化测试和持续集成已经成为不可或缺的部分。本文将探讨自动化测试和持续集成的重要性,以及它们如何协同工作以提高软件开发的效率和质量。通过分析自动化测试的策略、工具选择以及持续集成的实践,我们将揭示这些技术如何帮助开发团队快速响应变化,减少错误,并加速产品上市时间。
|
1月前
|
测试技术 开发者 Python
自动化测试之美:从零构建你的软件质量防线
【10月更文挑战第34天】在数字化时代的浪潮中,软件成为我们生活和工作不可或缺的一部分。然而,随着软件复杂性的增加,如何保证其质量和稳定性成为开发者面临的一大挑战。自动化测试,作为现代软件开发过程中的关键实践,不仅提高了测试效率,还确保了软件产品的质量。本文将深入浅出地介绍自动化测试的概念、重要性以及实施步骤,带领读者从零基础开始,一步步构建起属于自己的软件质量防线。通过具体实例,我们将探索如何有效地设计和执行自动化测试脚本,最终实现软件开发流程的优化和产品质量的提升。无论你是软件开发新手,还是希望提高项目质量的资深开发者,这篇文章都将为你提供宝贵的指导和启示。
|
2月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
27天前
|
敏捷开发 监控 测试技术
软件测试中的自动化策略:提升效率与质量
在软件开发过程中,测试是确保产品质量的关键环节。随着敏捷开发模式的普及,自动化测试成为提升测试效率和质量的重要手段。本文将介绍自动化测试的基本概念、实施步骤以及如何通过自动化测试提高软件测试的效率和质量,同时分享一些实用的自动化测试工具和技巧。
59 3
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
自动化测试的新篇章:利用AI提升软件质量
【10月更文挑战第35天】在软件开发的海洋中,自动化测试犹如一艘救生艇,它帮助团队确保产品质量,同时减少人为错误。本文将探索如何通过集成人工智能(AI)技术,使自动化测试更加智能化,从而提升软件测试的效率和准确性。我们将从AI在测试用例生成、测试执行和结果分析中的应用出发,深入讨论AI如何重塑软件测试领域,并配以实际代码示例来说明这些概念。
58 3
|
2月前
|
敏捷开发 监控 jenkins
自动化测试之美:打造高效的软件质量保障体系
【10月更文挑战第20天】在软件开发的海洋中,自动化测试如同一艘精准的导航船,引领项目避开错误的礁石,驶向质量的彼岸。本文将扬帆起航,探索如何构建和实施一个高效的自动化测试体系,确保软件产品的稳定性和可靠性。我们将从测试策略的制定、工具的选择、脚本的编写,到持续集成的实施,一步步描绘出自动化测试的蓝图,让读者能够掌握这一技术的关键要素,并在自己的项目中加以应用。
37 5
|
2月前
|
测试技术
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
本文是《软件质量保护与测试》(第2版)第十章的学习总结,介绍了黑盒测试的基本概念和方法,包括等价类划分、边界值分析和因果图法,并通过具体例子展示了如何设计测试用例来验证软件的功能性需求。
73 1
软件质量保护与测试(第2版)学习总结第十章 黑盒测试
|
2月前
|
人工智能 人机交互 数据库
软件质量保护与测试(第2版)学习总结第一章
本文是《软件质量保护与测试》(第2版)第一章的学习总结,概述了软件的特征、分类、软件工程的层次化技术、现代软件开发的变化,以及软件质量的概念和评价体系,包括黑盒、白盒和灰盒测试方法。
36 1
软件质量保护与测试(第2版)学习总结第一章
|
2月前
|
Java 测试技术 持续交付
探索自动化测试的奥秘:提升软件质量的关键
【10月更文挑战第20天】 在当今快速发展的软件行业中,自动化测试已成为确保产品质量和加速开发周期的重要工具。本文将深入探讨自动化测试的核心概念、实施策略及其对软件开发生命周期的影响,旨在为读者提供一种全面理解自动化测试的视角,并展示如何有效地将其应用于实际项目中以提高软件质量和效率。
28 2
下一篇
DataWorks