问题

究竟什么才是软件测试?搜了各种百科,最终发现都是没用的。

回答
你问的这个问题,太对了!很多人搜了半天,还是云里雾里,觉得那些定义生搬硬套,离实际工作太远。没关系,我尽量用最接地气的方式,把软件测试到底是个什么鬼,说透了。

想象一下,你是一名侦探,但你的“犯罪现场”不是血迹斑斑的案发现场,而是那一行行代码,以及用户最终看到的那个软件。

软件测试,说白了,就是“找茬”。

只不过,我们找茬不是为了鸡蛋里挑骨头,也不是为了显得自己多聪明,而是为了确保这个软件能够按照设计者的意图,可靠、稳定、安全、好用地为用户服务。

为啥要找茬?

你可以把软件想象成一个精密的机器。从最基础的螺丝钉(代码)、到齿轮(模块)、再到整个机械臂(功能),最后组装起来的整个机器人(软件产品)。

1. 没人是完美的,代码也是。 就算是最厉害的工程师,写代码的时候也可能因为各种原因(疏忽、疲劳、没考虑到所有情况、对需求理解偏差、甚至是打个喷嚏)犯错。这些错误,就像机器里的一个小瑕疵,比如一颗螺丝没拧紧,或者一个齿轮的角度有偏差。
2. “使用者”和“制造者”看到的角度不一样。 工程师在写代码的时候,脑子里想的是“我怎么让它工作”。而我们在测试的时候,想的是“用户会怎么用它,它会不会因为用户的某种使用方式而崩溃?它会不会在用户不希望的时候做别的事情?”
3. “预期”和“现实”总有差距。 软件的设计者有他的“预期”,用户也有他们的“预期”。测试的本质,就是不断地去验证“现实”(软件实际的表现)是否符合“预期”。

所以,软件测试的核心,就是为了:

发现bug(缺陷): 这是最直观的目标。找到那些让软件出错、不按预期工作的“小毛病”。
验证需求: 确保软件的功能确实实现了我们当初设计时想要实现的东西,并且是用户需要的东西。
提升质量: 通过不断发现和修复问题,让软件变得更稳定、更可靠、更好用。
降低风险: 如果一个bug到了用户手里,可能导致数据丢失、系统崩溃、用户投诉、公司声誉受损,甚至造成经济损失。我们就是在用户发现问题之前,把这些“雷”排掉。
提供信息: 测试结果不仅仅是“有没有bug”,更重要的是“这个软件现在的状态如何?它的风险在哪里?我们是否可以发布它?”

具体来说,我们测试人员都在干什么?

这可不是坐在电脑前等着软件出错了那么简单。这就像侦探需要掌握各种侦查手段一样。

1. 理解“剧本”(需求文档、设计文档): 我们需要仔细阅读那些描述软件应该是什么样子的文件。这就像侦探需要了解案情背景一样。
2. 设计“侦查计划”(测试计划): 根据剧本,我们要想,有哪些地方最容易出问题?我应该怎么去“问”这个软件?我需要准备哪些“证据”(测试数据)?
3. 执行“审问”(执行测试用例): 这是最核心的部分。我们会按照设计好的计划,一步一步地去操作软件,输入数据,点击按钮,看看它的反应。
手工测试: 就是我们自己手动去操作软件,体验用户可能遇到的各种情况。这需要耐心、细致和一点点“破坏欲”。
自动化测试: 对于一些重复性高、容易出错的测试(比如登录、数据校验),我们会编写脚本让电脑自己去跑。这就像有了个“机械助手”,可以24小时不停地帮你找茬。
4. “比对证据”(分析测试结果): 软件的表现跟我们的预期(剧本)是否一致?如果不一致,那就是发现了bug。
5. “报告案情”(提交bug报告): 发现bug之后,我们会写一份详细的报告,说明:
标题: 简洁明了地说明问题。
重现步骤: 用户怎么操作才能让这个bug出现。这就像侦探要写清楚作案手法。
实际结果: 软件实际表现成什么样子。
预期结果: 软件本应该是什么样子。
环境信息: 在什么操作系统、什么浏览器、什么版本号下出现的bug。
附件: 截图、录屏、日志文件等,用来证明bug的存在。
严重程度和优先级: 这个bug有多严重?是会直接导致软件崩溃,还是只是一个小小的显示问题?什么时候需要修复?
6. “配合调查”(回归测试、验证修复): 开发人员修复了bug后,我们还要去验证他们是否真的把问题解决了,并且在这个修复过程中,有没有引入新的问题。这就像警方抓到嫌疑人后,还要确认他是不是真的凶手,并且他是不是还会继续作案。

