拓冰建站拓冰建站
首页 / 资讯中心 / 正文

软件测试到底在测什么?新手入门核心概念全景解析

每个新入行的测试工程师脑子里大概都有过这么一个问题软件测试到底是在测什么我见过太多同学第一反应是测试不就是点点点吗等真到了项目里又发现完全不是那么回事。这篇内容原本是我带新人时的第一课讲稿核心就干一件事——把软件和测试这两件事彻底讲清楚。适合刚转行、刚毕业、或者自学了几个月但脑子里还是一团乱麻的测试新人。你不需要任何基础跟着过一遍你至少能明白自己在做什么、为什么要做、以及从哪儿开始做。1. 刚进测试这一行先别急着上手软件到底是什么1.1 软件不是代码两个字就能概括的很多新人有个误区觉得软件代码测试检查代码有没有写错。这个认知太窄了。真实的软件至少由三部分组成可执行的程序、程序运行所需的数据、以及配套的文档。拿你手机里那个点餐App举例。程序部分是那一堆界面和逻辑代码负责把菜单展示出来、算价格、提交订单数据部分是菜单、价格、库存、用户地址、订单记录这些信息——没有数据的程序就是个空壳文档部分是需求说明书、接口文档、操作手册这些看不见但绕不开的东西。为什么测试人员必须搞明白这个结构因为我在实际项目里见太多次了测试人员只盯着程序功能测结果数据初始化错了、文档和实际行为不一致上了生产全是坑。比如有个项目测试测得好好的上线后用户一搜历史订单就报错查了半天是测试环境的数据量太小没暴露索引失效的问题。你说这是程序bug还是数据问题所以认知软件的第一步是别把软件看窄了。1.2 软件的运行环境脱离环境谈软件没有意义一个软件跑起来依赖的东西远比你想的多服务器硬件、操作系统、数据库、中间件、网络带宽、浏览器版本、手机型号。同样一套代码放在不同的环境里行为可能完全不一样。我做过的项目中遇到最典型的情况是同一个Web系统开发在Chrome上测没问题客户用老版本Safari打开页面布局全乱。这不是功能逻辑错是环境兼容问题。再比如接口超时测试环境1毫秒就返回了生产环境用户一多就5秒超时这也不是代码逻辑变了是环境和数据量变了。所以测试人员脑子里要始终挂着一根弦测的不只是代码而是这个软件在特定环境下能不能正常工作。这决定了你在写用例的时候不能只考虑正常路径还得考虑浏览器差异、网络波动、低配设备这些环境因素。1.3 软件的分类决定测试策略往大了分软件有这么几类每一类的测试思路差异巨大软件类型典型例子测试侧重点系统软件操作系统、驱动程序稳定性、资源占用、硬件兼容应用软件电商App、办公软件功能完整性、用户体验、性能嵌入式软件家电固件、汽车电子实时性、可靠性、资源受限物联网设备智能门锁、传感器软硬结合、通信协议、弱网表现这里多聊两句物联网设备因为现在面试和项目中问这个场景的人越来越多。物联网设备不是单一软件它是一个设备端固件 手机App 云平台 通信协议的复合系统。智能门锁这东西门锁上那块固件跑的是嵌入式系统你手机上装的是App中间走蓝牙或者WiFi云端还要记录开锁日志。测物联网设备你不能只测App好不好用至少得覆盖这几层设备端功能没网能不能本地开锁、通信协议手机和设备之间的数据传输正不正确、云端数据日志有没有丢、异常场景断网、低电量、OTA升级失败、以及兼容性不同手机连同一把锁。这个复杂度比单纯测一个网站要高一个级别。所以先搞清楚你面对的软件是哪一类才能决定你的测试策略往哪儿使劲。2. 为什么必须有人专门去挑毛病软件缺陷的根源剖析2.1 一条链路错误、缺陷、故障软件为什么需要测试因为人一定会犯错。这条链路上有三个词很多新人分不清错误是人犯的比如程序员把余额大于等于价格写成了余额大于价格缺陷是被写进代码里的问题那个错误一旦提交进代码库缺陷就存在了故障是用户操作时被触发的结果比如那个用户余额刚刚好等于价格结果下单失败。理解这条链路的意义在于缺陷是永远无法完全杜绝的。你不能指望大家仔细一点就没bug了只能通过测试在缺陷被用户触发之前把它找出来。这不是态度问题是人类认知的天然局限——写代码的人对自己的代码有一种我写的就是对的的惯性思维所以需要另一双眼睛来做这件事。2.2 软件缺陷的七大来源实际项目中缺陷来源远比代码写错复杂。我根据自己的经验整理过一张清单缺陷来源典型场景常见后果需求理解错位客户说查询要快开发理解为不用分页数据一多就卡死设计逻辑漏洞只考虑了正常流程没人考虑取消订单状态机混乱编码疏忽没做空值判断、数组越界、浮点精度丢失程序崩溃或金额出错环境差异测试库和生产库字符集不同乱码、查询报错数据边界没测最大长度、最大并发、空数据输入超长直接崩交互误操作用户快速双击提交按钮重复订单兼容性新旧版本混用、不同机型适配界面错乱、功能失效这里面最贵的是第一类——需求理解错位。逻辑很简单需求阶段发现问题改一行字就行到了编码阶段要改代码到了测试阶段要重新设计用例到了上线之后要发公告、回滚、赔偿用户。缺陷发现得越晚修复成本是指数上升的。所以测试人员的高价值恰恰不是在最后一道关卡拦截而是在需求评审阶段就介入替用户多想一步。2.3 嵌入式与物联网场景的特殊性为什么单聊嵌入式因为它在缺陷来源上比纯软件多好几种。纯软件的bug大多数是逻辑问题嵌入式软件跑在资源受限的硬件上问题往往出现在你压根想不到的地方资源受限设备内存可能只有几十KB代码稍微多写点就溢出重启。实时性传感器数据采集如果卡顿几百毫秒采集到的数据就不能用了。功耗固件写得不好设备待机耗电加快用户发现一周就没电了。通信可靠性网络抖动、丢包、信号弱消息发送一半断了两端的状态就不一致了。OTA升级固件远程升级到一半断电设备可能变砖。我测过一个智能插座项目功能全正常但一测低电量场景就出幺蛾子电量低于15%时设备会频繁掉线重连。后来查下来是固件在低电量状态下处理WiFi重连的逻辑没做限制反复尝试把最后一点电量耗光了。这种问题你只坐在电脑前面点点点永远测不出来。所以如果你的目标是物联网测试方向请务必记住测试设计一定要围绕真实物理环境展开弱网、断电、低电量、信号干扰这些都要列为正式测试场景而不是可选项。3. 测试的本质不是找茬是验证确证两个关键词讲透测试定义3.1 验证做对了没有软件行业里对测试有一个经典定义翻译过来就是两件事验证和确证英文对应Verification和Validation。这两个词看着像实际差很远。验证问的是我们有没有把软件做对衡量标准是需求文档、设计文档。需求说登录按钮在页面右上角你检查它在不在——这叫验证。需求说点击登录后3秒内跳转首页你测一下实际用时——这也叫验证。说白了验证就是对照规格说明书逐条检查做没做到位。3.2 确证做的是不是该做的确证问的是我们做的是不是用户真正需要的东西这就高级了。我遇到过最典型的例子给图书馆开发一个借书系统需求文档写得清清楚楚——一本书同一时间只能被一个用户借阅开发也老老实实实现了。然后呢热门书永远借不到用户纷纷投诉。真正的问题在于需求本身就没有规划预约排队功能。这种情况验证做得再好也没用——你检查了所有规则都实现了但你检查不出这个规则本身有没有意义。确证就是测试里的灵魂拷问抛开文档回到真实用户视角这个东西真的解决问题吗3.3 抽样思维为什么测试不能保证100%没bug还有一件事必须从一开始就建立认知测试是抽样不是穷举。一个登录框假设用户名有50种情况、密码有50种情况组合就是2500种再加上网络异常、数据库异常、并发冲突组合数直接爆炸。你不可能全测完也没人给你那么多时间。那怎么办只能按风险优先级抽样。核心功能、高频操作、高风险场景涉及钱的、涉及隐私的、涉及存储的优先测边角料、低频功能、低风险路径靠后测。明白这一点之后你对测试通过的理解就成熟了它不意味着没有bug而是意味着在目前覆盖的范围内没有发现明显问题剩余风险在可接受区间内。有同学在帖子里鼓吹我们项目零bug听听就好大概率是没测深。关于测试过程的标准化国标其实有参考文件计算机软件测试规范里面定义了测试的目的、过程和交付物。新人不用死磕标准原文但建议知道有这么个东西。它背后的理念很简单测试是一项有成本、有边界、需要有计划的活动不是想到什么测什么。4. 一张图装不下的测试世界从分类看清测试的完整地图4.1 按阶段分单元、集成、系统、验收这是最经典的一条分类线对应研发流程的推进。我拿一个库存管理系统举例把四个阶段串起来阶段测试对象核心问题通常谁在做单元测试函数、类、模块单个功能逻辑是否正确开发人员集成测试模块之间的接口模块拼在一起能不能协同工作开发/测试系统测试完整系统整体功能、性能、安全是否达标测试人员验收测试完整系统用户/客户确认是否符合预期用户/测试每个阶段的价值都不一样。单元测试像检查每块砖结不结实集成测试看砖和砖之间咬合有没有缝系统测试看整堵墙能不能抗风验收测试就是房东点头说这就是我要的房子。新人最容易犯的毛病是只盯系统测试觉得单元测试是开发的事。但实际上你如果在设计测试用例时能看懂代码结构知道开发在哪些模块做了单测哪些没有你的集成测试重点会更清晰。4.2 按视角分黑盒、白盒、灰盒这个维度是测试特有的世界观面试八股必备。黑盒测试把软件当成一个不透明的黑盒子不管内部结构只关心输入什么、输出什么。比如你在登录框输入admin/123456点了登录页面跳转到首页——这就是纯黑盒视角。功能测试绝大多数是黑盒。白盒测试打开盒子看里面关注代码逻辑、分支覆盖、路径覆盖。比如代码里有个 if 分支你必须设计用例让条件为真和条件为假都跑到。新人别被白盒两个字吓住它不要求你成为开发大牛但要求你能读懂基本逻辑知道哪行代码没被测试覆盖到。灰盒测试介于两者之间了解部分内部结构但仍然从用户视角去测。接口测试就是典型灰盒——你不需要管UI但你得知道接口的入参和出参长什么样。有个误解我必须拆穿有人觉得黑盒低端、白盒高端。真项目里黑盒测试是质量的主要保障因为用户根本不关心你内部逻辑怎么写的只关心好不好用。白盒更多是开发自测和测试辅助手段。两者是配合关系不是高下关系。4.3 按执行方式分手动与自动化自动化这几年被炒得很热很多新人一上来就追着学自动化工具。我泼一盆冷水自动化不是万能的它解决的是重复回归的问题不是探索发现的问题。适合自动化的场景回归测试每次发版都要跑一遍的老用例、数据驱动测试同样的流程换N组数据、性能测试模拟几千人同时操作、接口测试快速验证接口是否正常。不适合自动化的场景探索性测试你边测边思考找新问题、UI频繁变动的页面写好的脚本两天就废了、一次性的临时测试场景。工具选型上你只要记住主流方向就行接口测试用Postman或代码框架Python的requestspytestUI自动化用Selenium或Playwright性能测试用JMeter移动端用Appium。这篇不展开讲工具但可以明确告诉你入门阶段先手工测试打好基础再学自动化顺序不能反。4.4 按测试类型分功能、性能、安全、兼容、易用性这是从测什么质量属性来分类的功能测试软件能不能干它该干的活。登录能登进去下单能付款。性能测试干活干得快不快、扛不扛得住。用户量从100涨到10万页面还能不能3秒内打开。安全测试软件会不会被恶意攻击。有没有SQL注入漏洞用户密码是不是明文存储。兼容性测试在不一样的软硬件环境下还行不行。不同浏览器、不同系统、不同手机分辨率。易用性测试用户用得顺不顺手需不需要看教程。新用户第一次打开App五分钟内能不能完成核心操作。新人阶段最容易被忽视的是后两者。我见过功能测得很好的项目结果上线后被用户骂界面丑得像二十年前的系统。质量是多维度的你简历和面试时能说出我用什么方法验证了这个软件不仅功能正确而且好用、扛得住、安全这就是专业度的体现。5. 新人入行最关心的事简历、面试和第一份测试工作怎么准备5.1 面试中最常被问到的几个基础问题现在的面试尤其是初级岗位不会太难为你但八股躲不开。我梳理一下最高频的几个顺便给出正确的理解方式问题一什么是测试用例标准答法是对被测软件的输入、操作、环境、预期结果的描述。但更值钱的回答是加上一句测试用例的意义在于让一个从没测过这个功能的人拿着这套用例也能完整地测一遍并且能清楚地判断结果是否通过。这体现的是你的工程化思维。问题二bug的生命周期是什么新提交 → 开发确认 → 指派修复 → 修复完成 → 测试验证 → 关闭。如果开发说这不是bug或者这个版本不修就进入打回或挂起状态。回答这个问题时如果能顺带说一句我遇到过延迟修复的情况是因为影响优先级低和业务方确认后排到下个迭代面试官就知道你不是背的了。问题三给你一个水杯你怎么测很多人第一次听到这问题会懵。正确思路是拆解测试维度功能测试能不能装水、不漏水、可靠性测试掉地上摔不摔得碎、耐不耐高温、易用性测试好不好拿、杯子口径合不合理、兼容性测试能不能放进不同规格的杯架、安全测试材质有没有毒。这套思路的本质是建立测试维度框架而不是真让你测杯子。5.2 简历上的测试项目经验怎么写这是很多新人的死穴——没工作经验哪来的项目经验我的建议是自己去复现一个小项目。比如找一个开源的教学系统或者你自己写个最简单的图书管理小程序只要能登录、增删改查就行然后以测试人员的视角去做。简历上可以这样写对XX系统登录与用户管理模块进行测试设计测试用例80条覆盖正常路径、异常路径、边界值与权限控制场景发现缺陷15个其中严重缺陷2个涉及密码明文存储与越权访问使用缺陷管理工具提交并跟踪推动开发在1个迭代内完成修复。注意这段话里的关键有测试对象、有方法、有数量、有结果。哪怕项目是你自己练的只要流程完整、指标真实没人敢说这叫假经验。千万别杜撰在某公司负责XX面试官一问细节就露馅。5.3 为什么测试岗普遍要求学Python热搜词里一直挂着软件测试 面试 python这真不是凑热闹。原因很现实技术栈成熟。pytest是最主流的Python测试框架requests写接口测试只需要几行代码Selenium和Appium都有完善的Python客户端连自动化测试的平台工具都大量用Python做二次开发。新人的学习路径我建议控制在4-6周Python基础语法变量、循环、函数→ 文件读写 → requests库发送HTTP请求 → pytest编写用例 → 简单的自动化脚本。学过这些你至少能在简历上诚实写熟悉Python基础及pytest框架。5.4 测试人员的工作协作关系最后聊点工作中看不见但天天要面对的测试不是一个孤立的角色。你每天要跟这几类人打交道——开发你要把bug描述清楚让他们能秒复现描述不清的bug会被打回来反复几次你的可信度就没了、产品经理需求评审时你要帮他们发现逻辑漏洞这是测试最增值的时刻、运维发布上线、环境部署都靠运维你的环境准备也依赖他们、用户支持用户反馈的问题很多时候要转给你先判断是不是bug。我对新人的建议是bug描述三要素——标题写清楚现象和条件、复现步骤写精确到每一步、附上截图和日志。这比任何测试技巧都更能让你在团队里站稳脚跟。一个连bug都描述不清楚的测试开发是不愿意配合的。做测试这一行能走多远不在于你背了多少个面试八股而在于你有没有两样东西怀疑精神和产品思维。怀疑精神让你永远不满足于看起来没问题产品思维让你不只盯着自己的用例表而是随时能回答这个东西到底解决问题了没有。最后分享一个我自己一直在用的习惯看到一个软件不管它是外卖App还是智能门锁先问自己三个问题——它是给谁用的它的核心流程是什么最可能出事的地方在哪里这三个问题想透了你的测试嗅觉会迅速变得敏锐。新人在前三个月肯定会有不知道从哪儿测起的恐慌这很正常。先把软件看透把这篇讲的测试框架建起来后面再学自动化工具、性能测试、安全测试你都会有明确的方向感。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门