1.测试 —— 答疑篇

2023-09-21 11:33:22

什么是软件测试:

软件测试是不是就是找 bug
软件测试就是证明软件不存在错误的过程
软件测试就是为了证明程序能够正确运行
刚新买来一部手机,我们要干什么?
一场考试 , 做完一遍题目之后 , 进行一遍检查 , 就是在 " 测试 "
买一台电视 , 安装好之后打开试试看能不能正常使用 , 也是在 " 测试 "
概念:验证软件功能是否满足用户的需求。
  • 1979年,Glenford Myers(美 梅尔斯),<软件测试艺术>[The Art of Software Testing]:为了发现错误而 执行程序或者系统的过程
  • 1983年,Bill Hetzel在《软件测试完全指南》(Complete Guide of Software Testing)一书中指出:测试是以评价一个程序或者系统属性为目标的任何一种活动。测试是对软件质量的度量。
  • 1983年,IEEE软件工程标准术语:使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。软件测试的定义随着发展而不断扩展,但是不可否认的是软件测试最基本的活动就是找bug。而不同的定义只 是说明了测试的目的以及如何来衡量测试是否成功。

软件测试的发展:

1. 软件调试
2. 独立的软件测试( 1950~
3. 软件测试的第一次定义( 1973~Bill Hetzel ),软件测试就是对程序能够按预期的要求运行建立起一种信心
4. 软件成为专门的学科( 1980~
5. 开发与测试的融合( 2000~

测试与调试的区别:

目的不同
测试的任务是发现程序中的缺陷;调试的任务是定位并且解决程序中的问题。
参与角色不同
测试主要是由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元 / 集成测试主要是由开发人员执行。调试由开发人员完成。
执行的阶段不同
测试贯穿整个软件开发生命周期,调试一般在开发阶段。

软件测试岗位有哪些

1. 软件测试开发工程师( SET ), software engineer in test google 的角色划分
开发角色,工作重心为可测试性以及通用测试基础框架。编写单元测试框架和自动化测试框架。 SET 关注质量提升和测试覆盖率。
2. 测试工程师( TE ), test engineer google 的角色划分
SET 关系密切,但把用户放在第一位来思考。 TE 组织整体测试实践,并进行分析总结,驱动测试执行,构建端到端的自动化测试。
3. 软件开发测试工程师( SDET ), software development engineer in test ,微软的角色划分
通常称为测试人员( Tester ),负责高标准的测试和质量保证,需要编程能力
4. 按测试对象划分: WEB 测试工程师、 APP 测试工程师、游戏测试工程师 、嵌入式测试工程师
5. 按是否手工:手工测试、自动化测试
6. 按测试分类:功能测试、性能测试、安全测试等
7. 按级别:初级、中级、高级、资深、组长、主管、经理、总监等

软件测试在不同类型公司的定位

  • 无组织性
  • 专职VS.兼职
  • 项目性VS.职能性
  • 综合性
1. 无组织性
最简单的软件测试组织形式就是没有任何组织的测试,几个人就把所有软件测试工作做完,这样做没有任何分工、没有任何层次结构。
简单的软件测试组织带来的问题是:软件测试依附在软件开发的组织下,不能真正发挥软件测试的威力。
一两个人的软件测试缺乏交流和思维的碰撞,导致测试人员的进步非常有限。缺乏测试的组织,导致测试无计划进行,测试人员疲于应付各项突如其来的测试任务,测试经验也得不到很好的总结。
2. 专职 VS. 兼职
按照测试人员的职责明确程度,可以划分成兼职测试和专职测试两大类。目前在很多软件企业,尤其是小规模的软件企业,往往没有专职的测试人员。在做测试工作的同时还要兼顾软件幵发、配置管理、技术文档编写、用户教育、系统部署实施等工作。
即使是在一些比较大规模的软件企业,拥有专门的质量部门,也会有兼职的情况,最常见的兼职工作是测试+配置管理,或者测试 +QA 。这种方式的好处是节省成本,可以充分利用资源。但是这样测试人员缺乏专门的独立的发展空间,不利于测试的纵深方向的发展,很难把测试做得精细,也不利于测试经验的积累和测试知识的传播。
当然,由于目前软件企业的现状,很多企业还是使用这种方式。新入行的测试人员来说,可以认为这是对自己很好的锻炼机会。
测试本身的要求就是知识面要广,而这些工作有助于从不同层面、不同角度、不同角色的位置考虑软件的相关问题。
3. 项目性 VS. 职能性
按测试人员参与项目的形式来划分,可分成项目型和职能型。
项目型的测试组织是指测试人员作为项目组成员之一紧密地结合到项目中,与项目组其他人员紧密协作,一般是从头到尾跟着项目走。当然,也有些项目是到了中后期才考虑把测试人员加入到项目中。这种类型的测试组织一般不会有测试组长,测试的管理由项目的主管或项目经理负责。当然,在一些大的项目中,会划分出幵发组长、也会划分出测试组长,但是最终报告的对象都是项目经理。因此项目经理是负责测试资源调配和测试计划的主要人员。
而职能型的测试组织是指测试人员参与到项目中是以独立的测试部门委派的方式进入的。
在这种结构中,一个测试人员有可能不仅仅测试一个项目的产品,可能会同时测试多个项目的产品。测试人员也可能不是长期稳定地从头到尾参与一个项目。
测试人员不向项目主管或项目经理报告工作,而是向自己所在的部门经理报告工作。并且这种结构的项目经理也可能是虚拟的,或者由多个部门经理共同担当。
这两种方式各有利弊。项目型的好处是测试人员参与的力度很强,能深入了解项目方方面面的信息,有利于稳定持续有效地测试出更多细节问题;但是同时也有弊端,就是测试人员受项目负责人的管理,在对待Bug 的处理意见上往往受到约束,同时由于过于亲密,很可能出现“ 网开一面 ,不能严格要求的惜况。并且由于缺乏独立的组织,测试人员的知识可能局限在项目组内传播,不利于测试经验在不同项目组之间的传播。某些测试人员在这种组织中可能会感到孤独和无助。
而职能型的好处是能避免项目型的部分问题,并且能节省部分测试资源,充分利用各个项目阶段之间的时间差来合理利用测试资源;但是也不可避免地存在一些问题。例如,深入程度不够,尤其是对项目涉及的领域知识和业务知识理解可能不够深入,导致测试的问题比较表面。
项目性:

 职能性:

4. 综合性

尽管独立的测试部门会有一些不可避免的问题,例如参与项目的深入程度,容易导致 扔过墙 的测试。但是很多软件企业还是倾向于建立一个相对独立的软件测试组织。一个理想的软件测试组织可以是综合和兼容了几种结构方式的组织。
例如,可以将项目型结构和职能型结构组合并加以改造。测试部门是独立的部门,测试部门经理根据各项目组中项目经理的请求,结合公司对项目的投入和重点方向,决定委派哪些测试人员加入到项目组,并且长期稳定、持续地跟进项目,在项目的各个阶段都参与并做测试的相关工作内容。测试人员作为一种服务资源供项目组调用,测试的结果和报告作为评估软件产品质量的必要参考信息,为项目经理做出产品发布的决定提供参考价值。

一个优秀的测试人员所具体的素质

1. 思维模式
逆向思维:开发盖房子,测试拆房子。不走寻常路。
案例:手机中有两条通话记录,进行删除。删除为 0 后,继续删除。
发散性思维:探求多项答案
案例:测试一台自动售票机。正向,逆向,边界,压力,性能,耗电量,断电,外观,没零钱 .....
2. 兴趣
真的有兴趣么?而不是开发加班多,不想编码?
3. 性格特征
好奇心
成就感
敏感
不浮躁
善于怀疑
批判性思维:清楚 -- 准确、切题 -- 深刻,有意义,有逻辑性 -- 公正、全面
4. 能力
快速学习能力
沟通能力
文字能力
开发能力
5. 责任感和压力
责任感:测试往往是产品的最后一个检验者;测试的工作成效很难衡量,测试用例执行、 bug 数目的多少都无法说明产品是否能够交给用户使用。所以,责任感是最重要的测试必备素质之一。
压力:来自开发人员、用户、上级、自己的压力。测试人员的压力比想象中的要大。

软件测试的学习方式及内容

学习方法:
以实践为主,理论为辅。
学习内容:
概念 -- 基础 - 用例 - 进阶 - 管理 - 项目实践 - 工具(禅道 - 持续集成 - 功能自动化 - 性能自动化)

 

更多推荐

下一代实时数据库:Apache Doris 【一】简介

文章目录第1章Doris简介1.1Doris概述1.2Doris架构后记第1章Doris简介1.1Doris概述ApacheDoris由百度大数据部研发(之前叫百度Palo,2018年贡献到Apache社区后,更名为Doris),在百度内部,有超过200个产品线在使用,部署机器超过1000台,单一业务最大可达到上百TB

下一代实时数据库:Apache Doris 【二】编译与安装

文章目录第2章编译与安装2.1安装Docker环境2.2使用Docker开发镜像编译后记第2章编译与安装安装Doris,需要先通过源码编译,主要有两种方式:使用Docker开发镜像编译(推荐)、直接编译。直接编译的方式,可以参考官网:https://doris.apache.org/zh-CN/installing/c

vuex的state,getters,mutations,actions,modules

目录Vuex核心概念:1、State1)全局state2)使用modules中的state2、Getters1)全局Getters2)使用modules中的getters3、Mutations1)全局Mutations2)使用modules中的mutations(namespaced:true)4、Actions1)全

