常用测试理论基础

article/2025/9/23 9:30:37

测试理论基础

什么是软件测试?

答:软件测试是在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估。


软件测试的目的是什么?

答:软件测试的目的在于(1)发现软件的缺陷和错误(2)保证软件的质量确保能够满足用户以及产品的需求

(标重点)软件测试的目的是为了找bug,并不是验证软件没有bug


黑盒与白盒的定义

  • 白盒:

白盒测试是测试人员要了解程序结构和处理过程,按照程序内部逻辑测试程序,检查程序中的每条通路是否按照预定要求正确工作.它主要的针对被测程序的源代码

不太需要关注程序功能

  • 黑盒:

黑盒测试又称为功能测试或数据驱动测试)是把测试对象看作一个黑盒子。利用黑盒测试法进行动态测试时,需要测试软件产品的功能,不需测试软件产品的内部结构和处理过程


白盒测试用例设计常用方法

答:

静态测试:不用运行程序的测试,如文档测试、代码检查等

动态测试:需要执行代码,接口测试、覆盖率分析、性能分析、内存分析等。

逻辑覆盖法:主要包括语句覆盖,判断覆盖,条件覆盖,判断/条件覆盖,条件组合覆盖,路径覆盖等。

六种覆盖标准发现错误的能力由弱到强的变化:

  1. 语句覆盖,每条语句至少执行一次。
  2. 判断覆盖,每个判断的每个分支至少执行一次。
  3. 条件覆盖,每个判段的每个条件应取到的各种可能的值。
  4. 判断/条件覆盖,同时满足判断覆盖条件覆盖。
  5. 条件组合覆盖,每个判定中各条件的每一种组合至少出现一次。
  6. 路径覆盖,使程序中每一条可能的路径至少执行一次。

黑盒测试用例设计常用方法

答:等价划分类,边界值分析,错误推测法判定表分析法、因果图法、正交试验设计法、场景法、功能图分析法等。

等价类:等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序
中的错误都是等效的.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.
等价类划分可有两种不同的情况:有效等价类和无效等价类.

边界值分析法:边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.(内点,上点,离点)

错误猜测法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法.

判定表分析法:等价类未考虑输入条件之间的联系,相互组合等.无效类每个用例只出现一次,不能覆盖多个无效等价类并存的情况。不同的组合用二进制解决。(条件桩和动作桩)

因果图法:输入之间有相互的组合关系,且输入和输出之间有相互的制约和依赖关系,是判定表的复杂版,最终生成的就是判定表,根本上等价

正交表分析法:有时候,大量的参数的组合而引起测试用例数量上的激增,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性。(打印机)

场景法:指根据用户场景来模拟用户的操作步骤,一般借助流程图来确定基本流和备选流(淘宝下单流程)。

状态图法:针对流程分析法不跨多个界面,状态图法保证每一个功能/状态的可达项都被覆盖,但对无效的路径无法覆盖(MP3).


什么是灰盒测试?

答:灰盒测试,是介于白盒测试与黑盒测试之间的一种测试,灰盒测试多用于集成测试阶段。目前互联网的测试大多数都是灰盒测试。


列举出你所了解的软件测试方式

答:

按照软件的生命周期划分:单元测试、集成测试、系统测试、回归测试、验收测试

按照测试关注点划分:功能测试、性能测试、稳定性测试、易用性测试、安全性测试

按照测试实施者划分:开发方测试(α测试)、用户测试(β测试)、第三方测试

按照技术/测试用例设计划分:白盒测试、黑盒测试、灰盒测试

按照分析方法划分:静态测试、动态测试

按照测试执行方式划分:手工测试、自动化测试

按照测试对象划分:程序测试、文档测试


什么是单元测试

答:完成最小的软件设计单元(模块)的验证工作,确保模块被正确编码。通常情况下是白盒的,对代码风格和规则、程序设计和结构、业务逻辑等进行静态测试,及早发现和解决不易显现的错误。


单元测试、集成测试、系统测试、验收测试、回归测试这几步最重要的是哪一步?

答:这些测试步骤分别在软件开发的不同阶段对软件进行测试,我认为对软件完整功能进行测试的系统测试很重要,因为此时单元测试和集成测试已完成,系统测试能够对软件所有功能进行功能测试,能够覆盖系统所有联合的部件,是针对整个产品系统进行的测试,能够验证系统是否满足需求规格的定义,因此,我认为系统测试很重要。


