公司动态

【测试】之测试分类篇

📅 2026/7/16 10:28:13
【测试】之测试分类篇
1. 为什么要对软件测试进行分类软件测试是软件⽣命周期中的⼀个重要环节具有较高的复杂性对于软件测试可以从不同的⻆度加以分类使开发者在软件开发过程中的不同层次、不同阶段对测试⼯作进⾏更好的执⾏和管理测试的分类⽅法2. 按照测试目标分类2.1 界面测试软件只是⼀种⼯具软件与⼈的信息交流是通过界⾯来进⾏的界⾯是软件与用户交流的最直接的⼀层界⾯的设计决定了⽤⼾对我们设计的软件的第⼀印象界⾯如同⼈的⾯孔具有吸引⽤⼾的直接优势设计合理的界⾯能给⽤⼾带来轻松愉悦的感受。如果不严格按照设计图来进⾏界⾯测试结果可能就会出现⼩岳岳版本~界⾯测试简称UI测试)指按照界⾯的需求⼀般是UI设计稿和界⾯的设计规则对我们软件界⾯所展⽰的全部内容进⾏测试和检查⼀般包括如下内容验证界⾯内容显⽰的完整性⼀致性准确性友好性。⽐如界⾯内容对屏幕⼤⼩的⾃适应换⾏内容是否全部清晰展⽰验证整个界⾯布局和排版是否合理不同板块字体的设计图⽚的展⽰是否符合需求对界⾯不同控件的测试⽐如对话框⽂本框滚动条选项按钮等是否可以正常使⽤有效和⽆效的状态是否设计合理界⾯的布局和⾊调符合当下时事的发展。找茬~ 请你根据给定的设计图找出实现的⻚⾯有哪些界⾯问题~只要跟设计图不符合可以提bug2.2 功能测试功能测试就是对产品的各功能进⾏验证根据功能测试⽤例逐项测试检查产品是否达到⽤⼾要求的功能。根据产品特性、操作描述和⽤⼾⽅案测试⼀个产品的特性和可操作⾏为以确定它们满⾜设计需求。本地化软件的功能测试⽤于验证应⽤程序或⽹站对⽬标⽤⼾能正确⼯作。使⽤适当的平台、浏览器和测试脚本以保证⽬标⽤⼾的体验将⾜够好就像应⽤程序是专⻔为该市场开发的⼀样。功能测试是为了确保程序以期望的⽅式运⾏⽽按功能要求对软件进⾏的测试通过对⼀个系统的所有的特性和功能都进⾏测试确保符合需求和规范。如何进⾏功能测试设计功能测试⽤例参考产品规格说明书进⾏⽤例的编写具体的测试⽤例需要使⽤⿊盒设计测试⽤例的⽅法如等价类、边界值、判定表法、正交法、场景法、错误猜测法等。2.3 性能测试我们在使⽤软件的时候有时会碰到软件⽹⻚打开时越来越慢查询数据时很⻓时间才显⽰列表软件运⾏越来越慢等问题这些问题都是系统的性能问题引起的。以博客系统为例看看两种场景下哪种性能⽐较好明显左边的更好要进⾏软件产品的性能问题要对产品的性能需求进⾏分析然后基于系统的性能需求和系统架构完成性能测试的设计和执⾏最后要进⾏持续的性能调优。2.4 可靠性测试可靠性Availability即可⽤性是指系统正常运⾏的能⼒或者程度⼀般⽤正常向⽤⼾提供软件服务的时间占总时间的百分⽐表⽰。可靠性 正常运⾏时间/正常运⾏时间⾮正常运⾏时间*100%隔壁村有个⼈叫⽼王让⽼王请吃饭要求了⼗次但是他只请了⼀次那么我们说⽼王的可靠性是10%那么我们称⽼王这⼈不可靠如果让⽼王请吃饭要求了⼗次每次他都请客了可靠性是100%那么⽼王是个可靠的⼈纯纯⼤冤种~~系统⾮正常运⾏的时间可能是由于硬件软件⽹络故障或任何其他因素如断电造成的这些因素 能让系统停⽌⼯作或者连接中断不能被访问或者性能急剧降低导致不能使⽤软件现有的服务等。可⽤性指标⼀般要求达到4个或5个“9”即99.99%或者99.999%如果可⽤性达到99.99%对于⼀个全年不间断7*24的⽅式运⾏的系统意味着全年252600min)不能正常⼯作的时间只有52min不到⼀个⼩时。如果可⽤性达到99.999%意味着全年不能正常⼯作的时间只有5min。不同的应⽤系统可⽤性的要求是不⼀样的⾮实时性的信息系统或⼀般⽹站要求都很低99%和99.5%就可以了但是军事系统要求则很⾼2.5 安全性测试安全性是指信息安全是指计算机系统或⽹络保护⽤⼾数据隐私完整保护数据正常传输和抵御⿊客病毒攻击的能⼒。安全性测试属于非功能性测试很重要的⼀个方面系统常见的安全漏洞和威胁如下sql 注入、xss 漏洞、登录模块密码一般要加密显示数据库用户敏感信息要加密接口返回值不能返回用户的隐私数据输入域输入恶性、带病毒的脚本或超长字符串存在输入校验缺失风险代码层面安全问题SQL 注入、XML 注入等注入类漏洞不安全的数据存储、不安全的数据传输敏感文件风险数据文件、邮件文件、系统配置文件中包含危害系统的信息 / 数据权限安全访问控制异常、权限分配不合理身份安全假冒 ID、身份欺骗数据安全恶意篡改数据破坏数据完整性安全性测试的⽅法有代码评审渗透测试安全运维等常⽤的静态安全测试⼯具有CoverityIBM Appscan SourceHPFortify常用的动态安全测试有OWASP的ZAPHP WebInspect等。其中静态安全测试是常⽤的安全性测试的方法。安全如此重要咱们的私⼈电脑需要安装杀毒软件吗.....铁汁多少有点抬举自己了嗷~2.6 易用性测试许多产品都应⽤⼈体⼯程学的研究成果是产品在使⽤起来更加灵活和舒适。软件产品也始终关注⽤户体验让⽤⼾获得舒适易⽤的体验针对软件这⽅⾯的测试称之为易⽤性测试。易⽤性在ISO25020标准中指容易发现容易学习和容易使⽤。易⽤性包含七个要素符合标准和规范直观性⼀致性灵活性舒适性正确性和实⽤性。我们主要讨论以下⼏个⽅⾯1、标准性和规范性对于现有的软件运⾏平台通常其UI标准已经不知不觉地被确⽴了成为⼤家的共识。多数⽤⼾已经习惯并且接受了这些标准和规范或者说已经认同了这些信息所代表的的含义。⽐如安装软件的界⾯的外观在什么场合使⽤恰当的对话框等。所以用户界⾯上的各中信息应该符合规范和习惯否则⽤⼾使⽤起来会不舒适并得不到⽤⼾的认可。测试⼈员需要把与标准规范习惯不⼀致的问题报告为缺陷2、直观性用户界⾯的直观性要求软件功能特性易懂清晰。⽤⼾界⾯布局合理对操作的响应在⽤⼾的预期之中。⽐如数据统计结果⽤报表的形式条形图扇形图等展⽰清晰直观现在主流的很多搜索引擎和⽇历的设计也有直观性的特点3、灵活性软件可以有不同的选项以满⾜不同使⽤习惯的⽤⼾来完成相同的功能。但是灵活性的设计要把握好度不然可能由于太多的⽤⼾状态和⽅式的选择增加了软件设计的复杂性和程序实现的难度。 例如⼿机键盘有九宫格和全键盘还⽀持⼿写满⾜了不同⽤⼾的需求4、舒适性舒适性主要强调界⾯友好美观操作过程顺畅⾊彩⽤运恰当按钮的⽴体感等3. 按照执行方式分类3.1 静态测试所谓静态测试static testing就是不实际运⾏被测软件⽽只是静态地检查程序代码、界⾯或⽂档中可能存在的错误的过程。不以测试数据的执⾏⽽是对测试对象的分析过程仅通过分析或检查源程序的设计、内部结构、逻辑、代码⻛格和规格等来检查程序的正确性。常⻅的静态测试⽅式有代码⾛查代码扫描⼯具等。肉眼检查代码是否存在问题检查的主导通常为开发领导3.2 动态测试动态测试dynamic testing指的是实际运⾏被测程序输⼊相应的测试数据检查实际输出结果和预期结果是否相符的过程所以判断⼀个测试属于动态测试还是静态的唯⼀的标准就是看是否运行程序。大多数软件测试⼯作都属于动态测试4. 按照测试方法4.1 白盒测试⽩盒测试⼜称为结构测试或逻辑测试它⼀般⽤来分析程序的内部结构针对程序的逻辑结构来设计测试⽤例进⾏测试。⽩盒测试的测试⽬的是通过检查软件内部的逻辑结构对软件中的逻辑路径进⾏覆盖测试在程序不同地⽅设⽴检查点检查程序的状态以确定实际运⾏状态与预期状态是否⼀致。⽩盒测试主要分为静态测试和动态测试两种。静态测试常⻅于桌⾯检查、代码审查、代码⾛查、代码扫描⼯具动态测试⽅法主要包含六种测试⽅法语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。给出简单的案例接下来了解⼀下⽩盒测试⽅法的概念和使⽤4.1.1 语句覆盖每个语句⾄少执⾏⼀次。针对A and BA为T且B为T针对C or DC为T或者D为T得出⽤例⽤例1A为TB为TC为TD为F语句覆盖覆盖每一行代码最少 1 条用例把代码里每一行可执行语句至少跑一遍只关心「语句有没有执行」不管条件真假。4.1.2 判定覆盖A and B 要为T AT BT ①A and B 要为F AT BF 或者AF BT或者 AF BF ②C or D 要为T CT DT/F 或者 CT/F DT ③C or D 要为F CF DF ④得出⽤例⽤例1AT BT CT DF 满⾜ ①③⽤例2AT BF CF DF 满⾜ ②④要求每个if的最终结果必须测一次真、一次假4.1.3 条件覆盖A T FB T FC T FD T F⑤ ⑥得出⽤例用例1AT BT CT DT ⑤用例2AF BF CF DF ⑥要求每一个单独变量必须测一次真、一次假4.1.4 判定条件覆盖结合判定覆盖和条件覆盖。得出⽤例⽤例1AT BT CT DT 满⾜①③⑤⽤例2AF BF CF DF 满⾜②④⑥判定覆盖管整体 if结果真 / 假不管里面细节条件覆盖管里面每个小变量A/B/C/D不管整体 if 结果判定条件覆盖同时满足 判定覆盖 条件覆盖4.1.5 条件组合覆盖A B ∣ C DT T ∣ T TT F ∣ T FF T ∣ F TF F ∣ F F每行就可以是⼀个用例⼀共四个用例。条件组合覆盖所有条件真假组合全覆盖4 条最强4.1.6 路径覆盖判定条件定义如下1if(x0 y0)判定记为P12if(z 0)判定记为P23x 0记为C14y 0记为C25z 0记为C3测试用例设计总结⽩盒测试主要应⽤于单元测试阶段先执⾏静态设计⽤例的⽅法再执⾏动态设计测试⽤例的⽅法设计⽤例⼀般使⽤路径测试重点模块追加使⽤逻辑覆盖⽅法4.2 黑盒测试⿊盒测试就是在完全不考虑程序逻辑和内部结构的情况下检查系统功能是否按照需求规格说明书的规 定正常使⽤、是否能适当的接收输⼊数据⽽输出正确的结果满⾜规范需求。所以⿊盒测试⼜称之为数据驱动测试只注重软件的功能⿊盒测试的优点不需要了解程序内部的代码以及实现不关注软件内部的实现。从⽤⼾⻆度出发设计测试⽤例很容易的知道⽤⼾会⽤到哪些功能会遇到哪些问题锻炼测试⼈ 员的产品思维测试⽤例是基于软件需求开发⽂档不容易遗漏软件需求⽂档中需要测试的功能。⿊盒测试的缺点是不可能覆盖所有代码。⿊盒测试⽤到的测试⽅法有等价类边界值因果图场景法错误猜测法等4.3 灰盒测试灰盒测试是介于⽩盒测试与⿊盒测试之间的⼀种测试灰盒测试多⽤于集成测试阶段不仅关注输出、输⼊的正确性同时也关注程序内部的情况。但是灰盒测试没有⽩盒测试详细和完整⿊盒测试是覆盖产品范围最⼴的测试因此灰盒测试基本是不能够替代⿊盒测试否则需要很⼤的代价设计⾮常多的⽤例。常⻅⾯试题你知道的测试⽅法有哪些哪种⽤的⽐较多常⻅的测试⽅法有⿊盒测试⽩盒测试和灰盒测试。开发⼈员主要⽤⽩盒测试和灰盒测试测试⼈员主要⽤⽩盒测试和⿊盒测试。对于测试⼈员来说相较于⽩盒测试⿊盒测试⽤的更多⼀些。5. 按照测试阶段分类5.1 单元测试与编码同步进⾏针对软件最⼩组成单元进⾏测试主要采⽤⽩盒测试⽅法从被测对象的内部结构出发设计测试⽤例到底怎么才算“最⼩单元”呢最⼩单元实际是认为定义的⼀个⽅法⼀个类都可以理解为“最⼩单元”。人为规定的最小单元方法、接口、功能等都可以被称之为单元测试阶段编码后或者编码前TDD测试对象最小模块测试⼈员白盒测试⼯程师或开发⼯程师测试依据代码和注释详细设计⽂档测试方法白盒测试测试内容模块接⼝测试、局部数据结构测试、路径测试、错误处理测试、边界测试5.2 集成测试集成测试也称联合测试联调、组装测试将程序模块采用适当的集成策略组装起来对系统的接口及集成后的功能进⾏正确性检测的测试⼯作。集成主要目的是检查软件单位之间的接口是否正确。测试阶段一般单元测试之后进行测试对象模块间的接⼝测试⼈员白盒测试⼯程师或开发⼯程师测试依据单元测试的模块概要设计⽂档测试⽅法黑盒测试与⽩盒测试相结合测试内容模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响5.3 系统测试对通过集成测试的系统进行整体测试验证系统功能性和非功能性需求的实现。测试阶段集成测试通过之后测试对象整个系统软、硬件测试⼈员⿊盒测试⼯程师测试依据需求规格说明⽂档测试⽅法⿊盒测试测试内容功能、界⾯、可靠性、易⽤性、性能、兼容性、安全性等5.3.1 冒烟测试这⼀术语源⾃硬件⾏业。对⼀个硬件或硬件组件进⾏更改或修复后直接给设备加电。如果没有冒烟则该组件就通过了测试。在软件中“冒烟测试”这⼀术语描述的是在将代码更改嵌⼊到产品的源树中之前对这些更改进⾏验证的过程。在检查了代码后冒烟测试是确定和修复软件缺陷的最经济有效的⽅法。冒烟测试设计⽤于确认代码中的更改会按预期运⾏且不会破坏整个版本的稳定性。冒烟测试的对象是每⼀个新编译的需要正式测试的软件版本⽬的是确认软件主要功能和核⼼流程正常在正式进⾏系统测试之前执⾏。冒烟测试⼀般在开发⼈员开发完毕后提交给测试⼈员来进⾏测试时先进⾏冒烟测试保证基本功能正常不阻碍后续的测试。如果冒烟测试通过则测试⼈员开始进⾏正式的系统测试如果不通过则测试⼈员可以让开发⼈员重新修复代码直到冒烟测试通过再开始进⾏系统测试。在⽣活中购买⼀个电视⾸先会通电查看电视是否能够运⾏。购买⼀个⽔杯⾸先会灌⽔查看⽔杯是否漏⽔。在⼯作中假如有⼀个博客系统项⽬提测了冒烟测试即只需要测试系统是否能够成功打开主流程是否可以⾛通即可。检查当前已经开发好的程序是否具备可测试性版本刚出来先跑一遍核心主要功能看软件能不能正常打开、能不能用快速判断能不能继续测。5.3.2 回归测试回归测试是指修改了旧代码后重新进⾏测试以确认修改没有引⼊新的错误或导致其他代码产⽣错误。在整个软件测试过程中占有很⼤的⼯作量⽐重软件开发的各个阶段都会进⾏多次回归测试。随着系统的庞⼤回归测试的成本越来越⼤通过选择正确的回归测试策略来改进回归测试的效率和有效性是很有意义的。回归测试主要由⼈⼯测试和⾃动化测试进⾏。在实际⼯作中回归测试需要反复进⾏当测试者⼀次⼜⼀次地完成相同的测试时这些回归测试将变得⾮常令⼈厌烦⽽在⼤多数回归测试需要⼿⼯完成的时候尤其如此因此需要通过⾃动测试来实现重复的和⼀致的回归测试。通过测试⾃动化可以提⾼回归测试效率。为了⽀持多种回归测试策略⾃动测试⼯具应该是通⽤的和灵活的以便满⾜达到不同回归测试⽬标的要求。软件修改代码、修复 bug、更新版本后把之前测过的用例重新跑一遍。目的防止改完一处把原来正常的功能改坏了。5.4 验收测试针对⽤⼾需求对通过系统测试的软件进⾏交付性测试以确定系统是否满⾜验收标准由⽤⼾或其他授权机构决定是否接受系统。验收测试是部署软件之前的最后⼀个测试操作。它是技术测试的最后⼀个阶段也称为交付测试。验收测试的⽬的是确保软件准备就绪按照项⽬合同、任务书、双方约定的验收依据⽂档向软件购买都展⽰该软件系统满⾜原始需求。测试阶段系统测试通过之后测试对象整个系统包括软硬件。测试⼈员主要是最终⽤⼾或者需求⽅。测试依据⽤⼾需求、验收标准测试⽅法⿊盒测试测试内容同系统测试(功能...各类⽂档等)单元测试集成测试系统测试回归测试之间的关系关于车企生产车到客户开上小汽车的过程中~造⻋需要原材料如⻋轮、发动机等零部件不是⻋企⾃⼰制造出来的⽽是通过购买零部件来造⻋。对买来的零部件进⾏检查零部件是否符合造⻋标准单元测试零件确认完毕接下来就是复杂的造⻋⼯艺将零部件集成起来构成了⼀辆⻋并初步检查拼⻋的⻋是否能正常运作集成测试⼀辆⻋成型之后并不意味着就可以直接销售给客⼾了需要⻋企专业的测试⼈员进⾏详细⽽完整的测试。系统测试专业的测试⼈员对企业测试完毕通过测试的汽⻋将会在⻋展或者4S店进⾏展⽰供⽤⼾进⾏选择和购买。⽤⼾在选择汽⻋的过程中也会对⻋外观以及性能等⽅⾯进⾏校验验收测试除了以上阶段外还有两个⾮常重要在⼯作中经常会听到冒烟测试和回归测试6. 按照是否手工测试6.1 手工测试(Manual testing)⼿⼯测试就是由⼈去⼀个⼀个的输⼊⽤例然后观察结果和机器测试相对应属于⽐较原始但是必须的⼀个步骤。6.2 自动化测试(Automation Testing)就是在预设条件下运⾏系统或应⽤程序评估运⾏结果预先条件应包括正常条件和异常条件。简单说 ⾃动化测试是把以⼈为驱动的测试⾏为转化为机器执⾏的⼀种过程。 ⾃动化测试⽐如功能测试⾃动化、性能测试⾃动化、安全测试⾃动化。 ⾃动化测试按照测试对象来分还可以分为接⼝测试、UI测试等。接⼝测试的ROI产出投⼊⽐要⽐UI测试⾼。这⾥了解⼀下等到将⾃动化的时候再详细展开6.3 自动化测试和手工测试优缺点7. 按照实施组织划分⼤型通⽤软件在正式发布前通常需要执⾏Alpha和Beta测试7.1 α测试(Alpha Testing)α测试⼜叫内测或者叫a测其实都是⼀个涵义α测试通常是公司内部的⽤⼾在模拟实际操作环境下进⾏的测试。α测试的⽬的是评价软件产品的FLURPS(即功能、可使⽤性、可靠性、性能和⽀持)。 α测试不能由程序员或测试员完成。7.2 β测试(Beta Testing)β测试⼜叫公测或者叫b测β测试由软件的最终⽤⼾们在⼀个或多个场所进⾏这⾥就可以理解为β测试是正式⽤⼾中的⼀部分他们在任意的场合来使⽤软件⽬的是为了发现软件是否存在⼀系列的问题通常会发送⼀些邀请码来邀请用户参与项目测试α测试与β测试的区别7.3 第三方测试第三⽅软件测试是指由独⽴的第三⽅公司或组织进⾏的软件测试活动。https://www.zmtests.com/通过第三⽅测试可以确保软件的质量节省成本确保软件尽快上线8. 按照测试地域划分按照测试地域划分⼀般会将测试划分为国际化测试和本地测试8.1 国际化测试简⾔之测试⼈员需要测试软件在不同语⾔和地区是否能正常⼯作国际化测试需要关注软件的哪些特性布局时间⽇期数字格式货币机器型号.....8.2 本地测试之前所讲的都属于本地测试在自己的电脑 / 开发环境上进行测试不发布到服务器、不让别人用只在本地环境验证功能是否正常。一句话代码在自己机器上跑自己测不联网、不上线。