测试基础-软件测试必备知识总结

🍅 视频学习:文末有免费的配套视频可观看

🍅 点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

什么是软件测试?

软件测试是在软件产品发布之前检查其质量、功能和性能的过程。为了进行软件测试,测试人员要么手动与软件交互,要么执行测试脚本来查找错误和错误,确保软件按预期工作。软件测试也是为了查看业务逻辑是否得到满足,或者需求中是否存在任何需要立即解决的缺失差距。 

软件测试是软件开发生命周期的重要组成部分。如果没有它,可能无法检测到可能对使用软件产生负面影响的应用程序错误。随着时间的推移,随着应用程序变得越来越复杂,软件测试活动也不断发展,引入了许多新技术和方法。 

为什么软件测试很重要?

软件开发之路是坎坷的,产品总是容易出现bug和缺陷。在将软件发布到市场之前,有必要确保软件按预期工作。以下是软件测试至关重要的几个原因:

1.检测缺陷供开发团队解决

软件测试的最终目标始终是发现错误和缺陷。现代软件是由高度互连的组件构建的,这些组件必须无缝协作才能提供预期的功能。一个损坏的组件可能会产生连锁反应并破坏整个应用程序。损坏的代码越早修复,影响就越小。良好的测试流程可确保始终按时交付更高质量和更可靠的产品。

2. 保持和提高产品质量

产品质量不仅仅是没有错误。当我们想到质量时,我们会想到不仅满足 而且 超越 客户期望的特性 。人们期望应用程序能够执行其预期的功能,但只有当它超出这些期望时,它才能达到“高质量”的状态。从这个角度来看,软件测试是质量的关键,原因如下:

  • 回归测试,确保添加新代码后质量始终保持一致的标准

  • 定期进行可用性、兼容性和安全性测试,以确保软件的这些方面得到良好的检查

  • 为开发团队提供有关产品质量的见解,以不断更新文档

  • 识别并解决错误以使软件更加可靠

  • 确定需要优化和改进的领域

  • 确保软件功能按预期工作

  • 确保软件与用户反馈保持一致

  • 确保软件跨平台和环境的兼容性

  • 维持

  • 提高

3.提高客户的信任度和满意度

严格的软件测试的结果是提高了客户的信任度。虽然期望一个完全没有错误的软件是不现实的,但拥有一个稳定、可靠、不断满足客户需求的产品最终将带来积极的长期用户体验。

4. 识别可以节省公司成本甚至人员生命的漏洞

金融、医疗、法律软件或 YMYL(Your Money Your Life)领域的任何类型的软件都会处理敏感信息。为这些领域构建的软件应用程序不能承受崩溃、数据损坏或系统故障,即使是小规模的,因为很多人的生活都会受到影响。这些软件中的错误可能会造成不可逆转的损害,并使公司面临诉讼风险。软件测试的目的是保护公司免受此类风险。

软件测试的类型

不同类型的软件测试可以根据测试目标、测试策略和可交付成果分为多个类别 。目前,质量保证专业人员经常使用两种主要的软件测试类型,包括:

  • 功能测试一种软件测试,用于验证应用程序是否提供预期输出。

  • 非功能测试:一种软件测试,用于验证应用程序的非功能方面(例如稳定性、安全性和可用性)是否按预期工作。

这些总括术语涵盖了广泛的测试类型,每种测试类型仅服务于特定目的。例如,功能测试有3种主要类型:

  • 单元测试:对应用程序中的单个单元进行的一种测试

  • 集成测试:对应用程序单元组进行的一种测试,以了解它们如何协同工作

  • 验收测试:一种根据现实场景评估应用程序的测试

