Advertisement

谈谈软件测试方法

阅读量:

软件测试是利用人工与自动化手段对某个软件系统进行检测的过程;其目的是为了验证该系统是否符合既定要求,并明确预期结果与实际结果之间的差异。

根据是否关注软件内部结构及其具体实现来划分, 测试方法主要可分为白盒测试与黑盒测试两大类. 白盒测试的主要方法包括代码检查技术, 静态结构分析方法, 静态质量度量策略, 逻辑覆盖技术, 基本路径检验方案, 域检验, 符号检验, 路径覆盖检测以及程序变异检测. 黑盒测试的主要方法则包含等价类划分技术, 边界值检验策略, 错误推测技术, 因果图分析方法, 判定表驱动方案, 正交实验规划策略, 功能图解辅助手段以及场景模拟等多种方式.

依据程序是否执行这一角度进行分类,则可将测试方法划分为静态检测与动态检测两大类别。其中主要包含以下三个方面的内容:一是通过编写自动化脚本实现对系统逻辑的模拟运行;二是针对实际应用环境构建相应的输入数据;三是在运行过程中实时获取并分析系统的运行状态信息。

在这里插入图片描述

概述

该软件测试方法的主要目标在于识别程序中的缺陷并确保其满足设计规范的同时也达到合同规定的 technically required standards。通过验证确保系统质量并通过全面评估保证最终交付给用户的是一份高质量的系统文档。而软件的基本测试方法主要包含静态与动态测试、功能评估、性能检测等基础类型。

软件测试手段繁多,在实际应用中较为常见的有等价性分类法与场景模拟法;还有一些不常用但辅助性的如正交排列法与测试大纲规划。在黑盒测验体系中,则主要包含以下几种方式:首先是以输入-输出关系为基础的等价性分类;其次是对关键变量进行边界值分析;再次是利用判断表来进行系统行为预测;此外还有一种称为"判断表"的手法;最后还有基于系统功能划分的具体实施步骤。这些手法均以实现输入-输出间的完整覆盖为目标,在确认阶段主要依据功能需求规格书来判断系统是否满足基本要求。而白盒测验通常被称为结构化测验或逻辑驱动型测验,则是基于覆盖全部代码路径及条件分支的一种测验方式,在此过程中需通过测验评估程序运行时的各项性能指标,并最终验证程序是否能按照预期执行各项任务

原则

1.尽早不断测试的原则

为了尽快实现高质量的软件质量目标, 应该尽早地持续执行全面的软测工作。统计数据显示约60%的缺陷会在设计阶段出现, 并且在项目后期每修复一个缺陷所需的成本将显著增加。及时发现任何缺陷将显著降低修复成本

2.IPO原则

测试用例由测试输入数据和与之对应的预期输出结果这两部分组成。

3.独立测试原则

(1) 独立性原则。这指的是将软件测试工作分配给与开发机构在经济上和管理上保持独立的专门组织来执行。为了保证质量,在这个阶段个人程序员不应自行审查自己的代码;同时相关团队也不应负责测试本团队开发的产品。由于开发者自身往往缺乏全面了解需求的能力以及可能存在的误解风险,在自我评估方面会面临诸多挑战;因此他们尤其难以发现因需求理解偏差而导致的功能错误,并且这类潜在问题往往较为隐蔽。

(2) 合法与非法准则。在设计过程中,测试用例应包含符合规范的输入参数以及不符合规范的输入参数

(3)错误群集原则。软件系统中各程序模块运行异常现象具有一定的聚集性特征,在实际应用过程中我们发现各程序模块之间的故障存在一定的相互影响关系,并且其未被发现的异常情况数量与其已识别出的问题条数存在显著相关性。因此对于出现集中异常情况的各个模块运行状态需进行深入排查和动态监控

(4)严格性原则。严格执行测试计划,排除测试的随意性。

(5)覆盖原则。应当对每一个测试结果做全面的检查。

阐述功能测试原则的定义。仅仅完成所需任务的一半仅仅是成功的一半;另一半则是评估程序是否超出预期范围。

