ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

【软件测试】(入门篇)软件测试到底在做什么?——从 0 认识软件测试

【软件测试】(入门篇)软件测试到底在做什么?——从 0 认识软件测试 引言这是学习软件测试之前首先需要建立的一个认识。不管你是刚入学准备找方向的大一新生还是秋招被测试岗捞了不知道要不要去的应届生或者只是好奇测试到底是不是每天点点点的旁观者——这篇会把你心里那些模糊的问号一个一个解开。不灌鸡汤不背概念全是大白话。一、什么是测试1.1 生活中的测试场景测试不是什么高深的东西生活中到处都是。先看三个例子。案例一商场买衣服你逛商场买衣服从进门到掏钱全程都在测试环节你在干嘛本质上就是测试外观测试走进门扫一眼衣架挑出看着顺眼的筛选是否符合个人审美试穿测试拿着衣服进试衣间穿上照镜子验证穿上之后效果如何面料测试摸一摸看看标签——纯棉涤纶检验材质是否满足需求价格测试问一嘴多少钱心里跟预算比一比评估是否在可接受范围内买完、付钱、走人整个过程每一步都在做判断、做验证——这就是测试。案例二对某款购物软件进行测试换个场景你在手机上用某购物 App启动测试点图标看 App 能不能正常打开会不会闪退搜索测试点搜索框输入耳机点搜索按钮看结果对不对商品测试点一个商品进详情页看图片加载出来没、价格对不对购物测试点立即购买走下单流程看能不能下单成功你发现没有上面这几步跟正常买东西一模一样。唯一的区别是普通用户用完就走测试人员用完要记下来哪步有问题。案例三对一个 Java 程序进行测试再贴近写代码的场景。有个加法函数add(a, b)你要验证它对不对a 1, b 2, 期望返回 3 a 1, b -2, 期望返回 -1 a -1, b 2, 期望返回 1 a -1, b -2, 期望返回 -3这就是最朴素的单元测试——给定输入验证输出是否符合预期。由此可见测试在日常生活中、学习中都处处可见只不过在企业里它被系统化、工程化了。1.2 为什么需要软件测试企业为啥要养一堆测试人员说白了就一件事软件出 bug 的代价远比你想象的大。一个支付 bug用户多扣了钱客服接到投诉、退款、赔礼、发公告、上热搜——损失可能是开发成本的几十倍一个崩溃 bug双十一零点服务挂了每一分钟都在烧钱一个安全漏洞用户数据泄露直接吃官司、被约谈、股价暴跌开发写完代码他自己测过觉得没问题就提测了。但开发测的是我写的逻辑对不对他不会主动去想用户会不会乱点网络断了他怎么办同时一万个人用会不会崩。这些恰恰是测试要干的事。越早发现 bug修复成本越低。需求阶段改一个字比上线后改一个 bug便宜十倍不止。测试就是在开发链条的每个环节卡一道关把问题拦在上线之前。1.3 软件测试定义软件测试的经典定义是在规定条件下运行程序发现程序中的错误评估软件质量最终目的是交付高质量的软件产品。但说人话就是拿着各种正常和变态的输入去折腾程序看它会不会崩、输出对不对然后告诉开发哪里有问题。二、测试的岗位有哪些测试岗位主要分两大类1. 软件测试开发工程师简称测开测开是测试和开发的结合体。你不光要会测还要会写代码——写自动化测试脚本、搭测试平台、造测试工具。打个比方普通测试是手动挡司机测开是既能开又能改装引擎的工程师。具体干啥写自动化测试框架和脚本Python/Java 居多搭建和维护 CI/CD 测试流水线开发内部测试工具造数据工具、压测平台等也要参与功能测试但核心价值在用代码提升测试效率2. 测试工程师传统测试岗核心是保障质量。偏手工测试 部分自动化重点是业务理解和用例设计。具体干啥分析需求文档拆解测试点编写测试用例Excel 或用例管理平台执行测试、提 bug、回归验证参与需求评审、设计评审从测试视角提意见3.实际招聘中岗位名称五花八门但本质上就上面两种。常见的招聘标题测试 / 测试工程师 / 软件测试 → 偏功能测试自动化测试 / 性能测试 → 偏专项测试开发 / 测开 → 要写代码移动端测试 / 游戏测试 / 硬件测试 / 渗透测试 → 特定领域给校招生的建议校招时不用纠结名字直接看 JD职位描述里要求的技能要 Python/Java 编码、要框架经验、要平台开发 → 测开方向要测试用例设计、要业务理解、手工测试为主 → 测试方向如果你本身会写代码秋招优先冲测开——薪资上限更高技术壁垒也更强。4.高频面试题测开 vs 测试工程师维度测开测试工程师核心能力编码能力 测试思维业务理解 用例设计日常工作写代码多手工测少手工测多自动化辅助技术栈Python/Java 框架 CI/CD用例管理工具 接口工具 部分自动化薪资天花板更高对标开发相对低一些适合谁喜欢写代码、想做技术喜欢分析、细心、不爱纯写代码对于测试的正确认知别觉得测试就是点点点——那是十年前的刻板印象。现在互联网公司的测试岗特别是测开技术含量一点不比开发低。你得懂代码、懂架构、懂业务、懂数据库、懂网络协议。测试和开发是两条平行的技术线不是开发干不了的才去干测试。三、软件测试和开发的区别3.1 工作内容岗位主要工作内容开发人员用编程语言实现软件功能特性、修 Bug测试人员编写测试用例、执行测试、发现缺陷、验收缺陷、利用工具保障质量简单说开发负责把东西做出来测试负责验证东西做对了没有。3.2 难易程度上开发人员要求编程能力强对业务逻辑实现负责需要深入理解框架原理、系统架构、数据结构。代码写不好就是写不好硬指标。测试人员要求知识面要广——得懂业务、懂代码至少能读、懂数据库、懂接口协议、懂部署流程、懂测试方法论。不要求每样都精但样样都要知道一点才能在各个环节发现问题。总结开发是深挖一口井测试是铺开一张网。没有谁比谁容易难度方向不同。说测试比开发简单的人多半是只看到了手工功能测试那一面。3.3 工作环境开发工位上对着 IDE 写代码和产品经理对需求和测试对 bug。测试工位上写用例、跑测试、提 bug和产品经理对需求理解和开发对 bug 复现步骤和严重程度。另外还要在测试环境、预发环境来回切换搭数据、造场景。两者在一个团队里日常沟通极其频繁。3.4 薪资同级别下测开 ≈ 开发的 80%~95%测试工程师 ≈ 开发的 60%~80%。但测开做到高级别后薪资和同级别开发差距很小个别公司甚至持平。初级测试工程师的起薪确实低于开发但随着自动化能力上去差距会缩小。3.5 其他不同调试 vs 测试维度调试Debugging测试Testing目的定位并解决程序中的问题发现程序中的缺陷参与角色主要由开发完成测试人员与开发共同执行执行阶段开发阶段贯穿整个软件生命周期调试是我知道有问题找到它、修了它。测试是我不知道有没有问题我想办法把它揪出来。一个在修一个在找。3.6 高频面试题问走测试岗位为什么还要学习开发知识答三个层面——读得懂代码才能测得准你连开发写的逻辑都看不懂怎么判断他对不对怎么定位 bug 在哪一层自动化测试本身就是写代码接口自动化要写 Python 脚本UI 自动化要写 Selenium/Appium不学开发根本干不了。和开发有效沟通提 bug 时能说清楚你在UserController的login方法里没做空指针判断开发立马服气只会说点了登录按钮报错了开发得花半小时复现。四、优秀的软件测试人员具备的素质4.1 综合能力测试工程师的基础底盘综合能力是测试人员职业发展的根基包含四个维度。1. 沟通能力测试是团队里的桥梁——对产品经理要确认需求细节对开发要描述 bug 现象和复现路径对运维要协调测试环境。沟通不畅轻则 bug 来回扯皮重则上线出事。具体要求提 bug 时描述精准什么环境、什么操作、什么结果、期望什么结果、能不能复现、复现概率多大需求评审时敢于提问这个按钮点击后如果网络超时怎么提示这个输入框最多输入多少字符和开发撕bug 时对事不对人是代码有问题不是你人有问题2. 快速学习能力测试每隔几个月可能换一个业务线——上个月测电商这个月测直播下个月测 AI 推荐。每个业务领域都得快速上手。三个层面业务层面快速理解新产品是干嘛的、用户怎么用、核心流程是什么技术层面新框架、新工具、新协议来了能快速上手比如从 HTTP 到 gRPC、从手动到 Playwright方法论层面不同测试类型有不同的最佳实践要快速判断这个场景用等价类还是边界值还是场景法3. 开发能力哪怕你是测试工程师不是测开也需要基本的开发能力能写 Python/Shell 脚本造测试数据能写 SQL 查数据库验证数据正确性能写简单的接口自动化脚本能读懂开发的业务代码定位问题大概在哪一层4. 文字能力测试产出大量文档测试用例、bug 报告、测试报告、风险评估。写得好不好直接影响团队效率。一条 bug 报告的好坏对比差的登录不了 好的在 iOS 15.4 的 iPhone 13 上用账号 test001/test123 登录 点击登录按钮后页面无响应Network 面板看到 /login 接口返回 500 后端日志报 NullPointerException复现概率 100%知识要点测试人员与开发、产品经理的工作关系角色核心职责开发人员实现业务功能、修复 Bug测试人员发现 Bug、编写用例、输出测试报告产品经理撰写需求文档、定义产品方向业务测试的切入路径以抖音为例产品经理写 PRD「抖音新增一起看功能支持两人同步看视频」需求评审测试参加提出两人网络不一样怎么同步断线重连怎么处理测试写用例正常流程发起→邀请→同步播放、异常流程对方拒绝、网络中断、视频结束开发提测测试执行用例发现对方拒绝后发起方没有提示→提 bug开发修 bug → 测试回归 → 验收通过 → 上线4.2 掌握自动化测试技术自动化是测试效率的倍增器。三种常见类型类型说明典型工具接口自动化自动请求接口并校验返回结果Python Requests pytestUI 自动化Web在浏览器上模拟用户操作并验证界面行为Selenium / PlaywrightUI 自动化移动端在手机上模拟用户操作Appium不是说所有测试都要自动化——手工测试在探索性测试上仍然不可替代。但回归测试每次发版都跑一遍的核心流程必须自动化不然每次发版通宵到天亮。4.3 测试用例的设计能力这是测试人员的核心专业技能也是区分初级和高级的关键指标。同样的功能初级测试写 10 条用例覆盖不了边界条件高级测试写 8 条就能把边界、异常、组合全覆盖——这就是用例设计的功力差距。常用的设计方法等价类划分把输入分成有效和无效两组每组选代表值边界值分析bug 最容易出在边界——0、1、-1、最大值、最小值、最大值1场景法按用户使用流程串起来覆盖正常流和异常流错误推测法凭经验猜这里大概率会出问题——比如输入框粘入超长文本、特殊字符提升路径多做项目积累经验 → 研读经典用例设计书籍 → 和同行做用例评审 → 持续复盘这个 bug 为什么我的用例没覆盖到。4.4 探索性思维测试用例再全也覆盖不了所有路径。有时候你得放下用例凭着直觉和经验去随便点点——这就是探索性测试。它的价值在于用例设计是基于已知场景的但最隐蔽的 bug往往藏在意想不到的操作组合里。比如先断网再点支付然后连网这种路径正常用例不会写但探索性测试能逮到。4.5 兴趣这看着像废话其实很重要。测试是个需要极度细心和耐心的工作——你要一遍遍重复操作、逐字逐行比对结果、在成百上千条数据里找异常。如果你天生坐不住、对重复操作极度反感、对找别人的错毫无成就感这条路走不长。反过来如果你享受逮到一个别人都没想到的 bug的那种快感喜欢像侦探一样顺藤摸瓜定位问题那测试很适合你。4.6 责任感和抗压能力责任感测试是上线前最后一道关。一个 bug 漏过去了上线后出事第一个被追责的就是测试——你为什么没测出来 这话你一定会听到不管是不是你的问题。所以好的测试人员有强烈的守门人意识我不签字的版本不能上线。哪怕产品说这个来不及修了先上你也要白纸黑字写清楚已知风险风险评估如下而不是稀里糊涂放行。抗压能力互联网行业的测试面临多重压力发版前通宵跑回归第二天还得继续上班开发改到最后一刻才提测留给你测的时间被压缩到极限线上出 bug 全员救火同时还要写复盘报告和开发对 bug 时被怼这不是 bug 是 feature扛得住这些才能走得远。4.7 高频面试题问为什么走测试岗位而不走开发岗位从三个方面回答1个人兴趣爱好我喜欢找问题胜过写功能。开发是把东西做出来测试是验证东西做对了没有——我更享受后者那种从无到有找缺陷的成就感。同时我也喜欢把重复的工作自动化掉所以对自动化测试和测试工具开发很感兴趣。2岗位性质测试岗位要求知识面更广——业务、数据库、网络、代码、部署都要懂这种全局视角更吸引我。而且测试的质量保障工作直接关系到用户体验一个 bug 拦住了成千上万用户就少受一次影响这种价值感很实在。3个人职业规划我希望先在功能测试中打好业务理解的基础逐步向自动化测试和测试开发方向发展最终成长为既懂业务又懂技术的全栈型测试人才。这样的发展路径既能发挥我的代码能力又不会局限在单一业务模块里。五、总结测试人员能力模型测试人员能力模型 │ ┌──────────┬──────────────┼──────────────┬──────────┐ 综合能力 自动化技术 用例设计能力 探索性思维 责任与抗压 │ │ │ │ │ ┌──┴──┐ ┌──┴──┐ ┌──┴──┐ ┌──┴──┐ ┌──┴──┐ 沟通 学习 接口 Web UI 等价类 边界值 直觉 经验 守门人 抗压 开发 文字 自动化 移动端 场景法 错误推测 探索 摸瓜 意识 压力一句话总结测试不是点点点是软件质量的最后一道防线。好的测试人员 广度什么都懂一点 深度至少自动化或性能某个方向扎进去 责任心该拦的 bug 一个不放 沟通力让团队信你说的话。这条路走下去天花板不比开发低。关键是别把自己当开发 Plan B而是当测试这个领域的专家来培养。
返回列表