集成测试和系统测试的区别,以及应用场景分别是什么?

答:

区别:

  • 执行顺序:先执行集成测试,待集成测试问题修复后,再做系统测试。
  • 用例粒度:集成测试比系统测试用例更详细,集成测试对于接口部分也要重点写,而系统测试的用例更接近用户接受的测试用例。

应用场景:

  • 集成测试:一般包含接口测试,对程序的提测部分进行测试。测试方法一般选用黑盒测试和白盒测试相结合。
  • 系统测试:针对整个产品的全面测试,既包含各模块的验证性测试和功能性测试,又包含对整个产品的健壮性、安全性、可维护性及各种性能参数的测试。测试方法一般采用黑盒测试法。

测试开发需要哪些知识?具备哪些能力?

答:

需要的知识:

软件测试基础理论知识,如黑盒测试、白盒测试等;

编程语言基础,如C/C++、java、python等;

自动化测试工具,如Selenium、Appium等;

计算机基础知识,如数据库、Linux、计算机网络等;

测试卡框架,如JUnit、Pytest、Unittest等。

具备的能力:

业务分析能力、缺陷洞察能力、团队协作能力、专业技术能力、逻辑思考能力、问题解决能力、沟通表达能力和宏观把控能力。


请说一下手动测试与自动化测试的优缺点

答:

手工测试缺点:

  1. 重复的手工回归测试,代价昂贵、容易出错。
  2. 依赖于软件测试人员的能力。

手工测试的优点:

  1. 测试人员具有经验和对错误的猜测能力。
  2. 测试人员具有审美能力和心理体验。
  3. 测试人员具有是非判断和逻辑推理能力。

自动化测试的缺点:

  1. 不能取代手工测试。
  2. 无法运用在测试复杂的场景
  3. 手工测试比自动化测试发现的缺陷更多。
  4. 对测试质量的依赖性极大。
  5. 自动化测试不能提高有效性。
  6. 比手动测试脆弱,需要维护成本。
  7. 工具本身并无想象力。

自动化测试的优点:

  1. 对程序的回归测试更方便。
  2. 可以运行更多更繁琐的测试。
  3. 可以执行一些手工测试困难或不可能进行的测试。
  4. 更好地利用资源。
  5. 测试具有一致性和可重复性。
  6. 测试的复用性。
  7. 增加软件的信任度。

自动化测试的定义 前提条件 适用的测试类型

答:

定义:
自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。

前提条件:
实施自动化测试之前需要对软件开发过程进行分析,以观察其是否适合使用自动化测试。通常需要同时满足以下条件:

在这里插入图片描述
适用的测试类型:

  • 回答一:

在这里插入图片描述

  • 回答二:

在这里插入图片描述在这里插入图片描述

自动化测试的运用场景举例

答:

  1. 线上巡检(UI+接口)
  2. 简单场景监控
  3. 稳定性测试(monkey+遍历测试)

软件测试的核心竞争力是什么?

答:早发现问题发现别人无法发现的问题


测试和开发要怎么结合才能使软件的质量得到更好的保障

答:测试和开发可以按照V模型或W模型的方式进行结合。但应该按照W模型的方式进行结合比较合理。

V模型:

v.jpg

测试过程加在开发过程的后半段,比较被动。

W模型:

w.jpg

测试提前,甚至和开发是同步进行,测试不仅是程序,还包括需求和设计。W模型有利于尽早地全面的发现问题,降低软件开发的成本,风险前置。


怎么实施自动化测试(过程)

答:

  1. 首先判断项目适不适合进行自动化测试。
  2. 对项目做需求分析。
  3. 制定测试计划和测试方案。
  4. 搭建自动化测试框架。
  5. 设计或编写测试用例。
  6. 执行自动化测试。
  7. 评估。

测试的相关流程

答:

按W模型:

需求测试 -> 概要设计测试 -> 详细设计测试 -> 单元测试 -> 集成测试 -> 系统测试 -> 验收测试

我工作中实际测试流程:

需求评审 -> 技术评审 -> case评审 -> 开发自测以及冒烟测试 -> 整体提测(集成测试) -> 回归测试 -> 系统测试 -> 验收测试


测试项目具体工作是什么

答:

  1. 搭建测试环境
  2. 撰写测试用例
  3. 执行测试用例
  4. 写测试计划、测试报告
  5. 测试并提交BUG
  6. 跟踪BUG修改情况
  7. 自动化测试
  8. 性能测试、压力测试、安全测试等其他测试

BUG分级

答:两个维度去划分

  1. 按BUG严重程度划分等级:
    • blocker:系统无法执行,崩溃,或严重资源不足,应用模块无法启动或异常退出,无法测试,系统不稳定。常见的:严重花屏、内存泄漏、用户数据丢失或破坏、系统崩溃/死机/冻结、模块无法启动或异常退出、严重的数值计算错误、功能设计与需求严重不符、服务器500等。
    • critical:影响系统功能或操作,主要功能存在严重缺陷,但不会影响到系统的稳定性。常见的有:功能未实现,功能错误、系统刷新错误、数据通讯错误、轻微的数值计算错误、影响功能及洁面的错别字或拼写错误。
    • major:界面、性能缺陷、兼容性。常见的有:操作界面错误、边界条件错误、提示信息错误,长时间操作无法提示、系统未优化、兼容性问题。
    • minor/trivial:易用性及建议性的问题。
  2. 按BUG处理优先级划分:
    • immediate:马上解决
    • urgent:急需解决
    • high:高度重视,有时间马上解决
    • low:在系统发布前解决或确认可以不用解决

性能指标有哪些?

从外部看,主要有:
1.吞吐量:每秒钟系统能够处理的请求数,任务数
2.响应时间:服务处理一个请求或一个任务的耗时
3.错误率:一批请求中结果出错的请求所占比例

从服务器的角度看,性能测试关注CPU、内存、服务器负载、网络、磁盘IO

可以采用性能测试工具(WeTest服务器性能),该工具是腾讯wetest团队出品,使用起来简单方便,但测试功能相当强大,能提供10W+以上的并发量,定位性能拐点,测出服务器性能最大并发。


APP性能指标有哪些?

答:内存、CPU、流量、电量、启动速度、滑动速度、界面切换速度、与服务器交互的网络速度。


APP测试工具有哪些?

接口测试:postman

性能测试:jmeter

抓包工具:chales、fiddler

UI自动化:uiautomator2、appium、atx

稳定性测试:monkey、maxim、uicrawler、appcrawler

兼容性测试:wetest、testin

内存、cpu、电量测试:GT、soloPi

弱网测试:chales


BUG的生命周期

答:

复杂版

  1. New(新的)
  2. Assigned(已指派)
  3. Open(打开的)
  4. Fixed(已修复)
  5. Pending Reset(待测试)
  6. Reset(再测试)
  7. Closed(已关闭)
  8. Reopen(再次打开)
  9. Pending Reject(拒绝中)
  10. Rejected(被拒绝的)
  11. Postponed(延期)

简单版

  1. 创建bug
  2. 分配bug
  3. 修复完待测试
  4. 关闭
  5. 重新开启
  6. 无效

什么是α测试和β 测试?

答:

α测试:在受控的环境下进行,由用户在开发者的场所进行,开发者指导用户测试,开发者负责记录发现的错误和使用中遇到的问题。

β 测试:在开发者不可控的环境下进行,由软件最终用户在一个或多个客户场所下进行,用户记录测试中遇到的问题,并定期上报给开发者。


谈谈对敏捷的理解

  • 简单谈四种开发模型

传统的瀑布式开发,也就是从制定计划到需求分析到系统设计,到编码,到测试,到提交到运维大概这样的流程,要求每一个开发阶段都要做到最好。

迭代式开发,不要求每一个阶段的任务做的都是最完美的,而是明明知道还有很多不足的地方,却偏偏不去完善它,而是把主要功能先搭建起来为目的,以最短的时间,最少的损失先完成一个“不完美的成果物”直至提交。然后再通过客户或用户的反馈信息,在这个“不完美的成果物”上逐步进行完善。

螺旋开发,很大程度上是一种风险驱动的方法体系,因为在每个阶段之前及经常发生的循环之前,都必须首先进行风险评估。

