[IT技术] 到底什么是软件测试?

[复制链接]
senholy 发表于 2023-10-22 16:15:58|来自:福建 | 显示全部楼层 |阅读模式
一直很郁闷,团队负责上下位机编程,喜欢直接真机”调试”,说”没时间,要赶进度”,能”少写文档和UML”。咱家不求一定来个单元测试,但真心看不懂。
全部回复5 显示全部楼层
Sprite 发表于 2023-10-22 16:16:25|来自:福建 | 显示全部楼层
如果从字面意义来解释,就是对软件产品进行测试,然后发现问题。
但是在具体的工作之中,因为项目和角色的不同,具体工作内容又会有所区别。
测试用例设计、执行测试过程、测试总结和测试文档的撰写。
整个的系列过程包括需求分析、测试计划的设计、用例的设计、然后执行测试,这个流程并不是单独的,而是贯穿于整个周期,在项目的每个阶段,都要分不同目的、不同内容进行测试活动,进而保证每个阶段部分的正确。
比如通过白盒、黑盒、等价类、边界值等手段找到错误,提交上去,让开发们去改。
延伸的讲,白盒就是通过代码层找bug,黑盒就是功能测试或者叫手工测试,就是简单的看看功能有没有毛病,灰盒就是两者之间嘛。
单元、集成、系统测试是分为不同的单位去做测试的。回归测试是指进行二次测试,验收测试是通过用户的反馈情况进行测试。
等价类、边界值、因果图、判定表、正交排列、错误推算、场景法这些都是功能测试的内容。
负载、压力这些属于性能测试。
当然这些都是属于基础知识了。
测试开发,严格意义上来说,会的要比开发更多,只不过很多人并不愿意去承认。
首先是人工的测试需要去做,第二个是自动化的测试要去做,第三个,专项的测试也要去做,之后是什么呢,测试的左移,对研发质量要提前发现一些问题,同时上线之后的产品要进行质量的监控,发现一些线上用户的崩溃问题,了解所有的业务场景。所以在总体的范围里面,测试比研发更有前途的。在技术能力的要求上,也要求测试具备比研发所不知道的一些东西。
举个例子,耗电量怎么去测,内存泄漏怎么去测,一些底层的性能,压测怎么去测,这些东西研发日常是接触不到的,反而是我们测试经常需要去关注这些指标。测试是比研发更有价值的一个岗位,但是遗憾的是,我们。行业所有的测试基本上都去忙点点点去了,忽略了对质量体系的建设,以及测试流程的建设。
sasa516 发表于 2023-10-22 16:16:41|来自:福建 | 显示全部楼层
一、基本概念

1.软件测试的定义
找到软件的问题,确保修复;
2.软件测试方法总体分类

  • 试图验证软件是“工作”,就是软件功能按照预先设计执行的;
  • 设法证明软件是“不工作的”;
虽然软件测试总目的是为了软件产品的质量,但很明显的上面两种方法目的一样,但是具体操作上完全不一样。
这边为你准备了100+企业的笔试面试真题,覆盖有大厂、中小企业等,还有面试指导、重点解析等等。可以自行下载,刷完这些题目,能通过90%的测试面试!还可以检查下自己的技能掌握情况!
3.软件测试的组成
软件项目是以文档、数据以及程序组成的,所以软件测试应该是对软件开发中形成的文档、数据以及程序进行测试,目前很多人软件测试只是对程序的测试。
4.软件质量
ISO9126中定义的软件质量是:软件满足规定和潜在用户特求特性的总和,而2001年的软件国际标准中,把软件质量分成了:内部质量、外部质量、使用质量这三个部分。也就是软件满足规定和用户需求的能力,要从软件在内部、外部和使用中的表现来衡量。

  • 内部:单元测试、安全性能测试等....
  • 外部:系统功能测试、界面测试等...
  • 使用表现:易用性测试,用户体验性测试等
5、软件测试与质量保证的区别(QA与Tester区别)
质量保证(QA)是通过预防、检查和改进来保证软件质量,即全面的质量管理与过程改进来开展质量保证工作;软件测试是执行软件,对开发文档和源代码进行走查,以找出问题,报告质量。
6、软件测试的目的
以最少的人力、物力和时间找出软件中潜在的各种错误与缺陷,通过修正各种错误与缺陷提高软件的质量,回避软件发布后由于软件缺陷和错误造成的隐患所带来的风险。
7、软件测试的原则

  • 1)所有的软件测试应该蒴源到用户的需求
  • 2)尽早的将软件测试贯穿到软件开发的全过程中
  • 3)完全测试是不可能,测试需要中止
  • 4)测试无法保证软件中完全没有缺陷
  • 5)充分注意测试中错误集群现象
  • 6)应避免自己检测自己的程序
  • 7)应避免测试的随意性
  • 8、软件测试的分类