阐述功能测试原则的定义。仅仅完成所需任务的一半仅仅是成功的一半;另一半则是评估程序是否超出预期范围。

(7) 回归测试策略的制定应当确保合理维护测试用例。这不仅可用于当前项目的回归测试中,还可以在未来维护中发挥辅助作用。

(8)错误不可避免原则。在测试时不能首先假设程序中没有错误。

分类

软件测试方法的分类方式多种多样;根据程序运行状态可以将其划分为静态与动态两类;基于算法实现细节与系统架构特征则可分为黑盒、白盒及灰盒三类;从程序运行方式的角度来看又可分为人工操作与自动化两大类

静态测试和动态测试

静态测试是指在软件开发过程中对被测程序进行的一种验证活动,在此过程中无需让其执行即可完成相关功能测试工作的方法。具体而言,则是对软件的需求规格说明书、设计说明书以及源程序进行结构分析和流程图分析以期找出存在的错误。如出现未匹配的参数或未定义的变量等情况,则应立即采取相应措施加以处理

(2)动态测试。对应于静态测试的方法论框架,在动态测试中通常会基于待测程序对其实际运行结果进行系统性对比分析,并重点关注其运行效率和系统的健壮性等关键性能指标。具体而言, 动态测试方法通常包含以下三个主要环节:构建测试案例,执行程序运行以及评估结果.

黑盒测试、白盒测试和灰盒测试

在这里插入图片描述

被测系统被视为一个完全不可知的黑色盒子,在这种情况下,在不考虑任何内部结构或特性的情况下,根据需求规格说明书设计测试案例,并验证程序能否按照规范说明准确无误地运行。其主要关注点在于软件界面和功能实现的质量保障。为了有效保证软件质量,则必须对黑盒测试的行为进行量化评估。

(2)白色盒测试。与其相比黑色盒测试主要区别在于它依赖于程序内部的行为信息及其相关信息来进行审查,并重点关注那些能够直接反映系统功能需求的关键执行路径是否能够正常运行及完成预期操作。白色盒测试基于程序结构特征设计了一套完整的测试用例集合,并重点关注各个关键节点处的各种独立执行路径是否具有良好的功能性表现及相应的处理机制是否存在潜在缺陷或漏洞问题。常用的主要白色盒检验方法包括控制流分析法、数据流分析法、路径覆盖检验法以及代码变异检验技术等,在实际应用中最为广泛采用的是基于逻辑覆盖度的方法来实现系统的全面检验目标

(3)灰盒测试作为一种介于黑盒子法与白色方法之间的特殊手段,在关注输出与输入一致性的同时也不可忽视系统的内部运行状态;然而相比白色方法而言,在细节程度上远不及全面详尽;对于系统内部的具体情况,则主要通过一些象征性现象或标志来进行间接判断;当系统内部出现故障导致输出结果偏差时,则可以考虑采用灰色方法;这使得灰色方法相较于白色方法更具高效性以及黑色方法更具广泛适用性

手动测试和自动化测试

自动化测试简单来说就是一种将人为干预转化为机器自动执行的过程,在预先设定好的条件下运行被测程序并分析其结果。总体而言这是一种将手工主导的测试行为转变为由机器自主完成的方式。对于传统的人工测试在制定好了详细的测试用例后需要由专业人员按照既定步骤系统性地执行这些用例并通过实际操作获取数据并与预期目标进行对比。

不同阶段测试编辑

单元测试

单元测试主要针对该软件的各个模块进行功能验证。通过测试可以发现该模块在实际应用中出现的功能异常以及编码上的问题。首先可以通过静态分析等静态测试手段对源程序进行初步分析,并按照程序设计所绘制的控制流程图来满足既定的软件覆盖率要求完成必要的逻辑检验工作。同时还可以利用黑盒测试方法设计一组基础的测试用例来进行初步验证;如果通过黑盒测验所获得的结果无法满足所需覆盖率指标,则需配合白盒法补充新的测验用例以确保覆盖要求得到充分满足。具体达到何种覆盖率则应根据模块的具体情况进行评估。对于软件质量要求较高且可靠性标准严格的模块应当尽可能地满足组合覆盖或路径覆盖的相关标准以保证系统性能的稳定性和可靠性。