Day69:283. 移动零、11. 盛最多水的容器、42. 接雨水

283.移动零leetcode链接:https://leetcode.cn/problems/move-zeroes/给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。请注意,必须在不复制数组的情况下原地对数组进行操作。示例1:输入:nums=[0,1,0,3,12]输出:[1,3

华为云云耀云服务器L实例评测|怎么搭建企业综合Web平台

前言记得2019年,公司搞混合云的时候,测试过多家公有云,其中就有华为云。因公司也在深圳,项目也比较急,我司业务上云经验又不足,华为官方获悉情况后,第二天就派了4人小团队到我司来交流,整个交流过程非常流畅,从华为云的优势,华为POP点到我司机房网络,我司金融Web业务的特点,金融行业的通用迁云经验,甚至到后台团队连线,

数据库的模糊查询

命中率越高–策略越好数据库的模糊查询work918在SQL中,模糊查询可以使用LIKE关键字来实现。LIKE关键字后面可以跟一个模式,其中%表示任意数量的字符,_表示一个字符。例如,如果你想在一个名为students的表中查找所有名字以Li开头的学生,你可以这样做:SELECT*FROMstudentsWHEREnam

uview组件库的安装

更多的请查看官方文档uView2.0-全面兼容nvue的uni-app生态框架-uni-appUI框架(uviewui.com)//如果您的根目录没有package.json文件的话,请先执行如下命令://npminit-y安装npminstalluview-ui@2.0.36//更新//npmupdateuview-