如果你是想入行软件测试,这边分享了【软件测试入门必备资料包】,非常适合小白学习,课程配项目练习,助力小白轻松入行软件测试。点击下方链接获取资料
按软件开发阶段划分
1)单元测试:又称模块测试,对程序模块进行检验。
2)集成测试:又称组装测试,检验程序单元的接口关系。
3)确认测试:通过检验和提供客观证据,证实软件是否满足特定的预期的用途要求。
4)系统测试:确认系统是否达到目标要求,对集成的硬件,软件系统进行测试。
5)验收测试:按照项目任务书或合同。供需双方约定的验收依据文档进行的整个系统的测试与评审,决定是否接受或拒绝系统。
按测试的实施组织划分
1)开发方测试:又称验证测试,或α测试
2)用户测试:又称β测试
3)第三方测试:又称独立测试
α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的测试。α测试的目的是评价软件产品的FLURPS(即功能、局域化、可使用性、可靠性、性能和支持)。尤其注重产品的界面和特色。α测试可以从软件产品编码结束之时开始,或在模块(子系统)测试完成之后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。
β测试是指软件开发公司组织各方面的典型用户在日常工作中实际使用β版本,并要求用户报告异常情况、提出批评意见,然后软件开发公司再对β版本进行改错和完善
按测试技术划分
1)白盒测试:对内部结构进行分析,检测寻找问题。
2)黑盒测试:通过软件的外部表现来发现缺陷和错误。
3)灰盒测试:介于白盒与黑盒之间,关注输出对输入的正确性;同时也关注内部表现,只通过一些表征性的现象、事件、标志来判断内部的运行状态。
9、测试类型
1)功能测试
功能测试是一个试图发现程序与其外部规格说明之间存在不一致的过程。外部规格说明是一份从最终用户的角度对程序行为的精确描述。测试时按照科学方法设计的测试用例执行测试,在优先保证测试用例执行完全的前提下,再根据对业务的了解和经验性的判断进行探索性测试。
2)界面测试
界面测试简称UI测试,界面为用户与软件交互最直接的层,所以更注重用户的体验性,主要从用户的感官、交互、浏览、情感和体验出发。具体测试用户界面的功能模块布局是否合理,整体风格是否统一,各个控件的放置位置是否符合客户使用习惯,是否符合操作便捷,导航是否简单易懂,界面中文字是否正确,命名是否统一,页面美观,文字、图片组合是否完美等等。测试时可以按照最终用户具体的需求,以及通用的用户体验原则进行测试list的编写,然后测试人员根据list执行。
3)兼容测试
兼容性测试是指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操纵系统平台上、不同的网络等环境中是否能够很友好的运行的测试。通常兼容性测试为软件在不同浏览器、操作系统和分辨率下的兼容测试。测试时测试人员按照软件的具体兼容性需求进行测试。
4)易用性测试
考察评定软件的易学易用性,各个功能是否易于完成,软件界面是否友好等方面进行测试。测试时可以根据用户需求,以及同类行业软件对易用性的通用原则列出测试list,然后测试人员根据list执行。
5)性能测试
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
测试分为三个大的步骤进行:
一、测试前的准备工作,包括确定用户、业务、系统需求,了解被测系统所属类别(如B/S结构),测试环境构成(系统配置基线清单),测试环境网络拓扑图,实际网络带宽情况,测试服务器及测试机配置清单,系统功能流程图及测试时间;
二、测试实施,依次为制定测试计划、编写测试方案,设计测试用例,录制测试脚本,模拟测试场景及运行测试;
三、测试结尾,依次为分析测试结果及定位瓶颈,编写性能测试报告,做性能测试总结。
10、系统功能测试方法

  • 功能分解
  • 等价类划分
  • 边界值分析
  • 因果图法
  • 其他测试方法
这部分可以参考下面课程
这边为你准备了100+企业的笔试面试真题,覆盖有大厂、中小企业等,还有面试指导、重点解析等等。可以自行下载,刷完这些题目,能通过90%的测试面试!还可以检查下自己的技能掌握情况!
11.测试过程是依相反顺序安排的自底向上,逐步集成的过程

知乎在修复暂时不能发图片,光文字不好表达,日后来更新。
福利福利
​​软件测试笔试面试资料大全,轻松通过98%的软件测试面试
最全软件测试资料分享 50G软件测试教程资料免费领取
更多软件测试行业干货和免费学习资料,关注  @乐搏学院
推荐阅读最后,给大家一个福利,分享软件测试学习资料包!包含软件测试入门-进阶-高级课程,项目实训,思维导图等,可以自行下载!还可加入测试交流群,不定期发布名企内推信息!
<a href="http://zhuanlan.zhihu.com/p/112506139" class="internal">乐搏学院:从初级软件测试,到高级软件测试的必经之路
乐老师:软件测试必备知识点梳理
乐搏学院:想找软件测试工作,应该要怎么进行技术面试准备?
乐搏学院:IT行业面试的谈薪资技巧!
weekeight 发表于 2023-10-22 16:16:57|来自:福建 | 显示全部楼层
很多人听到软件测试是干什么的?第一反应就是找bug的,哈哈


