软件测试

什么是软件测试

使用技术手段验证软件是否满足使用需求的过程。

软件测试是确保软件质量和可靠性的重要过程。它涉及对软件系统进行评估,以发现其中的错误、缺陷和问题,并确保软件符合规范和用户需求。

image-20250307113640038

软件测试目的

减少软件缺陷(bug),保障软件质量

软件测试工程师职责

1.找缺陷, 提交缺陷, 跟踪缺陷.

  1. 运行程序,执行测试用例,进行功能测试

  2. 设计并编写测试用例, 用例评审等工作.

  3. 测试总结, 制作测试报告.

  4. 测试计划和测试方案的编写.

测试主流技能

功能测试

(可以称为前端测试)

测试主要验证程序的功能是否满足需求

image-20250307114153805

接口测试

(绕过前端校验,直接对后端接口进行测试)

接口测试:通过工具直接对后端服务的测试,是服务端性能测试的基础,是测试工程师的必备技能.

image-20250307114245241

自动化测试

接口测试:通过工具直接对后端服务的测试,是服务端性能测试的基础,是测试工程师的必备技能

image-20250307114338316

接口测试文档: 又称为API文档,是由后端开发编写,用来描述接口信息的文档。

image-20250307114416551

接口测试主要的三步

a)接口文档解析

b)接口用例编写

c)使用工具执行接口测试用例

接口测试的好处:

1.测试前置,提前测试(在界面没有开发好的情况下就可以测试)

2.能测到功能测试测不出来的问题(接口测试可以绕过一些验证)3.接口测试更容易实现自动化测试

自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程,通过执行程序语言编制的测试脚本自动地测试软件.

(就是把认为测试改为机器测试,效率高)

image-20250307114608530

性能测试

使用测试工具模拟多人使用软件,查找服务器缺陷

image-20250307114645231

测试分类

按阶段分

单元测试

针对程序源代码进行测试

其中的一个接口进行测试

集成测试

又称接口测试,针对模块之间访问地址进行测试。

模块之间的测试,组合测试

系统测试

对整个系统进行测试包括功能、兼容、文档等测试。

对系统整个流程进行测试

验收测试

主要分为内测、公测,使用不同人群来发掘项目缺陷。

使用不同的场景进行测试

按代码可见度划分

黑盒测试

不关注源代码,针对程序UI功能进行测试。(也可以称为功能测试,前端测试)

image-20250307115046776

灰盒测试

针对程序部分代码进行测试(接口)

image-20250307115119231

例如对:SpringBoot的一个接口进行测试

白盒测试

针对程序源代码进行测试,例如程序员在开发期间对自己程序的debug,junit测试等.(后端代码完全暴露,没有前端代码)

image-20250307115200896

质量模型

功能性

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

前端功能

性能

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

兼容性

软件产品质量属性中的兼容性是指软件产品在共享软件或者硬件的条件下,产品、系统或者组件能够与其他产品、系统或组件交换信息,实现所需功能的能力。(软件在其他环境下,或者新增功能是否还可用)

易用性

产品被理解、学习、使用和吸引用户的能力。(易懂、易学、易用、漂亮)

可靠性

指在特定条件下使用时,软件产品维持规定的性能级别的能力。可靠性三要素:规定的环境、规定的时间、规定的性能。

安全性

是指软件产品或系统保护信息和数据的程度,其可使用户、产品或系统具有与其授权类型、授权级别一致的数据访问程度.

(数据的安全)

从产品设计的角度来说,无论产品的目标对象是什么,形态是什么,都至少需要具备如下功能(又称产

品隐藏的安全需求)来满足基本的安全属性。

1)认证和授权功能:产品、系统、组件需要通过认证才能访问,通过授权来确认访问者的访问权限,

不能非法越权、提权。

2)加密功能:数据在存储和传输过程中均需要加密。

3)审计功能:提供审计功能,并能将审计信息存储足够长的时间(如6个月)。

维护性

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

