当前位置: 首页 > news >正文

奇怪问题说 - 测试篇

文章目录

  • 1.什么是软件测试
  • 2.软件测试和开发的区别
  • 3.软件测试的发展:
  • 4.软件测试岗位
  • 5.软件测试在不同类型公司的定位
  • 6.一个优秀的软件测试人员具备的素质
    • 6.1综合能力
    • 6.2掌握自动化测试技术
    • 6.3优秀的测试用例设计能力
    • 6.4探索性思维
    • 6.5有责任感和一定的压力
  • 7.软件测试的发展前景
  • 8.软件测试的学习方式及内容
  • 7.软件测试的发展前景
  • 8.软件测试的学习方式及内容

大家好,我是晓星航。今天为大家带来的是 与软件测试 有关的问题的讲解!😀

1.什么是软件测试

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

现实生活中在很多情况下我们都在默默进行测试: 刚新买来一部手机,我们要干什么? 一场考试, 做完一遍题目之后, 进行一遍检查, 就是在 “测试” 买一台电视, 安装好之后打开试试看能不能正常使用, 也是在 “测试”

软件测试就是验证软件产品特性是否满足用户的需求。

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

1983年,Bill Hetzel将软件测试定义为:软件测试就是一系列活动,这些活动是为了评估一个程序或者 软件系统的特性或能力,并确定是否达到了其预期的效果。

从这话我们可以看出以下两点:

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

软件测试的特点:

软件测试只是一个样本试验,具有不可穷尽性。

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

难易程度 开发广度小,专业度高。测试广度大,专业度低

工作环境 基本类似

薪水 中小企业总体比研发低,自动化等专业测试领域和研发基本无差距。大厂研发测试基本无差别

发展前景 自动化测试、安全测试等领域发展前景和研发基本一致。

繁忙程度 敏捷模式下差距不大,产品发布前压力比较大

技能要求 测试要求更广泛:业务能力,设计和架构分析能力,测试手段和工具使用,用户模型分 析和理解,编程能力

软件测试与调试的区别:

目的不同

-调试(Debug):确保程序做了程序员想它做的事情

-测试(Testing):确保程序解决了它该解决的问题

参与角色不同

-测试由测试人员和开发人员来执行,黑盒测试主要由测试人员完成、单元/集成测试主要是由开发 人员执行。

-调试由开发人员完成。

执行的阶段不同

–测试贯穿整个软件开发生命周期

-调试一般在开发阶段。

3.软件测试的发展:

  1. 软件调试为主,发生在20世界50年代。
  2. 1957年Charles Baker对调试和测试进行了区分。

这是软件测试史上一个重要的里程碑,标志已经有独立的软件测试了。

  1. 1979年,《软件测试的艺术》中给出了软件测试的定义:测试是为发现错误而执行程序的过 程。

它意味着软件测试不仅要证明软件做了该做的事情,也要保证它没做不该做的事情。

  1. 1983年,美国国家标准局(National Bureau of Standards)发布了VV&T,VV&T提出了测试 界很有名的两个名词:验证(Verification)和确认(Validation)。

这些意味着软件测试正作为一门独立的,专业的,具有影响力的工程学发展起来了。

  1. 预防为主是当下软件测试的主流思想之一

软件测试已经贯穿到了整个软件开发的生命周期当中了。

4.软件测试岗位

软件测试工程师:工程师的主要工作一般包含需求分析、编写测试计划和测试方案、设计测试用例、执 行测试用例、跟踪BUG、编写测试报告等;

测试开发工程师:根据项目的特点来开发一些自动化测试的脚本,或自动化测试的工具,或者是软件测 试工作中用到的提高工作效率的小工具什么的,从而能够更有效地进行测试,提高软件产品的质量。

测试开发工程师工作的目的就是为了更高效,更快捷地让测试工程师进行测试工作;测试开发岗位一般 要求一定的开发能力,解决问题的能力尤为重要。

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

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

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

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

  1. 无组织性

最简单的软件测试组织形式就是没有任何组织的测试,几个人就把所有软件测试工作做完,这样做没有 任何分工、没有任何层次结构。 简单的软件测试组织带来的问题是:软件测试依附在软件开发的组织下,不能真正发挥软件测试的 威力。 一两个人的软件测试缺乏交流和思维的碰撞,导致测试人员的进步非常有限。缺乏测试的组织,导 致测试无计划进行,测试人员疲于应付各项突如其来的测试任务,测试经验也得不到很好的总结。

  1. 专职VS.兼职

