测试人员的启蒙指南

news2024/12/22 20:10:00

文章目录

  • 一. 了解测试
    • 1. 生活中的测试场景
    • 2. 什么是软件测试
    • 3. 实战练习
  • 二. 软件测试和软件开发的区别
  • 三. 软件测试和软件调试的区别
  • 四. 软件测试的发展
  • 五. 软件测试的岗位
  • 六. 一个优秀的软件测试人员具备的素质

本篇中介绍测试人员是干什么的, 起到启蒙和了解的作用, 重点是以下几个问题:

  1. 什么是软件测试
  2. 软件测试和软件开发的区别
  3. 软件测试和软件调试的区别
  4. 一个优秀的测试人员所具备的素质

一. 了解测试

1. 生活中的测试场景

思考一下, 生活中的测试场景都有哪些?

  1. 考试

考试也是一种测试, 测试你有没有将老师所讲的的内容给掌握了.

  1. 逛街买衣服

买衣服时, 肯定不能把货架上的衣服都试一遍吧, 首先你要选一件大体上自己看的顺眼的. (外观测试)

然后, 看这件衣服是否与自己相匹配, 衣服是否衬托肤色, 衬托气质. (款式, 颜色测试)

还会, 通过触摸, 感受衣服的舒适度. (舒适度测试)

另外, 你还会查看 衣服的牌子上 所记录的制作材料 (材质测试).

在上面的条件都满足之后, 我们才会去问尺寸和价格, 尺寸合适才能合身, 价格需要在我们的预算之内. (尺寸, 价格测试).

2. 什么是软件测试

在了解软件测试之前,我们首先需要知道软件是什么?

软件, 就是安装在硬件上的一些应用程序, 比如: web系统 (学校的教务系统, 办公系统等); APP (qq, vx, csdn).

软件的功能是由是开发人员来实现的, 功能被实现了, 之后要进行的工作就是测试了, 测试该功能是否满足用户的需求, 是否还存在一些bug, 对于这种针对系统功能的测试,就叫做软件测试。

最常见的理解是: 软件测试就是找BUG, 发现缺陷.

其实软件测试就是验证软件产品特性是否满足用户的需求, 这里的用户: 指的是使用软件的人, 但是这个人, 不一定就是用户, 也可能是东家; 更为准确的来说: 用户就是购买软件的人, 具有软件的拥有权, 而我们平常所说的用户, 是指那些具有软件使用权的人(花钱购买的那种), 还有一些流量用户, 就是使用一些免费软件(微信 / QQ)的用户; 这三者相加, 才是真正的用户.

最早,人们更多的将测试看成对软件产品的"检验",检查软件的每个功能是否运行正常。

1983年,Bill Hetze将软件测试定义为:软件测试就是一系列活动,这些活动是为了评估一个程序或者软件系统的特性或能力,并确定是否达到了预期的效果,从这话我们可以看出以下两点:

  1. 测试试图验证软件是"工作的",也就是验证软件功能执行的正确性.
  2. 测试的活动是以测试人员"预期的结果"为依据,这里的’预期结果"指的是需求定义.

通俗点讲, 软件按照用户提出的需求而设计了很多的功能, 软件测试人员就需要验证软件功能的方方面面:

  1. 验证功能是否能正常运行 (代码能跑, 不代表就能达到预期的效果).
  2. 验证功能是否满足用户的需求 (用户的需求 == 预期的效果).

软件测试的特点:软件测试只是一个样本试验,具有不可穷尽性.

3. 实战练习

假设我们在测试某软件的登录功能, 写出测试要点.

要注意的是, 题目要测试某软件的登录功能, 并没有明确是一个怎样的系统, 给出范围很模糊; 所以, 我们不能进行 “一锅端” 的操作, 我们需要通过 “分类” 的方式, 来分析这个问题.

img

img

img

还需要注意的是这里不可能把所有的可能性都尝试一遍, 一定要明确的是, 穷举所有情况是不可能的!