(可被修改改进的能力,扩展功能的能力)

可移植性

从一种环境转移到另一种环境的能力。(这里的环境可以理解为硬件、软件或者系统等不同的环境)

软件移动到其他的环境依然可用

软件测试流程(阶段)

image-20250307203343647

1.需求评审

软件测试的第一步是理解软件的需求。测试团队需要详细了解软件的功能和性能需求,以便制定相应的测试计划和策略。

(确定需求)

2.编写测试计划

在需求分析的基础上,测试团队制定测试计划,确定测试的范围、目标、资源、时间表和责任人。测试计划通常包括测试的目标、测试方法、测试环境、测试数据、风险评估等内容。

(分工)

3.用例设计

测试用例设计阶段涉及制定测试用例和测试数据,以覆盖软件的各种功能和场景。测试用例是描述

测试步骤、输入数据、预期结果和执行条件的文档,用于验证软件是否符合预期行为。

(编写测试用例)

4.用例执行

在测试执行阶段,测试团队按照测试计划和设计的测试用例执行测试。他们运行测试用例,记录测试结果,并跟踪发现的缺陷。

(执行测试用例)

5.缺陷管理

测试团队跟踪和管理发现的缺陷。这包括记录缺陷、分配优先级、分配责任人、跟踪修复进度,并验证修复后的缺陷。

(发现缺陷,并记录缺陷,解决缺陷)

6.测试报告

测试完成后,测试团队生成测试报告,总结测试结果和发现的问题。测试报告通常包括测试覆盖率、通过率、失败率、缺陷统计等信息,以便项目团队和利益相关者了解软件的质量状况。

(编写测试报告,统计数据)

回归测试

随着软件的更新和修改,测试团队需要执行回归测试,确保已修复的缺陷没有引入新的问题,并验证软件的稳定性和功能完整性。

(缺陷修复,重新再次测试)

持续改进

软件测试是一个持续改进的过程。测试团队应该定期评估测试过程和方法,识别改进的机会,并不断优化测试策略和流程,以提高测试效率和软件质量。

(不断优化)

测试用例

基本概念

是为特定目的而设计的一组由测试输入、执行条件以及预期结果组成的文档。它是软件测试的核

心,用于验证软件是否满足需求规格说明书中的要求,以及找出软件中的缺陷。

简而言之: 是为测试项目而设计的执行文档.

(测试用例的文档,里面还有需要测试的主要的测试用例)

测试用例的作用

防止漏测

实施测试的标准

指导测试执行

提高测试效率

促进团队协作和沟通

用例设计编写格式

  1. 测试用例编号:唯一标识测试用例的编号,一般由项目 模块 编号组成。

  2. 测试标题:简要描述测试用例的目的。

  3. 测试模块:功能所属模块。

  4. 优先级:测试用例的优先级,通常用于确定测试执行的顺序。

  5. 前置条件:执行测试前必须满足的条件或状态。

  6. 测试步骤:执行测试的详细步骤。

  7. 测试数据: 实施测试时用到的哪些特殊数据。

  8. 预期结果:按照测试步骤执行后,系统应呈现的正确结果或状态。

  9. 测试状态:如未开始、进行中、已完成等。

  10. 负责人:负责编写和执行该测试用例的测试人员。

测试用例设计的基本方法

1.等价类划分法

在测试过程中,我们不可能用穷举法将每一种输入情况都进行验证。

所以需要进行分类,如果某一类中其中一个的输入不能导致问题发生,那么集合中其它输入条件进行测试也不可能发现错误。(代表某一类的例子(测试用例),这个没有问题其他跟这个测试用例,相同类型也一定不会有问题)

image-20250307204439371

设计测试用例的时候要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。

案例: 用户名 6--10位自然数和大小写字母组合

image-20250307204546046

2.边界值分析法

边界值分析法就是对输入或输出的边界值进行测试的一种测试方法。

通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。

(在等价类划分法上面分离出来的,边界测试)