咱们来看看软件测试的职业定义:在软件生产过程中,手工或者利用软件测试工具(自动)有计划地检查程序代码和用户文档,检查软件功能和软件性能,来发现软件产品中存在的问题(bug),并追踪和验证问题(bug)的处理。
测试是为发现错误而执行一个程序或者系统的过程,测试是为了证明程序有错,而不是证明程序无错误。
软件测试是对软件形成过程中的所有工作产品(包括程序以及相关文档)进行的测试,而不仅仅是对程序的运行进行测试。
测试test是全过程的;调试debug是开发过程的;
调试的目标:零error,没有错误,方法:比较依赖于工具。
测试的目标:零缺陷(不是数字0,指的是软件产品经过发布之后,虽然有缺陷,但是用户可以接受和容忍的)。
方法:手工,工具(白盒测试:代码审查--通过阅读代码,发现问题。)
调试的对象是代码;测试的对象实整个软件产品(代码,数据,文档等)
软件测试的目的是尽可能早的找出软件产品中潜在的缺陷,并确保得以修复(发现缺陷后)--测试开始的越早越好(有计划,有过程,有结束)
真正的测试就是从发现缺陷开始,跟踪缺陷,确保缺陷被修复(处理)
调试的话,没有计划(只有运行代码,知道错误代码在哪),先找错的地方在哪,然后才能改。
调试就是在代码中,测试的话,就是贯穿于整个生命周期,所以真正的测试是一个独立的过程,调试是依附于开发的子过程,而测试是独立于开发的。
qca8829 发表于 2023-10-22 16:17:05|来自:福建 | 显示全部楼层
首先需要搞清楚软件是什么?软件是程序、数据和文档的集合。那么测试软件就是测试程序、数据和文档的集合。
程序和数据大家一般都能理解这是我们的主要测试对象,那么文档测试测什么呢?软件开发过程中的文档有很多,比如计划、需求、概要设计、详细设计、数据库设计和用户手册等都可以是我们的被测对象,因为开发过程中有了这些文档,同时确保文档没有问题的话,一方面是不同阶段工作成功的体现,另外一方面可以更好的帮助和指引项目成员完成项目。
业界目前两大主流软件开发模型,一个是瀑布模型,一个是敏捷模型。
前者适用于需求明确即不频繁变化的项目,一般交付周期比较长,强调的是过程及过程中的文档,往往前面阶段遗留的问题,最后到了测试阶段才被发现,问题发现的越晚越难解决解决问题的成本也越高。
后者是当前最主流的一个软件开发模型,备受推崇,很多大中小企业都在或即将使用该模型做软件。
敏捷模型宣言强调的是:1.个体和交互胜过过程和工具;2.可用的软件胜过面面俱到的文档;3.客户协作胜过合同谈判;4.响应变化胜过遵循计划。
瀑布模型推崇的是4项的后者,而敏捷认同后者的价值,但更看重的是前者四项。但不是开发过程一味的什么文旦都不写或者写的很少,或者根据团队个人的心情甚至项目紧张程度来定。
题者言语之间表明的公司开发过程现状,同样也存在于很多企业的项目团队当中,主观或被动的求短平快的完成项目,殊不知往往会由于没有计划好、设计文档没有设计好、不遵循合适的流程等原因造成的大量问题甚至返工推到重来现象层出不穷。
作为一名测试工程师你,应该暂时没有这个能力去改变什么,建议现阶段优先增强自己的适应能力,多学点技术比如单元测试等。
等待未来有没有机会调整或是扭转下,实在不行翅膀硬了跳槽即可,正规的好的公司多得是。我相信游击队式的黑作坊不可能一辈子都是黑作坊,有的适应不了成为时间的炮灰;有的时间长了碰到的问题多了也就慢慢会调整过来的,以便适应未来趋势,当然过程中少不了许多的摩擦和成长的痛楚。
仪琳 发表于 2023-10-22 16:17:39|来自:福建 | 显示全部楼层
看了你的问题。首先先解释一些,什么是软件测试。尽管可能你要问的并不是。但是我觉得有必要说一下,这是知乎上软件测试这个话题的介绍,我觉得很中肯。


软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。具有人工操作或者软件自动运行两种方式。 它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness) 、完全度(completeness)和质量(quality)的软件过程;是SQA(software quality assurance)的重要子域。
其次,说一下你问题中的调试。那确实需要进行,因为正常情况下,开发人员在做出来程序模块后,需要进行调试。
调试,这是开发人员的事,就算是真机调试,那也是调试,绝不是测试。
测试是要发现问题的,并且是有需求作为依据。
团队中有人如果有错误的认知,可以提醒,或者坚持作为测试人员认为对的事情。

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则