软件测试只是一个样本实验, 软件测试人员要保证主要功能 (用户频繁使用的功能) 和核心流程的正确性, 也就是说:测试是有优先级的, 先把重要的测试了, 其它的, 可以往后放一放.

二. 软件测试和软件开发的区别

关于互联网的工作岗位大概有以下三种:

软件开发: 进行软件系统的开发, 功能实现的工作, 像我是学 Java 的, Java里面就会有一些框架, 数据库, 数据结构等, 这些内燃内容都是属于软件开发中需要涉及到的知识.

软件测试: 验证软件功能性的正确性, 具体的验证方式主要有手工验证和自动化验证.

测试开发: 开发测试工具,开发测试脚本,其目的就是为了提高测试效率.

要注意在实际工作中测试工作可能既包含了软件测试, 也包含了测试开发, 实际上不做细致区分.

关于软件测试和软件开发主要有如下区别:

  1. 工作内容和技能

软件开发最常见的工作就是通过不同的编程语言, 最终做出软件(coding), 这就是要求开发人员技能集中, 专业度高(需要学习到一定的深度), 关于软件开发的职位, 我们见得最多的就是各种语言的工程师, 就拿Java来说:

作为一个 Java工程师, 就需要我们对底层的实现和原理很清楚, 才能写出高效的代码; 比如数据结构:哈希表,链表,顺序表等, 学习这些就是为了在某些场景中, 引入合适的数据结构来提高运行效率, 开发人员只有将技能掌握的足够深入, 了解底层的逻辑实现, 才能知道什么场景使用什么数据结构, 就好比刷力扣题一样, 是有限时间与空间复杂度要求的, 达不到要求就不能通过.

软件测试的工作就是写测试用例, 执行测试用例, 发送测试报告, 编写自动化测试用例, 开发相关的测试工具, 测试人员就要求技能广度的掌握, 因为测试人员要对产品进行全方面的测试, 外观是否好看, WEB的UI自动化, 后端的接口进行测试, 性能, 安全等等, 如果你不对这些方面涉及的技术有一定的了解, 测试工作可能就无从下手了, 测试人员技能的广泛, 主要体现在你要学操作各种测试工具, 比如:

  • 接口: soupUI, postman, jmeter
  • 自动化测试: java, Python, unittest, testNG, robotFrameWork(RF框架), selenium 工具
  • 性能测试工具: loadrunner, jmeter
  • 抓包: Charles, fiddler (fiddler还可以模拟弱网)
  • APP测试: appium, Macaca

别看这里写的很多, 但其实你只要会使用它们来协助工作就行, 不需要太过深入去了解底层是怎么样的.

  1. 发展前景

测开的待遇其实与其它技术岗位差距不大, 发展前景也是很不错的, 尤其自动化测试, 安全测试等领域发展前景和研发基本一致; 看如下路线:

  • 开发: 初级开发工程师 -> 中级开发工程师 -> 高级开发工程师 -> 架构师 -> CTO
  • 测试: 初级测试工程师 -> 中级测试工程师 -> 高级测试工程师 -> 架构师 -> 项目经理

而且很多校招生在招工作时是不知道有测试开发这个职位的, 他们可能更多的只是知道软件开发和软件测试这两个技术岗位, 竞争的压力会小很多.

  1. 薪资及工作环境

通常情况下, 大厂同一个级别的员工, 不管是前端, 还是后端, 以及测试, 工资都相差不大; 中小厂的测试薪资比开发略低, 至于工作环境, 大厂的环境是非常好的, 中小场就碰运气喽!

三. 软件测试和软件调试的区别

  1. 角色不同

软件调试: 纯开发人员来做, 也就是开发自己去调试.

软件测试: 测试+开发一起执行(通常情况下, 黑盒测试由测试人员执行, 部分白盒测试, 系统测试是由开发人员执行)

  1. 阶段不同

软件调试: 开发阶段才会进行调试.

软件测试:测试是伴着整个软件的生命周期的(测试介入的时间比调试早的), 是从产品的制作到发布全阶段的, 贯穿了整个软件开发过程, 开发过程中, 处处都有软件测试.

  1. 目的和手段不同