长期的测试工作经验告诉我们,大量错误是发生在输入或输出范围的边界上,而不是发生在输入输出范

围的内部。

因此针对各种边界情况设计测试用例,可以查出更多的错误。

例如:

需求1:判断输入的数据是否小于-99或者大于99,如果小于-99或大于99给出错误提示.

需求2:通过边界值法验证标题长度的合法性,标题长度大于0,小于等于30个字符.

需求3:通过边界值法验证QQ号码的合法性 ,6~12位自然数

3.判定表法

等价类,边界值分析法主要关注单个输入类条件的测试,并未考虑输入条件之间的各种组合、输入条件与

输出结果之间有相互制约关系的测试。

案例:

验证“若用户欠费或者关机,则不允许主被叫”功能的测试。

判定表法定义:是一种以表格形式表达多条件逻辑判断的工具。

解决的问题:解决多条件有依赖关系测试。

1.明确需求

2.画出判定表

3.根据规则编写测试用例

image-20250307204803897

(多个条件的组合进行测试)

4.场景法

定义:场景法也可以叫流程图法,是用流程图描述用户的使用场景,然后通过覆盖流程路径来设计测试用例。

解决的问题: 多个功能组合起来使用情况。平时测试的都是单个功能点进行测试,容易忽略多个功能的

组合测试。

案例:ATM取款

(利用流程图进行一步步测试,直到完成整个流程)

image-20250307205012790

流程梳理

image-20250307205041832

测试用例

image-20250307205102285

缺陷管理

缺陷定义

软件在使用过程中存在的任何问题都叫软件的缺陷,简称bug。(只要软件在使用的过程中,出现的任何问题就为软件缺陷(bug))

缺陷判定标准

软件未实现需求,说明书中明确要求的功能-少功能 (缺功能)

软件出现了需求,说明书中指明不应该出现的错误-功能错误(功能实现错误)

软件实现的功能超出需求,说明书指明的范围-多功能 (画蛇添足)

软件未实现需求, 说明书中虽未明确指明但应该实现的要求-隐性功能错误 (没有说但是必须要实现的功能(常识功能))

软件难以理解,不易使用,运行缓慢,用户体验不好-不易使用 (不好用)

缺陷产生原因

image-20250307205402972

1、需求文档

2、架构设计

3、编码实现

4、环境(硬件、软件)

image-20250307205501867

缺陷核心内容

image-20250307205522949

缺陷提交要素

image-20250307205557304

缺陷类型

image-20250307205628210

缺陷管理工具

禅道

是一个国产项目任务管理工具,可以同时提供给产品,研发,测试部门使用。产品部门——构想者

研发部门——执行者

测试部门——保证者

特点:国产、免费、开源、简单、轻量级

用户登录 - 禅道

image-20250307205714052

测试工具

抓包工具

抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作,也

用来检查网络安全。抓包也经常被用来进行数据截取等。(截取请求或响应数据进行分析)

Charles

是一款代理服务器,通过过将自己设置成系统(电脑或者浏览器)的网络访问代理服务器,然后截取请

求和请求结果达到分析抓包的目的。

image-20250307205846509

浏览器开发者工具(查看请求和响应)

image-20250307205910949

postman(国外)是一个很强大的 API调试、Http请求的工具

image-20250307205940044

apipost(国产)(会这个就行和PostMan差不多)

image-20250307210040023

jmeter (对服务器测试的工具)

JMeter是Apache 组织使用 Java开发的一款测试工具:

1、可以用于对服务器、网络或对象模拟巨大的负载

2、通过创建带有断言的脚本来验证程序是否能返回期望的结果

image-20250307210128331

image-20250307210140922

测试过程模型

开发瀑布模型

image-20250307210237081

V模型

V模型(V-model)是一种用图像表示系统发展生命周期的模式,可以产出严谨的发展生命周期模型以

及专案管理模型。

V模型列出了在产品开发时需进行的各个阶段,以及各阶段对应的产出。