按照测试人员的职责明确程度,可以划分成兼职测试和专职测试两大类。目前在很多软件企业,尤 其是小规模的软件企业,往往没有专职的测试人员。在做测试工作的同时还要兼顾软件幵发、配置管 理、技术文档编写、用户教育、系统部署实施等工作。 即使是在一些比较大规模的软件企业,拥有专门的质量部门,也会有兼职的情况,最常见的兼职工 作是测试+配置管理,或者测试+QA。这种方式的好处是节省成本,可以充分利用资源。但是这样测试人 员缺乏专门的独立的发展空间,不利于测试的纵深方向的发展,很难把测试做得精细,也不利于测试经 验的积累和测试知识的传播。 当然,由于目前软件企业的现状,很多企业还是使用这种方式。新入行的测试人员来说,可以认为 这是对自己很好的锻炼机会。 测试本身的要求就是知识面要广,而这些工作有助于从不同层面、不同角度、不同角色的位置考虑 软件的相关问题。

  1. 项目性VS.职能性

按测试人员参与项目的形式来划分,可分成项目型和职能型。 项目型的测试组织是指测试人员作为项目组成员之一紧密地结合到项目中,与项目组其他人员紧密 协作,一般是从头到尾跟着项目走。当然,也有些项目是到了中后期才考虑把测试人员加入到项目中。 这种类型的测试组织一般不会有测试组长,测试的管理由项目的主管或项目经理负责。当然,在一些大 的项目中,会划分出幵发组长、也会划分出测试组长,但是最终报告的对象都是项目经理。因此项目经 理是负责测试资源调配和测试计划的主要人员。 而职能型的测试组织是指测试人员参与到项目中是以独立的测试部门委派的方式进入的。 在这种结构中,一个测试人员有可能不仅仅测试一个项目的产品,可能会同时测试多个项目的产 品。测试人员也可能不是长期稳定地从头到尾参与一个项目。 测试人员不向项目主管或项目经理报告工作,而是向自己所在的部门经理报告工作。并且这种结构 的项目经理也可能是虚拟的,或者由多个部门经理共同担当。 这两种方式各有利弊。项目型的好处是测试人员参与的力度很强,能深入了解项目方方面面的信 息,有利于稳定持续有效地测试出更多细节问题;但是同时也有弊端,就是测试人员受项目负责人的管 理,在对待Bug的处理意见上往往受到约束,同时由于过于亲密,很可能出现“网开一面”,不能严格要 求的惜况。并且由于缺乏独立的组织,测试人员的知识可能局限在项目组内传播,不利于测试经验在不 同项目组之间的传播。某些测试人员在这种组织中可能会感到孤独和无助。 而职能型的好处是能避免项目型的部分问题,并且能节省部分测试资源,充分利用各个项目阶段之 间的时间差来合理利用测试资源;但是也不可避免地存在一些问题。例如,深入程度不够,尤其是对项 目涉及的领域知识和业务知识理解可能不够深入,导致测试的问题比较表面。

项目性:

image-20231127195456951

  1. 综合性

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

image-20231127195645476

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

6.1综合能力

  • 沟通能力

测试工程师的沟通能力会直接影响事务开展的效率。良好清晰的沟通能力,是一个技术优秀的测是 工程师是否可以获得更好发展的“敲门砖”。

  • 快速学习的能力

对不同业务需求和功能的快速学习与理解能力。 对于测试新技术和新方法的学习能力。

  • 开发能力
  • 文字能力

6.2掌握自动化测试技术

掌握自动化测试技术,可以把你从大量重复性的手工劳动中解放出来,这样可以把更多的精力花在更多类型的 测试上。

6.3优秀的测试用例设计能力

测试用例设计能力是指,无论对于什么类型的测试,都能够设计出高效地发现缺陷,保证产品质量的优 秀测试用例。

如何提高测试用例设计的能力?

1,掌握设计测试用例的方法

2,积累,总结

3,阅读好的测试用例设计案例

6.4探索性思维

探索性思维是指,测试工程师在执行测试的过程中不断学习被测系统,结合自己的经验,知识,直觉, 进行系统的错误猜测和逻辑推理,整理和分析出更多有针对性的的测试关注点。

案例:测试一台自动售票机。 正向,逆向,边界,压力,性能,耗电量,断电,外观,没零钱…

6.5有责任感和一定的压力

责任感是任何工作的都需要的,对于测试工作者而言:

测试往往是产品质量的最后个把关者;由于测试工作成效很难衡量,测试用例执行、bug数目的多少都 无法说明产品的质量是否合格;所以,责任感是最重要的测试必备素质之一。