软件调试:要确保程序做了程序员想它做的事情, 我们在敲代码的时候, 代码出现了问题, 我们是需要进行调试的(通过debug来观察), 将这种调试, 称为软件调试.

软件测试: 要确保程序解决了它该解决的问题, 测试人员验证软件是否实现了用户的需求, 通过等价类划分法, 边界值法, 黑白盒测试等进行分析测试.

其实软件测试和软件调试是从不同的角度去发现问题和解决问题的, 调试是从自身的角度出发, 我只要完成领导让自己实现的功能就行, 只在乎自己实现的功能是能正常执行的;而调试是用户的角度出发, 看看有什么功能还没有满足用户的需求.

四. 软件测试的发展

  1. 以软件调试为主,发生在20世界50年代。
  2. 1957年Charles Baker对调试和测试进行了区分。这是软件测试史上一个重要的里程碑,标志已经有独立的软件测试了。
  3. 1979年,《软件测试的艺术》 中给出了软件测试的定义:测试是为发现错误而执行程序的过程。它意味着软件测试不仅要证明软件做了该做的事情,也要保证它没做不该做的事情。
  4. 1983年,美国国家标准局(National Bureau of Standards)发布了VV&T,VV&T提出了测试界很有名的两个名词:验证(Verification)和确认(Validation)。这些意味着软件测试正作为一门独立的,专业的,具有影响力的工程学发展起来了。
  5. 预防为主,是当下软件测试的主流思想之一, 软件测试已经贯穿到了整个软件开发的生命周期当中了。

五. 软件测试的岗位

  • 软件测试工程师: 工程师的主要工作一般包含需求分析、编写测试计划和测试方案、设计测试用例、执行测试用例、跟踪BUG、编写测试报告等;功能测试比较多, 涉及到的开发工作内容较少.

  • 测试开发工程师: 根据项目的特点来开发一些自动化测试的脚本,或自动化测试的工具,或者是软件测试工作中用到的提高工作效率的小工具什么的,从而能够更有效地进行测试,提高软件产品的质量; 测试开发工程师工作的目的就是为了更高效,更快捷地让测试工程师进行测试工作;测试开发岗位一般要求一定的开发能力,解决问题的能力尤为重要。

  • 自动化测试工程师: 设计自动化测试用例,开发自动化测试框架。

  • 性能测试工程师: 针对系统进行性能测试,包括使用工具和编写性能自动化测试脚本。

  • 安全测试工程师: 主要分析产品可能会出现的安全问题,做各个方面的渗透测试,提高产品的安全性

  • 其它:系统测试工程师,嵌入式测试工程师,硬件测试工程师。

六. 一个优秀的软件测试人员具备的素质

技能相关

  1. 优秀的测试用例设计能力; 测试用例设计能力是指,无论对于什么类型的测试,都能够设计出高效地发现缺陷,保证产品质量的优秀测试用例; 那么提高测试用例设计的能力就很重要了, 我们要掌握设计测试用例的方法, 多去积累, 总结, 多去阅读好的测试用例设计案例以进一步提高自己设计测试用例的能力.
  2. 掌握自动化测试技术; 掌握自动化测试技术,可以把你从大量重复的手工劳动中解放出来,这样就可以把更多的精力花在更多类型的测试上.
  3. 探索性思维; 测试工程师在执行测试的过程中不断学习被测系统,结合自己的经验进行系统的错误猜测和逻辑推理,整理和分析出更多针对性的测试关注点, 简单来说就是测试人员的思维不受条条框框束缚,要具有发散性思维,能够结合实际来思考问题.