敏捷开发,相比迭代式开发两者都强调在较短的开发周期提交软件,但是,敏捷开发的周期可能更短,并且更加强调队伍中的高度协作。

  • 谈敏捷测试

敏捷开发也对应着有敏捷测试,测试环节贯穿整个迭代周期,从需求评审到发布上线,都离不开测试快速跟进。

测试左移:需求评审、用例设计、自测工具、静态代码扫描等;

测试中:业务测试,接口测试,性能测试等;

测试右移:稳定性测试,回归测试,灰度测试等


什么是压力测试?压力测试需要考虑哪些因素?

答:

压力测试是在高负载情况下,对系统稳定性进行测试。在高负载的情况下,系统出现异常的概率要比正常负载时要高。高负载包含长时间运行、大数据、高并发等情况。

在做压力测试时,一般要考虑环境因素、性能指标、运行时间等要素。

  1. 压测环境最好和生产环境一致,假如要在生产环境进行压测,需要在凌晨等在线用户量极少的情况下进行。在生产环境测试时要做好数据隔离,生产环境需提供虚拟数据,采用虚拟账号,避免对真实线上用户造成影响。
  2. 性能指标包括,内存、CPU、吞吐量、QPS、网络流量、错误统计等,这些指标需要监控。
  3. 压测一般需要运行长时间,最好能够通过长时间的压测,绘制出曲线图,这样更容易观察到性能瓶颈。

web测试和APP测试的不同?

系统架构方面:
web项目,一般都是b/s架构,基于浏览器的
app项目,则是c/s的,必须要有客户端,用户需要安装客户端
web测试只要更新了服务器端,客户端就会同步更新。App项目则需要客户端和服务器都更新。

性能方面:
web页面主要会关注响应时间
而app则还需要关心流量、电量、CPU、GPU、Memory这些。
它们服务端的性能没有区别,都是一台服务器。

兼容方面:
web是基于浏览器的,所以要更倾向于浏览器和电脑硬件,电脑系统的方向的兼容
app测试则要看分辨率,屏幕尺寸,还要看设备系统。
web测试是基于浏览器的,所以不必考虑安装卸载。
而app是客户端的,则必须测试安装、更新、卸载。出了常规的安装、更新和卸载,还要考虑到异常场景,包括安装时的中断、弱网、安装后删除安装文件。此外app还有一些专项测试,如网络、适配性。


http://chatgpt.dhexx.cn/article/8IOY1ohA.shtml

相关文章

测试理论系列——软件测试模型

测试模型包含: V模型W(双V)模型H模型 V模型 V模型是最具有代表意义的测试模型,最早是由Paul Rook在20世纪80年代后期提出,由英国国家计算机中心 文献中发布,旨在改进软件开发的效率和效果;V模型本身是软件开发中瀑…

测试理论知识之测试方法

测试方法 软件测试中常用的测试方法有:等价类划分、边界值分析、因果图、场景法、正交试验法 ①等价类划分 适用场合:有数据输入的地方,可以使用等价类划分,将大量的数据划分出若干范围,从每个范围中挑选代表数据进行测试,避免穷举,提高测试效率. 等…

1.性能测试理论

性能测试理论 1.性能测试基础知识 1.1 为什么要做性能测试 1.1.1.大型系统崩溃事件 1.北京奥运会售票系统崩溃 https://blog.csdn.net/zhangyunbo1116/article/details/1862322?utm_sourceblogxgwz1 2.12306售票系统 3.淘宝双十一下单/秒杀系统 1.1.2.当系统崩溃产生影…

软件测试的基本理论

1.认识软件测试 1.1软件测试的发展 1960年代是调试时期(测试即调试)1960年 - 1978年 论证时期(软件测试是验证软件是正确的)和 1979年 - 1982年 破坏性测试时期(为了发现错误而执行程序的过程)1983年起&am…

软件测试 理论

1.按阶段对测试分类 1.1 单元测试(单元:一个独立的功能模块) 针对程序的源代码进行测试(交付程序之前自己自测一下)、 bug 太多,修复率太低,耗时的时候必须要单元测试 1.2 集成测试&#xff0…

05测试理论