同样,在非功能测试下,也有许多常见的测试类型,每种测试类型都有不同的目标和策略:

  • 安全测试:检查软件是否安全并防止未经授权的访问或威胁的测试。

  • 性能测试:评估软件在速度、稳定性和资源使用方面的性能的测试。

  • 负载测试:一种性能测试,用于评估软件如何处理预期负载和峰值负载。

  • 可用性测试:衡量软件的用户友好性和易用性的测试。

  • 兼容性测试(或跨浏览器测试:确保软件在不同平台、设备或环境下正常工作的测试。

使用哪种类型的软件测试的决定取决于测试场景、资源可用性和业务需求。

软件测试方法

QA专业人员有两种不同的软件测试方法:手动测试与自动化测试。每种方法都有其自身的优点和缺点,测试人员必须仔细考虑这些优点和缺点,以最大限度地利用测试资源。

  • 手动测试: 由人工手动测试软件,无需任何自动化工具或脚本

  • 自动化测试使用自动与软件交互的工具或脚本来测试软件。测试人员只需要执行脚本并让它完成其余的测试。

软件测试生命周期

许多软件测试计划都遵循通常称为软件测试生命周期(STLC)的过程。STLC由6项关键活动组成,以确保满足所有软件质量目标,如下所示:

图片

1.需求分析

在此阶段,软件测试人员与参与开发过程的利益相关者合作,以确定和理解测试需求。此次讨论的见解将合并到需求可追溯性矩阵 (RTM) 文档中,成为构建测试策略的基础。

开发人员和测试人员在需求分析阶段理解的内容是不同的。开发人员专注于将需求转化为代码,包括架构、设计方法和技术,而测试人员则检查代码的可测试性。他们确定如何将代码分解为更小的部分、场景和测试用例。在设计阶段确保可测试性至关重要,以避免可能导致无效软件测试的模糊需求。

之后,测试人员和开发人员必须协作以了解实现业务需求的可行性。如果在给定的约束、限制或资源范围内无法满足这些要求,他们将需要与业务方(业务分析师、项目经理和/或客户)讨论以进行调整或寻求替代解决方案。

2. 测试计划

经过彻底分析后,创建测试计划。测试计划涉及与相关利益相关者就测试策略进行协调:

  • 测试目标:定义功能、可用性、安全性、性能和兼容性等属性。

  • 输出和可交付成果:记录要生成和监控的测试场景、测试用例和测试数据。

  • 测试范围:确定应用程序的哪些区域和功能将被测试(范围内),哪些区域和功能不会被测试(范围外)。

  • 资源:估算测试工程师、手动/自动测试工具、环境和测试数据的成本。

  • 时间表:为特定于测试的活动以及开发和部署建立预期里程碑。

  • 测试方法:评估要使用的测试技术(白盒/黑盒测试)、测试级别(单元、集成和端到端测试)和测试类型(回归、健全性测试)。

为了更好地控制项目,软件测试人员可以添加应急计划来调整变量,以防项目朝意外方向发展。

3. 测试用例开发

定义了要测试的场景和功能后,我们将编写测试用例。对于手动测试用例,可以使用 Xray 等测试管理工具来记下所执行操作的详细信息、结果、发现以及开发人员重现这些错误的建议。对于自动化测试,可以使用 Katalon、Ranorex 或 TestComplete 等工具提供的直观 UI。Selenium、Cypress 和 Playwright 等开源选项在构建自定义框架方面也很受欢迎。

4. 测试环境设置

此步骤可以与测试用例开发并行完成。测试环境是测试应用程序的软硬件配置,包括数据库服务器、前端运行环境、浏览器、网络、硬件等。QA团队将为测试环境开发规划资源使用。这种做法确保了资源的有效分配。以下是设置测试环境时需要考虑的项目的快速清单:

  • 验证硬件规格(CPU、RAM、存储)。

  • 检查软件依赖性(操作系统、库、框架)。

  • 验证网络要求(防火墙规则、端口、连接)。

  • 确保测试环境与生产环境分开。

  • 使用网络隔离、虚拟化或专用硬件。

  • 确定相关的测试场景和数据要求。

  • 创建代表性测试数据集。

  • 考虑数据隐私和安全法规。

  • 安装必要的操作系统和软件。

  • 设置数据库、Web 服务器和其他所需组件。

  • 配置网络设置、防火墙和安全措施。

  • 建立恢复机制,将环境恢复到已知状态。

  • 实施定期备份以防止数据丢失或配置问题。

  • 建立恢复机制,将环境恢复到已知状态。

  • 实施定期备份以防止数据丢失或配置问题。

5. 测试执行

带着明确的目标,QA 团队编写测试用例、测试脚本,并准备执行所需的测试数据。

测试可以手动或自动执行。当需要人工的洞察力和判断力时,手动测试是合适的,而自动化测试更适合于进行细微调整的重复流程。执行测试后,将跟踪发现的任何缺陷并将其报告给开发团队,开发团队会立即解决这些问题。

6. 测试周期结束

这是软件测试的最后阶段。软件测试人员将聚集在一起分析他们从测试中发现的内容,评估有效性并记录关键要点以供将来参考。定期评估 QA 团队的软件测试流程至关重要, 这样才能保持对 STLC 所有阶段的所有测试活动的控制。

流行的软件测试模型

测试模式的演变与软件开发方法的演变是并行的。

1.V型 

过去,QA团队必须等到最后的开发阶段才能开始测试。测试质量通常很差,开发人员无法在产品发布时及时排除故障。 

V 模型通过让测试人员参与开发的每个阶段来解决这个问题。每个开发阶段都分配有相应的测试阶段。该模型与几乎过时的 瀑布测试方法配合得很好。

图片

2. 测试金字塔模型

随着技术的进步,瀑布模型逐渐让位于广泛使用的敏捷测试方法。因此,V 模型也演变为测试金字塔模型,直观地表示由3部分组成的测试策略。

图片

大多数测试都是单元测试,旨在仅验证单个组件。接下来,测试人员将这些组件分组并将它们作为一个统一的实体进行测试,以了解它们如何交互。在这些阶段可以利用自动化测试来实现最佳效率。 

最后,在UI测试阶段,测试人员关注应用程序的UX和UI。

3. 蜂窝模型

蜂巢模型是一种现代的软件测试方法,其中集成测试是主要关注点,而单元测试(实现细节)和 UI 测试(集成)受到的关注较少。随着组织转向云基础设施,该软件测试模型反映了以 API 为中心的系统架构。

图片

软件测试中什么可以自动化?

当手动测试变得适得其反时,可以利用自动化软件测试来测试大量软件组件。自动化带来了高投资回报率,并允许 QA 团队执行更关键的测试活动。如果满足以下条件,测试用例就有资格进行自动化:

  • 它是重复的,测试步骤不太可能改变

  • 手动执行非常耗时/不可能

  • 它运行在多个软件/硬件平台上

  • 很容易出现人为错误

在实践中,回归测试通常是自动化的重中之重,因为它的本质是重复执行相同的测试。自动化可以加快回归测试的执行速度,使QA团队能够专注于其他关键任务。

即使测试人员并不真正需要自动化测试, 自动化测试工具仍然可以在许多其他领域为他们提供支持,例如测试报告和数据驱动决策的分析。他们还提供集中测试管理,团队可以在许多开发和测试阶段进行协作。

手动测试与自动测试:选择哪一种?

在开始任何软件测试项目时,测试团队和开发团队必须坐在一起制定测试计划,概述哪些区域需要手动测试以及哪些区域需要利用自动化测试。混合方法应该为测试人员提供两种类型的好处,如下比较表所示:

图片

自动化测试会让手动测试过时吗?

自动化测试将软件测试提升到一个新的水平,使QA团队能够更快、更高效地进行测试。那么它会让手动测试成为过去吗?

短期的答案是“不”。

长期的答案是“也许”。

手动测试在软件测试领域仍然占有一席之地。需要处理:

  • 探索性测试:测试人员根据他们的专业知识和知识同时设计和执行测试。

  • 临时测试:在没有预定义测试用例或脚本的情况下执行测试,依赖于测试人员的直觉和创造力。

  • 可用性测试:评估用户友好性和整体用户体验,以识别可用性问题并提高软件可用性。

我们还需要人工评估应用程序的用户体验、监督自动化测试并在必要时进行干预。然而,人工智能技术正在逐渐改变这一格局。许多自动化软件测试工具中都添加了智能测试功能,以大大减少人工干预的需要。 

图片

未来,我们有望实现自主测试,机器完全控制并执行所有测试活动。除了开发测试算法之外,绝对不需要人工。 软件测试工具现已集成了 ChatGPT(一种突破性的人工智能聊天机器人),使我们更接近这种自主功能。

目前常用的测试工具都有哪些?如何选择测试工具?我们将在接下来的文章中进行分享。

同时,在这我为大家准备了一份软件测试视频教程(含面试、接口、自动化、性能测试等),就在下方,需要的可以直接去观看,也可以直接【点击文末小卡片免费领取资料文档】

软件测试视频教程观看处:

【2024最新版】Python自动化测试15天从入门到精通,10个项目实战,允许白嫖。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/416118.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读】GPT4Graph: Can Large Language Models Understand Graph Structured Data?

文章目录 0、基本介绍1、研究动机2、准备2.1、图挖掘任务2.2、图描述语言(GDL) 3、使用LLM进行图理解流程3.1、手动提示3.2、自提示 4、图理解基准4.1、结构理解任务4.1、语义理解任务 5、数据搜集5.1、结构理解任务5.2、语义理解任务 6、实验6.1、实验设…

基于SpringBoot Vue自习室管理系统

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

解决Qt的release构建下无法进入断点调试的问题

在工作的时候遇到了第三方库只提供release版本的库的情况,我需要在这基础上封装一层自家库,在调试的时候遇到如下问题,但是在Qt环境下,release的库只能在进行release构建和调试。 卡在了一直进不了断点的情况。提示内容如下&#…

2024-01-17(SpringCloud)

1.使用openFeign的itemClient接口去做远程调用其他微服务中的接口。但我们直接使用了itemClient接口,而不是该接口的实现类,说明我们是使用该接口的代理对象帮我们做远程调用的。这个代理对象是invocationHandler来生成的。 2.openFeign底层发起远程调用…

解决js计算精度问题

问题 浮点数,常用的办法是四舍五入保留2位小数来解决。但是在向上、向下保留小数的时候,比如:0.10.20.30000000000000004,向上保留2位小数就变成了0.31。 大整数,在超出Number的最大安全整数时,计算也会存…

Tide Quencher 8WS-Amine,TQ8WS-胺,可用于特定荧光信号的检测

您好,欢迎来到新研之家 文章关键词:Tide Quencher 8WS Amine,TQ8WS amine,Tide Quencher 8WS NH2 ,TQ8WS NH2,Tide Quencher 8WS 胺,TQ8WS 胺 一、基本信息 产品简介:The fluores…

MySQL的基本查询(附案例)

目录 前言 Create(创建) 单行数据全列插入: 多行数据指定列插入: 插入否则更新: 替换: Retrieve(读取) SELECT 列: 全列查询: 指定列查询&#xff1a…

DMA技术在STM32中优化UART、SPI和I2C通信性能的研究与实现

DMA(Direct Memory Access,直接存储器访问)技术可以在STM32微控制器上优化UART、SPI和I2C等通信性能。DMA可以实现数据的高速传输,减轻CPU的负担,提高系统性能。在本篇文章中,我将探讨DMA技术在STM32中优化…

【数据开发】BI数据报表之数据可测试性设计与分析

文章目录 1、什么是BI&数据报表2、什么是可测试性3、数据测试与方法3.1 数据准确性与对比(重要)3.2 数据安全性 1、什么是BI&数据报表 数据报表是一种数据可视化工具 用于将数据以图表、表格和其他可视化形式呈现出来,以便用户可以…

学习响应式编程中遇到的奇奇怪怪的问题

spring项目无法启动 Description: Web application could not be started as there was no org.springframework.boot.web.reactive.server.ReactiveWebServerFactory bean defined in the context. Action: Check your application’s dependencies for a supported react…

Linux的网络文件共享服务之FTP服务

一.存储类型 1.1 存储类型分为三种 直连式存储:Direct-Attached Storage,简称DAS 存储区域网络:Storage Area Network,简称SAN(可以使用空间,管理也是你来管理) 网络附加存储:Net…

【Python_PySide6学习笔记(三十一)】基于PySide6实现自定义串口设备连接界面类:可实现串口连接断开、定时发送等功能

基于PySide6实现自定义串口设备连接界面类:可实现串口连接关闭、定时发送等功能 基于PySide6实现自定义串口设备连接界面类:可实现串口连接关闭、定时发送等功能前言一、界面布局二、串口相关功能实现三、完整代码四、调用方法五、实现效果基于PySide6实现自定义串口设备连接…