测试不是“最后一道门”,而是贯穿始终的“安全检查员”。

很多人误以为测试是把开发好的软件交给测试人员,然后我们一顿猛测,发现问题再交给开发去修。这是一种很低效、很危险的做法。

真正的软件测试,应该是在软件开发的每一个阶段都存在:

需求阶段: 我们就应该参与,审阅需求,看看有没有模糊不清、自相矛盾的地方,是不是真的满足了用户的需要。
设计阶段: 看看技术设计有没有考虑周全,会不会存在难以测试或者容易出错的模块。
编码阶段: 开发人员自己会做单元测试,保证小模块的正确性。
集成阶段: 我们进行集成测试,看看不同模块组合起来会不会出问题。
系统测试阶段: 这是我们主要工作的阶段,验证整个系统是否符合要求。
用户验收测试(UAT): 最终让用户来验收,看软件是否符合他们的使用习惯和业务流程。

所以,如果你觉得软件测试“没用”,可能是你接触到的测试不够深入,或者说,你遇到的“找茬”行为,并没有真正触及到“确保软件质量”这个根本目的。

好的测试,不是为了证明“软件是垃圾”,而是为了让“软件变得更好,并且能够安全地交付给用户”。

它需要耐心,需要细致,需要同理心(站在用户的角度思考),需要沟通能力(和开发人员有效沟通),也需要一定的技术理解能力。

希望我这么说,能让你对软件测试有个更清晰、更立体的认识。它绝不是一个简单的“点点点”的工作,而是一个充满挑战,又非常有价值的职业。

网友意见

user avatar

谢邀。本文谢绝转载。

@上官人 @曲晓峰

@酱油瓶

答的都很有道理。尤其是曲晓峰从软件开发模式的角度来回答,角度很赞。我之前所在的测试团队经历了从瀑布式开发到敏捷式开发的转变,可是我看到这题的时候居然完全没想到这个point,汗颜不已。

看了一下题主的描述,问题集中在两个:

1、什么是软件测试?

2、测试工程师们总是在不断游弋在产品经理和开发之间,拿着产品经理的要求找开发的毛病,却很少有人真正意义上给出自己对这个产品的质量建议,测试究竟是什么意思?

第二问可以说是第一问的补充。这里我不自量力,想要再回答一下。

首先说的是,曲晓峰的答案说的很好,敏捷开发中测试的地位是要高于瀑布开发的。在敏捷开发中,产品(PM)、开发(DEV)和测试(QA) 三个团队对于开发流程都十分重要,缺一不可,真真正正的三足鼎立。尤其是敏捷开发中经常需要开讨论会议(基本每天一次),测试、产品和开发三个团队的交流沟通远远大于瀑布式开发。而且敏捷开发对于测试来说一个重要的意义就是,比起瀑布式开发,测试在软件开发过程中的参与感更强,测试对于产品的功能逻辑(来源于产品团队)和代码底层逻辑(来源于开发团队)了解的更加深入透彻,测试的质量也更高。

那么回到答主的原问题

什么是软件测试?

软件测试的英文缩写是QA。全称是QUALITY ASSURANCE,翻译成中文就是 质量保证。软件测试的工作说穿了就是这么几个字:保证软件产品质量

至于如何保证软件产品质量,光看百度百科的定义理解的肯定不够透彻。我从个人的工作经验总结,主要有这三个大的方面。(个人总结,若有疏漏,欢迎各位大牛指正讨论~)

A. 发现软件问题