综合能力

  1. 沟通能力; 测试工程师的沟通能力会直接影响事务开展的效率, 良好清晰的沟通能力是一个技术优秀的测试工程师是否能够获得更好发展的"敲门砖".
  2. 快速学习的能力; 不同业务需求和功能的快速学习与理解能力, 对于测试新技术和新方法的学习能力.
  3. 文字表达能力; 测试用例是用文字写出来的, 你找到的bug, 也是要通过文档来具体描述 BUG 的, 也就是说, 你测试完了之后, 是要总结出一个测试文档的, 里面详细记录了有哪些bug, 这些bug在哪里,什么效果等等…
  4. 开发能力: 掌握一定的开发技术, 这对于测试人员来说是优势.
  5. 抗压能力; 测试工作者,特别是属于互联网行业需要能够抗住各种压力, 比如: 工期进度紧张的话, 测试时间会由5天变成1天…
  6. 责任感; 责任感是任何工作的都需要的, 对于测试工作者而言: 测试往往是产品质量的最后个把关者;由于测试工作成效很难衡量,测试用例执行、bug数目的多少都 无法说明产品的质量是否合格;所以,责任感是最重要的测试必备素质之一; 也就是说, 发现BUG一定要及时改掉, 不能放任推拖.

实战练习, 培养探索性思维:

  • 假设我们现在要测试一个自动售票机的功能

img

imgimg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/477686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

A 股指数分时行情数据 API 数据接口

A 股指数分时行情数据 API 数据接口 多维度分时指标,指数分时,多时间区间查询参数。 1. 产品功能 支持所有指数数据查询;支持指数分时数据查询;多时间维度分时数据;多维度的统计时间以及数据结果;秒级查询…

linux系统应用中select函数与poll函数详解

目录 第一:poll()函数详解 第二:select()函数详解 第一:poll()函数详解 1 poll函数概述 select() 和 poll() 系统调用的本质一样,poll() 的机制与 select() 类似,与 select() 在本质上没有多大差别,管理多…

外设驱动库开发笔记53:MAX31856热偶变送器驱动

在我们的产品中经常有需要温度检测的地方,而热电偶温度检测电路是我们常用的。热电偶温度检测的方法很多,有时出于简单方便的考虑我们会选择热偶温度变送器来实现,这一篇我们就来讨论使用MAX31856热电偶温度变送器实现温度的检测。 1、功能概…

【PCL】—— 点云配准ICP(Iterative Closest Point)算法

文章目录 数学原理问题定义计算平移计算旋转 案例实现参考 ​     由于三维扫描仪设备受到测量方式和被测物体形状的条件限制,一次扫描往往只能获取到局部的点云信息,进而需要进行多次扫描,然后每次扫描时得到的点云都有独立的坐标系&…

第十六章 预制件prefab(上)

本章节我们介绍一下“预制件”,也有人叫“预制体”,也就是Prefab。在游戏世界中,那些自然环境的游戏对象,我们可以提前创建在场景中,这个大家能够理解。但是,有些游戏对象,需要根据游戏逻辑来通…

20230430 ICFD学习笔记 管道流动

三个边界: (1) 速度入口 (2) 压力出口 (3) 非滑移边界 一、先利用workbench进行网格的划分,导出K文件。 二、利用Ultraeidt进行K文件的修改 (或者是在lspp中直接删除也行) K文件开头是*Keyword Part *Define coordinate system后面到*Database binary D3prop全部删除 &…

Dubbo总结

目录 什么是分布式系统 单机架构、集群架构、分布式架构 Dubbo的概念 Dubbo的核心组件 Dubbo的常用注解 Dubbo的高级特性: 序列化特性安全 地址缓存 超时机制 重试机制 多版本灰度发布 负载均衡 集群容错 服务降级 服务限流 结果缓存 Dubbo实战:…

40.java-Set集合(HashSet,LinkedHashSet,TreeSet)

Set集合 1.Set集合特点2.Set集合实现类3. HashSet3.1 底层原理3.1.1 哈希表组成3.1.2 哈希值3.1.3 对象的哈希值特点 3.2 数据添加元素的过程3.3 HashSet的三个问题3.4 实例:去除重复元素 4. LinkedHashSet5. TreeSet5.1 特点5.2 集合默认规则5.3 例子5.4 两种比较规…

JavaScript 知识总结上篇(更新版)