【基本数据结构 四】线性数据结构:队列

学习了栈后,再来看看第四种线性表结构,也就是队列,队列和栈一样也是一种受限的线性表结构,和栈后进先出的操作方式不同的是,队列是FIFO的结构,也就是先进先出的操作方式。队列的定义队列这个概念非常好理解。可以把它想象成排队买票,先来的先买,后来的人只能站末尾,不允许插队。先进者先出,这就是典型的“队列”.栈只支持两个基本

在Docker中使用MindSpore GPU版本

文章目录在Docker中使用MindSporeGPU版本获取安装命令安装安装nvidia-container-toolkit获取MindSpore镜像测试运行MindSpore镜像运行代码使用VSCode开发在Docker中使用MindSporeGPU版本参考官方文档:安装指南获取安装命令如图所示命令为dockerpu

【深入理解ES6】函数

箭头函数这是ES6中引入的一个有趣的新特性。箭头函数,顾名思义就是一种使用箭头(=>)定义的新语法,与传统函数的差别如下:没有this、super、arguments和new.target绑定,他们由外围最近一层非箭头函数决定。不能通过New关键字调用。箭头函数没有construct方法,所以不能用作构造函数。没有原型

39.地址算术运算

如果p是一个指向数组中某个元素的指针,那么p++将会对p进行自增运算并指向下一个元素,而p+=i将对p进行加i的增量运算,使其指向指针p当前所指向的元素之后的第i个元素。这类运算时指针或地址算术运算中最简单的形式。allocbuf中的空间使用状况也是我们需要了解的信息。我们使用指针allocp指向allocbuf中的下

热文推荐