V模型是最具有代表意义的测试模型。V模型是软件开发瀑布模型的变种,它反映了测试活动与分析和设

计的关系 .

软件 测试V模型:

image-20250307210339891

W模型

W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代

表测试与开发过程,测试与开发是并行关系。

image-20250307210419687

W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测

试,也就是说,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。例如,需求分析完成

后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试

也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进

度。(开发和测试是同步的)

软件测试案例

案例1:微信红包

主流程可以分为: 发放 领取 退回

红包金额限制

有效等价类: 0.01~200

无效等价类:小于0.01 大于200

红包金额输入不能为空

有效等价类:输入不为空

无效等价类:输入为空

红包发放数量

有效等价类: 1-100

无效等价类: 小于1, 大于100

银行卡,零钱余额是否不足

用户领取状态,一个红包,一个用户只能领取一次

未领取红包是否在**24小时内退回**

案例2:轮播图

轮播图(Banner)功能需求

1.显示 1-5 张 banner 图片,自动轮播,3 秒切换一张,如果只有 1 张 banner图片,则不轮播。

2.鼠标悬停在图片上时,停止轮播。

3.实心为当前图,可以点击跳转。

4.可点击左右切换,每次切换一张图。

image-20250307210640244

image-20250307210658308

案例3:购物车

1.购物车没有商品,提示马上去购物。

image-20250307210736134

2.购物车有商品,显示购物车内商品内容

image-20250307210810899

a)商品对应价格应和加入购物车时一致。

b)小计:正确计算=单价*数量。

c)已选择:n 件商品,其中 n 为选中商品件数总和。

d)合计:购物车中商品总价。

e)点击商品图片或者名称跳转商品详情页面。

f)点击【去结算】跳转填写核对订单页

3.购物车添加商品

image-20250307210927780

a)从商品显示页面中通过【加入购物车】向购物车中添加商品。

b)商品购买数量可以直接填写,也可以通过数字旁的【+】号和【-】号进行编辑。

c)单个商品添加购物车数量不能小于1,同时不能大于200.

d)单个商品添加购物车数量不能大于商品库存数量。

e)当商品购买数量为1时,【-】号按钮失效。

image-20250307210948230

f)当商品购买数量等于200或者库存数量时,【+】号按钮失效。

image-20250307211010065

4.购物车删除商品

a)点击商品栏里操作中的【×】号后,购物车中对应商品被删除。

b)勾选多个商品,点击【删除选中商品】,购物车中对应的选中商品被删除。

c)勾选【全选】时,所有商品被选中,点击【删除选中商品】,所有商品均被删除。

软件测试常见问题

说说你对测试的理解

了解哪些软件测试的概念

你觉得如何做好测试

测开都做什么了解吗

测试计划都包含什么内容

为什么选择测试开发岗,觉得测试比开发简单吗

接口测试如何做的,测接口会从哪些方面考虑

性能测试如何做的

了解什么是测试用例吗?你有没有编写过测试用例

测试难点,是如何测试分析的

针对一个POST请求登录接口,用户名和密码为必填项,验证码非必填,设计测试用例

提交一个bug所需要哪些信息(缺陷管理)

介绍一下压力测试做些什么

白盒测试和黑盒测试的区别

用过接口测试工具吗?jmeter用过吗?

聊最近做的项目,具体的某个功能如何测试的

场景

现在你负责一个项目,项目小组,原计划开发5天,测试两天,但是到指定日期开发还是没有提测,

导致测试延误你该怎么办

基于项目功能设计一些极端的场景用例

给一个外卖下单的场景,怎么进行测试

购买火车票的用例设计

淘宝购物车的用例设计

支付宝人脸识别支付怎么测试,功能上具体怎么测试。

登录和注册这两个模块的测试用例你会怎么设计?

怎么测试qq的登录功能?

对登陆账号0-16(0开16闭)怎么测试

测试ATM取款功能,已知取款数只能输入正整数,每次取款数要求是100的倍数且不能大于500。请

针对这个需 求,提取测试点

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