1. 为什么 JS 是单线程的? 因为JS里面有可视的Dom,如果是多线程,这个线程正在删除DOM节点,另一个线程正在编辑Dom节点,导致浏览器不知道该听谁的 2.如何理解同步和异步? 同步:按照代码书写顺…

Linux——中断和时间管理(下)

目录 延时控制 定时操作 低分辨率定时器 高分辨率定时器 练习 延时控制 在硬件的操作中经常会用到延时,比如要保持芯片的复位时间持续多久、芯片复位后要至少延时多长时间才能去访问芯片、芯片的上电时序控制等。为此,内核提供了一组延时操作函数。…

DDD系列:三、Repository模式

为什么需要Repository? ​ Anemic Domain Model(贫血领域模型)特征: 有大量的XxxDO对象:这里DO虽然有时候代表了Domain Object,但实际上仅仅是数据库表结构的映射,里面没有包含(或…

kafka整理

kafka整理 一、kafka概述 kafka是apache旗下一款开源的顶级的消息队列的系统, 最早是来源于领英, 后期将其贡献给apache, 采用语言是scala.基于zookeeper, 启动kafka集群需要先启动zookeeper集群, 同时在zookeeper记录kafka相关的元数据 kafka本质上就是消息队列的中间件产品…

Codeforces Round 867 (Div. 3)(A-G2)

文章目录 A. TubeTube Feed1、题目2、分析3、代码, B. Karina and Array1、题目2、分析3、代码 C. Bun Lover1、问题2、分析(1)观察样例法(2)正解推导 3、代码 D. Super-Permutation1、问题2、分析(1&#…

力扣第343场周赛

第一次力扣,等大二寒暑假,有时间再来系统刷题 目录 🌼前言 🌼一,6341.保龄球游戏的获胜者 🌼二,6342.找出叠涂元素 🌳第一次 -- 超时 🌳第二次 -- AC &#x1f33c…

二叉树相关的简单递归oj

二叉树相关的简单递归oj 前言题目二叉树的前序遍历相同的树判断单值二叉树对称二叉树另一棵树的子树创建二叉树并遍历 前言 这篇博客主要是博主感觉对二叉树oj题目不太熟悉,随便整理的一下题目和解答,方便复习,所以讲题部分主要以我自己以及为…

Java 基础入门篇(二)——— Java 基础语法

文章目录 一、注释二、字面量三、变量3.1 变量概述3.2 变量在计算机中的底层原理 四、数据类型五、关键字、标志符六、类型转换6.1 自动类型转换6.2 表达式的自动类型转换6.3 强制类型转换 七、运算符7.1 基本算数运算符7.2 符号做连接符7.3 自增自减运算符7.4 赋值运算符7.5 …

【C++技能树】类的六个成员函数Ⅰ --构造、析构、拷贝构造函数

Halo,这里是Ppeua。平时主要更新C语言,C,数据结构算法…感兴趣就关注我吧!你定不会失望。 本篇导航 0.this指针1.Class默认成员函数2.构造函数调用规则: 3.析构函数4.拷贝构造函数 0.this指针 在开始本章内容之前,先浅…

Channel-wise Knowledge Distillation for Dense Prediction(ICCV 2021)原理与代码解析

paper:Channel-wise Knowledge Distillation for Dense Prediction official implementation:https://github.com/irfanICMLL/TorchDistiller/tree/main/SemSeg-distill 摘要 之前大多数用于密集预测dense prediction任务的蒸馏方法在空间域spatial…

(求正数数组的最小不可组成和,养兔子)笔试强训

博主简介:想进大厂的打工人博主主页:xyk:所属专栏: JavaEE初阶 目录 文章目录 一、选择题1 二、[编程题]养兔子 三、[编程题]求正数数组的最小不可组成和 一、选择题1 reflection是如何工作的__牛客网 (nowcoder.com) 考虑下面这个简单的例子&…

大数据Doris(八):Broker部署和集群启停脚本

文章目录 Broker部署和集群启停脚本 一、Broker部署 1、准备Broker 安装包 2、启动 Broker