压力,测试工作者,特别是属于互联网行业需要能够抗住各种压力。

7.软件测试的发展前景

  • 薪资
  • 岗位
  • 发展方向

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

学习方法

以实践为主,理论为辅。

学习内容

概念–基础-用例-进阶-管理-项目实践-工具(禅道-持续集成-功能自动化-性能自动化)

者,特别是属于互联网行业需要能够抗住各种压力。

7.软件测试的发展前景

  • 薪资
  • 岗位
  • 发展方向

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

学习方法

以实践为主,理论为辅。

学习内容

概念–基础-用例-进阶-管理-项目实践-工具(禅道-持续集成-功能自动化-性能自动化)

感谢各位读者的阅读,本文章有任何错误都可以在评论区发表你们的意见,我会对文章进行改正的。如果本文章对你有帮助请动一动你们敏捷的小手点一点赞,你的每一次鼓励都是作者创作的动力哦!😘

相关文章:

奇怪问题说 - 测试篇

文章目录 1.什么是软件测试2.软件测试和开发的区别3.软件测试的发展:4.软件测试岗位5.软件测试在不同类型公司的定位6.一个优秀的软件测试人员具备的素质6.1综合能力6.2掌握自动化测试技术6.3优秀的测试用例设计能力6.4探索性思维6.5有责任感和一定的压力 7.软件测试…...

中国新能源汽车持续跑出发展“加速度”,比亚迪迎来向上突破

2023年已经过去,对于汽车圈而言,2023年是中国车市的分水岭,在这一年,中国汽车工业70年以来首次进入全球序列,自主品牌强势霸榜,销量首次超过合资车。要知道,这是自大众于1984年进入中国市场成立…...

chatGPT辅助写硕士毕业论文

一、写作顺序 1.标题、研究问题、研究方法 2.文献综述(占比1/5-1/6) 3.论证章节 4.结论、不足、启示 5.处理图表、参考文献的格式 6.绪论或引言 7.摘要、关键词 8.查重、装订 http://【硕士毕业论文写不下去,多亏听了张博士的论文写…...

搭建nginx图片服务器

(1)将图片存储于/home/data/images目录; (2)配置nginx.conf user nginx; worker_processes 4;error_log /var/log/nginx/error.log notice; pid /var/run/nginx.pid;events {worker_connections 10000; }ht…...

大数据学习之Flink算子、了解DataStream API(基础篇一)

DataStream API (基础篇) 注: 本文只涉及DataStream 原因:随着大数据和流式计算需求的增长,处理实时数据流变得越来越重要。因此,DataStream由于其处理实时数据流的特性和能力,逐渐替代了DataSe…...

js中字符串string,遍历json/Object【匹配url、邮箱、电话,版本号,千位分割,判断回文】

目录 正则 合法的URL 邮箱、电话 字符串方法 千位分割:num.slice(render, len).match(/\d{3}/g).join(,) 版本号比较 判断回文 json/Object 遍历 自身属性 for...inhasOwnProperty(key) Object.获取数组(obj):Object.keys,Object…...

字符串和C预处理器

本文参考C Primer Plus第四章学习 文章目录 常量和预处理器const限定符 1. 常量和预处理器 有时,在程序中要使用常量。例如,可以这样计算圆的周长: circumference 3.14159 * diameter; 这里,常量3.14159 代表著名的常量 pi(π)。…...

Ultraleap 3Di新建项目之给所有的Joint挂载物体

工程文件 Ultraleap 3Di给所有的Joint挂载物体 前期准备 参考上一期文章,进行正确配置 Ultraleap 3Di配置以及在 Unity 中使用 Ultraleap 3Di手部跟踪 新建项目 初始项目如下: 新建Create Empty 将新建的Create Empty,重命名为LeapPro…...

关于session每次请求都会改变的问题

这几天在部署一个前后端分离的项目,使用docker进行部署,在本地测试没有一点问题没有,前脚刚把后端部署到服务器,后脚测试就出现了问题!查看控制台报错提示跨域错误?但是对于静态资源请求,包括登…...

【leetcode题解C++】150.逆波兰表达式求值 and 239.滑动窗口最大值 and 347.前k个高频元素

150.逆波兰表达式求值 给你一个字符串数组 tokens ,表示一个根据 逆波兰表示法 表示的算术表达式。 请你计算该表达式。返回一个表示表达式值的整数。 注意: 有效的算符为 、-、* 和 / 。每个操作数(运算对象)都可以是一个整数…...