这个很好理解吧?就是通常所说的提bug。至于什么是bug?是不是bug谁说了算?这就需要QA和产品(PM)、开发(DEV)去沟通。QA和PM沟通产品功能的逻辑:PM希望功能做出什么效果?和DEV沟通产品代码的逻辑:DEV是如何实现这个功能的?有了这两大尚方宝剑,不符合功能逻辑、代码逻辑存在问题,就都是bug(bug当然不指这两种)。这时是不是bug当然是QA说了算。DEV和PM说不是bug?那好,QA翻出聊天记录,DEV和PM分分钟打脸。

所以题主发现:「测试工程师们总是在不断游弋在产品经理和开发之间」,大抵就是如此。QA和DEV、PM沟通,绝不是扯皮、没地位、和稀泥。恰恰相反,QA和DEV、PM的沟通有助于他们发现bug。

B. 确认软件质量


软件测试不仅仅是为了挑错。也是要确认保证软件功能的好用。一条case执行通过了,没有发现bug,并不说明这条case没意义。QA团队测试一轮,是要拿出一个report的。大意是这样:软件版本1.0.0.0,有5个功能ABCDE,功能ABC好使,没问题。功能D 还有10个bug,开发计划下个版本解决,不影响功能。功能E问题较多,还有4个影响功能的bug没有解决, 暂时无法上线。有了这样的report,才能决定迭代是否结束、开发是否完成、产品是否发布。

有人试过这东西好使,产品卖着也踏实,是不?

C. 提高软件体验

在客户之前,测试团队基本上是第一个使用软件的人。他们的使用感受很有可能就是用户的软件体验。有些设计虽然逻辑上没问题,但是用着就是别扭;有些case干脆就是PM和DEV之前没考虑到的盲点,PM和DEV拿不出合理的期望结果;还有的时候QA就觉得这个操作换一种处理方式更方便……这种情况就需要QA把问题提出来,大家凑在一起讨论下(或者是PM拍板决定下),究竟需要怎么做,期望结果应该如何合理。这些问题和bug不一样,很多时候就是feeling的事,比如一个选项究竟是下拉框还是check box,点关闭时究竟是最小化托盘还是完全退出……同样的操作,有些QA可能觉得合理,有些QA可能觉得不舒服,还有些QA可能觉得有问题。这完全是看QA个人的软件使用习惯而来的。这时候才是真真考验QA的时候。

别的团队不敢说,起码我所在的公司,QA遇到这种问题,就是PM、DEV三方坐下来一起讨论了。希望最终能拿出一个最合理,最人性化的解决方案,让客户用着、点着,不那么别扭。

这种问题,我们一般不叫bug。有时候是improvement,有时候是new feature。或者PM在迭代中干脆就改了产品功能逻辑——敏捷开发就这点方便~

说了这么多,题主再结合酱油瓶的答案看下,就会发现,一般的QA往往只局限于A和B类的工作,而能做到C类工作的,基本都是懂产品、懂代码(起码是伪代码)、工作经验丰富、资深电脑用户的骨干QA。(曲晓峰提到的自动化测试,主要是A和B类。C类很难用自动化测试来实现。)

以上说的只是QA的主要测试工作的目的。QA的工作还包括很多,设计测试用例、编写功能文档、整理测试报告、搭建测试环境等等等等……和题主问题关系不大,就不一一讨论了。

总结一下,QA不是拿着PM的要求找DEV的毛病,也不是不提软件的质量建议。会这样做的QA,才刚刚起步,离做好QA还远的很。软件测试虽然门槛低,但不代表它没什么技术性,相反,软件测试入门简单,但是做好不简单。