集成测试

在软件测试的过程中,默认情况下将集成测试视为第二个阶段,在这一阶段中通常会对已严格遵循程序设计要求和标准组装好的各个模块进行协同测试以确认整个程序结构是否符合既定规范。在此过程中需要重点检验各模块之间的协调性问题例如在跨越接口时是否会存在数据丢失的问题;此外还需评估由于个别模块失误所带来的负面影响;同时还要审查整合后各子功能能否完美配合以达成预期的整体效果;此外还需要监控由于累积误差可能导致的整体偏差是否超出了可接受范围;最后还需确保数据库在单个模块出现问题时不会导致系统崩溃等问题

系统测试

通常采用黑盒测试方法来进行系统测试以确保其满足软件需求。本阶段的主要工作内容包括健壮性检测以及性能检测等多方面的评估工作。为了确保此次阶段性的系统评估能够获得准确可靠的结论,则需要由专门的独立团队负责执行相关系统的评估任务。此外,在整个系统的验证过程中会遇到许多复杂情况因需求变更导致功能增删可能导致新的问题出现因此必须进行充分全面的质量检查才能确保最终交付产品的可靠性与稳定性

验收测试

在软件产品即将投入正式应用前的最后一个阶段进行的测试操作被称为验收测试。相较于系统测试而言,验收测试的主要区别在于参与test的角色不同:前者由用户执行相关操作;后者则由技术团队完成功能验证任务。其核心目标在于向用户提供一套经过验证的产品,并确保该软件能够满足既定的标准要求以及提供稳定可靠的运行环境。一旦通过了验收test阶段的所有考核指标,则该软件产品有权获得正式发布资格。然而,在将最终版本交付给用户之前还存在潜在风险:由于开发人员无法预判用户的实际使用场景和操作模式,在正式交付后仍需持续关注产品的稳定性与功能性表现。为此,在项目后期除完成常规的功能性评估外还需开展两项关键评估活动:即Alpha阶段与Beta阶段的任务安排与执行情况评估。在Alpha阶段中,参与者通常会在软件开发环境中完成一系列功能验证任务,或者模拟真实使用场景下的综合性能检测;而Beta阶段则是通过多维度的实际使用环境来评估产品的稳定性与功能性表现,并根据收集到的具体反馈信息对存在的问题进行全面分析并提出改进方案

重要性编辑

该方法的主要目标在于保证系统性能达到预期指标的同时,在多个关键性能指标上表现优异,并通过优化提升了系统的稳定性与可靠性水平。为了达到上述目标,在实施该方法的过程中需要特别关注以下几点:首先,在系统设计阶段就要充分考虑系统的可扩展性;其次,在系统运行阶段需要持续监控系统的各项性能参数;最后,在系统维护阶段需要及时修复可能出现的问题并采取预防措施避免潜在问题的发生。

最优的时间安排是将软件测试安排在软件设计与编码完成后,并在系统开发初期进行。考虑到开发团队需要完成的任务包括发现潜在问题、预防缺陷产生以及关注用户体验等多个方面,因此,在整个项目的生命周期中,实施有效的质量保证措施至关重要。例如,在系统架构设计阶段以及代码编写过程中逐步融入质量检测流程。

在这里插入图片描述‘’

313782132

313782132

313782132

在这里插入图片描述

另外还有面试, 面试通常分为专业技能测试和个人能力测试, 少数情况下可能会采用线上组合面试的形式, 个别企业在招聘流程中会设置专业能力和职业素养的双维度评估, 总体而言, 专业技能测试主要考察应聘者的专业知识与技能水平, 在个人能力测试中主要关注应聘者的综合素质及其家庭背景是否符合公司的要求, 通常情况下, 技能测试通过后进入个人能力测试环节时通常没有问题, 即使是少数企业也会对个人能力测试合格者进行进一步筛选, 这种筛选通常是基于候选人的综合表现进行的

继续努力!你们都是合格的好孩子!如果你能制定详细计划,在路上肯定比在起点等待更好的结果。

事必有法,然后有成。

全部评论 (0)

还没有任何评论哟~