【计网·湖科大·思科】实验三 总线型以太网的特性、集线器和交换机的区别、交换机的自学习算法

🕺作者: 主页 我的专栏C语言从0到1探秘C数据结构从0到1探秘Linux 😘欢迎关注:👍点赞🙌收藏✍️留言 🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要&…...

API设计模式:REST、GraphQL、gRPC与tRPC全面解析

一、引言 在现代Web和微服务架构中,API(应用程序编程接口)的设计和实现方式至关重要。本文将探讨四种流行的API设计模式:REST(Representational State Transfer)、GraphQL、gRPC以及新兴的tRPC。每种模式都…...

C/C++ protobuf与json互转

测试环境 ubuntu16.04 64bitprotocbuf:3.9.1 (支持json转换需>3.0.0) 协议 syntax "proto2";message Person{optional string name 1;optional uint32 age 2;optional string address 3; }测试代码 //protobuf > 3.0.0#…...

Open CASCADE学习|圆柱螺旋线绘制原理探究

1、圆柱螺旋线绘制原理 在OCC中,圆柱面的参数方程为: 设P为(x0,y0,z0),则 xx0r*cos(u) yy0r*sin(u) zz0v 但u、v之间有关系时,此方程表达为圆柱螺旋线,u、v之间为线性关系时是等螺距螺旋线&#xff0…...

Python学习笔记--认识sys.argv

sys.argv 是 Python 的一个内置模块 sys 中的一个属性。它是一个列表,包含了从命令行传递给脚本的参数。 例如,如果你有一个名为 script.py 的脚本,并且你从终端窗口命令行这样运行它: >>>python script.py arg1 arg2 …...

【C++】入门基础

前言:C是在C的基础之上,容纳进去了面向对象编程思想,并增加了许多有用的库,以及编程范式等。熟悉C语言之后,对C学习有一定的帮助,因此从今天开始们将进入C的学习。 💖 博主CSDN主页:…...

Nginx与keepalived实现集群

提醒一下:下面实例讲解是在mac虚拟机里的Ubuntu系统演示的; Nginx与keepalived实现集群实现的效果 两台服务器都安装Nginx与keepalived: master服务器的ip(192.168.200.2) backup服务器的ip(192.168.200.4) 将 master服务器Nginx与keepalive…...

初识MQRabbitMQ快速入门

一、同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应,但是你却不能…...

javaMailSender 发送邮件,基于Spring Boot

目录 引入依赖 配置文件配置 具体代码 MultipartFile 转 File 工具类 引入依赖 <!--邮件--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-mail</artifactId></dependency><!--日…...

【汇总】解决Spring-Web与Spring-WebFlux冲突

【汇总】解决Spring-Web与Spring-WebFlux冲突 问题发现问题解决问题一&#xff1a;The bean requestMappingHandlerMapping, defined in class path resource [org/springframework/web/reactive/config/DelegatingWebFluxConfiguration.class],问题二&#xff1a;The Java/XML…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置&#xff0c;使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

关于 WASM:1. WASM 基础原理

一、WASM 简介 1.1 WebAssembly 是什么&#xff1f; WebAssembly&#xff08;WASM&#xff09; 是一种能在现代浏览器中高效运行的二进制指令格式&#xff0c;它不是传统的编程语言&#xff0c;而是一种 低级字节码格式&#xff0c;可由高级语言&#xff08;如 C、C、Rust&am…...

浅谈不同二分算法的查找情况

二分算法原理比较简单&#xff0c;但是实际的算法模板却有很多&#xff0c;这一切都源于二分查找问题中的复杂情况和二分算法的边界处理&#xff0c;以下是博主对一些二分算法查找的情况分析。 需要说明的是&#xff0c;以下二分算法都是基于有序序列为升序有序的情况&#xf…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比

在机器学习的回归分析中&#xff0c;损失函数的选择对模型性能具有决定性影响。均方误差&#xff08;MSE&#xff09;作为经典的损失函数&#xff0c;在处理干净数据时表现优异&#xff0c;但在面对包含异常值的噪声数据时&#xff0c;其对大误差的二次惩罚机制往往导致模型参数…...

C++ 设计模式 《小明的奶茶加料风波》

&#x1f468;‍&#x1f393; 模式名称&#xff1a;装饰器模式&#xff08;Decorator Pattern&#xff09; &#x1f466; 小明最近上线了校园奶茶配送功能&#xff0c;业务火爆&#xff0c;大家都在加料&#xff1a; 有的同学要加波霸 &#x1f7e4;&#xff0c;有的要加椰果…...