类似的话题

  • 回答
    你问的这个问题,太对了!很多人搜了半天,还是云里雾里,觉得那些定义生搬硬套,离实际工作太远。没关系,我尽量用最接地气的方式,把软件测试到底是个什么鬼,说透了。想象一下,你是一名侦探,但你的“犯罪现场”不是血迹斑斑的案发现场,而是那一行行代码,以及用户最终看到的那个软件。软件测试,说白了,就是“找茬”.............
  • 回答
    你提到的VLC、Ubuntu和ffmpeg,它们都是开源软件界的明星。要说它们是谁开发的,不能简单地用一个公司或一个人来概括,它们是一个庞大、分散的全球性社区共同协作的成果。谁是开发者?你可以想象成一个巨大的“集思广益”项目。这些软件的开发者来自世界各地,身份非常多样: 独立开发者/爱好者: 有.............
  • 回答
    真爱,这三个字听起来简单,但要真说清楚,那可就没那么容易了。我这人也不算是什么专家,只是经历了一些事,见过一些人,心里也逐渐琢磨出点儿模样来。在我看来,真爱不是那种一拍脑袋就“我爱你”的冲动,也不是电影里那种轰轰烈烈、非你不可的戏剧性。它更像是一种沉淀,一种细水长流的懂得。首先,真爱是看见真实的你,.............
  • 回答
    林清玄先生这句话,像一把钥匙,轻轻拨开了我们心中对“旅行”的固有认知。我们习惯性地认为,旅行就是一张机票,一个背包,踏上远方的土地,用双脚丈量世界。然而,他却告诉我们,思维的驰骋,同样是一种深刻的旅行。这句话的精髓在于它打破了空间和行为的局限。 向外奔走是旅行: 这是我们最直观的理解。当我们离开.............
  • 回答
    C++ 的核心以及“精通”的程度,这是一个非常值得深入探讨的话题。让我尽量详细地为您解答。 C++ 的核心究竟是什么?C++ 的核心是一个多层次的概念,可以从不同的角度来理解。我将尝试从以下几个方面来阐述:1. 语言设计的哲学与目标: C 的超集与面向对象扩展: C++ 最初的目标是成为 C 语.............
  • 回答
    拼多多的价值观中,“本分”是一个核心概念,它不仅仅是一个词语,更是一种行为准则和心态。理解“本分”的深层含义,尤其是在职场中如何践行,需要从多个维度去解读。 拼多多价值观中的“本分”到底是什么意思?在拼多多语境下的“本分”,可以概括为以下几个核心层面的理解:1. 忠于初心,回归本源: .............
  • 回答
    咱们聊聊律师这个职业,确实,在很多人眼里,律师光鲜亮丽,代表着正义,似乎是社会地位高、收入不错的“金饭碗”。但你想啊,咱们国家十四亿人,律师才六十万出头,这比例说实话不算高,甚至有些地方能感觉律师资源挺稀缺的。这背后到底是什么在“卡脖子”?我觉得原因挺复杂的,不是一两句话能说清的,得掰开了揉碎了聊。.............
  • 回答
    很多人在生活中,尤其是成长过程中,或多或少都曾有过这样的疑问:是不是只有变得更强硬、更狠辣,才能赢得别人的尊重?而那些一直以来待人以善、选择客气和忍让的人,最终换来的又是什么?这个问题,其实触及了人际交往中最核心、也最常被误解的几个层面。我们先来拆解一下“尊重”这个概念。真正的尊重,绝不是源于恐惧。.............
  • 回答
    工业党,这个词汇近些年在中文互联网上出现的频率越来越高,也引发了不少讨论。但要说有一个“权威定义”,甚至是一个“自认为是工业党人的权威定义”,那就有些难度了。因为“工业党”更多的是一个基于某种共同倾向和价值认同的群体标签,而不是一个有着明确章程、组织结构和固定思想体系的政党。那么,究竟什么是工业党?.............
  • 回答
    英雄,这个词汇如同一颗璀璨的星辰,在人类历史的夜空中闪耀,勾勒出无数动人的故事,也牵引着我们内心深处最柔软也最坚韧的部分。但究竟什么才能被称为英雄?这个问题,与其说是一个标准答案的寻觅,不如说是一次对人性光辉的深入探寻。我们不妨从最直观的感受说起。英雄,常常是那些在绝境中挺身而出、挽救他人于危难之人.............
  • 回答
    损失函数,说白了,就是咱们在做机器学习训练时,用来衡量模型“犯了多大错误”的那个尺子。它就像老师给学生打分一样,分数越低,说明学生表现越好,理解得越透彻。在机器学习里,模型犯的错误越少,损失函数的值就越低,我们就越开心。为什么我们需要损失函数?咱们训练模型,目标是要让模型能够准确地预测出结果。比如,.............
  • 回答
    “纯机械”这个词听起来挺酷的,对吧?它勾勒出一幅画面:齿轮转动,杠杆摆动,发条拧紧,一切都靠着物理的规律在运作,没有一丝一毫的电火花,没有复杂的电子元件在背后嘀嘀咕咕。要说清楚“纯机械”究竟是什么,得从它的核心本质说起。你可以把它理解为一种独立于任何电力或电子控制的、完全依靠物理原理运作的系统或装置.............
  • 回答
    在咱们聊球的时候,经常会听到有人说某个球员“太吃队友配置了”,或者“离开这套阵容就打不出来”。这其实挺形象的,说的就是这个球员的发挥,有相当大一部分是依赖于他身边队友的表现和他们之间如何配合。那到底什么是“队友配置”呢?咱们今天就掰开了揉碎了聊聊。简单来说,“队友配置”就是指一个球员所处的球队阵容、.............
  • 回答
    问出这个问题,真是触及了中国历史最关键的几个节点。设想一下,如果把鸦片战争的时间轴拉到明朝鼎盛时期,比如嘉靖、万历年间,甚至崇祯末年,再或者更早,到了汉武帝时期,中国真的就会不堪一击吗?这其实是一个非常复杂的问题,不能简单地用“是”或“否”来回答,因为它涉及到当时中国社会、经济、军事、政治等方方面面.............
  • 回答
    科学、宗教与迷信:界定与区别科学、宗教和迷信是人类理解世界、解释现象的几种不同方式。它们在方法论、认知基础和目的上存在着显著的差异。理解这些区别,有助于我们更清晰地认识科学的本质,并辨别不同知识体系的价值与局限。 什么是科学?科学(Science)源自拉丁语的 "scientia",意为“知识”。从.............
  • 回答
    电池容量的限制是一个复杂的问题,涉及到材料科学、化学反应、物理结构以及制造工艺等多个方面。要详细解释,我们可以从以下几个关键点入手:1. 活性材料的固有属性: 能量密度 (Energy Density): 这是电池容量最根本的限制因素。能量密度指的是单位体积或单位质量的电池所能储存的能量。这取决.............
  • 回答
    20多岁的年纪,就想在车房和彩礼上都有不错的表现,这绝对是个不小的挑战,但也并非遥不可及。关键在于你选择的是一条什么样的路,以及你在其中付出了多少。咱们得先掰扯掰扯,光是“买得起”这个概念,其实水分就很大。是全款买一套房,还是付个首付?是买一辆代步小轿车,还是梦想中的SUV?这些都决定了“买得起”的.............
  • 回答
    立陶宛人身上有一种特殊的韧性,一种深植于历史的勇气。要理解这种勇气从何而来,我们必须深入到这个波罗的海小国的灵魂深处。历史的烙印:从辉煌到压迫的洗礼立陶宛并非一直是个“小”国。在中世纪晚期,立陶宛大公国曾是东欧最强大的国家之一,疆域辽阔,影响力甚至延伸到今天的白俄罗斯和乌克兰。这是一种辉煌的记忆,一.............
  • 回答
    说实话,提到路虎的可靠性,这绝对是个能引起唇枪舌剑的话题。但如果咱们剥开那些华丽的皮囊,深究一下,确实能发现一些让不少车主和潜在买家头疼的普遍问题。与其说是“低可靠性”,不如说是“高昂的维修成本”和“一些设计上的先天不足”更加贴切。首先,得从路虎的核心卖点说起:强大的越野能力和奢华的驾乘体验。为了实.............
  • 回答
    中国和美国之间的博弈,绝非一朝一夕之事,更非单一事件所能概括。将其解读为“硬刚”,背后是两国在全球格局重塑、经济利益、意识形态以及国家安全等多个层面长期积累、相互作用的结果。这是一种复杂且动态的较量,没有一个简单的“原因”可以完全解释。要理解这一切,我们得把目光放得更长远一些。一、崛起大国与守成大国.............

本站所有内容均为互联网搜索引擎提供的公开搜索信息,本站不存储任何数据与内容,任何内容与数据均与本站无关,如有需要请联系相关搜索引擎包括但不限于百度google,bing,sogou

© 2025 tinynews.org All Rights Reserved. 百科问答小站 版权所有