测试理论 一、软件相关知识1、什么是软件2、软件生命周期3、测试流程(重点)4、项目组成员5、软件研发模型(软件研发过程)6、BUG类型 二、测试基础1、什么是软件测试2、软件测试目的3、软件测试原则(经验) 三…

测试理论基础

测试基础 1.软件测试的概念 软件测试(Software testing):是一种实际输出与预期输出间的审核或者比较过程。 经典定义:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要…

测试理论----测试设计方法论

【原文链接】 1、测试用例格式 (1)用例编号:用例的唯一标识,要求具有易识别性和易维护性,能能够根据用例编号识别用例的目的和作用,一般格式为:A-B-C-D 其中 A:一般表示产品或者项…

测试基础理论

一,理清测试相关概念 1,质量 : 实体特性的总和,满足明确或隐含要求的能力 2,软件质量 :软件特性的总和,软件满足规定或潜在用户需求的能力 在1991年软件产品质量评价,国标标准ISO9126中定义是:软件满足规定或潜在用户需求特性的总和。 …

【软件测试】软件测试基础理论

软件测试基础理论 黑盒测试、白盒测试、灰盒测试 (1)黑盒测试 黑盒测试 又叫 功能测试、数据驱动测试 或 基于需求规格说明书的功能测试。该类测试注重于测试软件的功能性需求。 采用这种测试方法,测试工程师把测试对象看作一个黑盒子&…

软件测试 - 功能测试(测试理论+用例设计)

一、测试理论基础 1.软件的定义 软件:是计算机程序、程序所用的数据以及有关文档资料的集合 软件分为 系统软件 和 应用软件 系统软件:是生成、准备和执行其他程序所需要的一组文件和程序,比如:操作系统 应用软件:计…

测试理论概述

一、测试基础 1、什么是测试? 弄清楚产品实际功能与需求的差别的过程。 2、软件测试的目的: 根本目的是检验产品是否满足用户的需求。除此之外,可细分为三个层面: (1)证明:证明软件可用 (2)检测:发现缺陷&…

测试理论总结(一)

1.你是如何把控、推进测试流程的? 首先,测试之前,我会做好测试计划、测试人力分配、工作量的估算、测试策略、测试风险评估等;其次,测试中,我会尽量严格按照测试计划来执行,如果实际测试中出现…

超详细的测试理论基础知识

测试理论基础知识 文章目录 一、软件的定义与分类1、软件定义2、软件分类(1)按照功能划分(2)按照技术架构划分 二、软件测试的定义及目的1、定义:2、目的 三、软件测试流程四、V模型(重点)1、软…

测试基本理论-看这篇就够了

软件测试(Software Testing):在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 一、软件的分类? 1、按照功能划分: 【系统软件】:如操作…

测试理论基础(重点)

软件测试的原则 1. 只能证明软件存在问题,不能把证明不存在问题 2. 不能进行穷尽测试,应该分类别测试 3. 测试工作尽早介入,降低修复成本 4. 缺陷存在集群现象,二八原则:20%的模块中存在80%的缺陷 5. 测试依赖环境 6.…

sql左连接出现重复数据

情况说明:只需左表数据,右表数据只作为条件存在,左表数据与右边有1:n关系,左连接出现重复数据 原因分析:由于1:n关系,右边数据连接后处于隐藏状态(类似)&…

sql 左连接数据出现重复

数据出现数据重复问题,排查后发现竟然是,这里用简单demo举例,项目SQL不便展出~ 目录 一、简化举例 二、查询结果 一、简化举例 1、表aa 2、表bb 二、查询结果 1、无条件查询 2、左连接查询 右表数据有重复时,连接关系如下 111122 …

sql 左连接行数增加本质

sql 左,右,内连接 转载自:http://323229113.blog.163.com/blog/static/2185362820070172553209/ 感谢作者. 相信做数据分析的朋友,对数据库都比较敏感,作为一名数据分析人员,我们处理数据时总会遇见各种各样的问题,包括连接方式的选择,今天和大家分享一下…

SQL(左连接,右连接,内连接)

连接(Join):SQL语句采用JOIN的目的是关联两张及两张以上的表。 连接的使用方式:表1 Join 表2 On 关联条件 1 左连接(Left Join) 左连接(Left Join):多表拼接时,以左边的表为基准&a…