精简总结:一文说明软件测试基础概念

news2024/10/7 18:27:05
基础概念-1
基础概念-2

目录

一、什么是软件测试?

二、软件测试的特点

三、软件测试和开发的区别

1、内容:

2、技能区别

3、工作环境

4、薪水

5、发展前景

6、繁忙程度

7、技能要求

四、软件测试与调试的区别

1、角色

2、目的

3、执行的阶段

4、手段

五、《软件测试的艺术》

六、优秀的软件测试人员具备的素质

1、技能

2、非技能

七、软件测试岗位

八、什么是需求

1、概念

a.用户需求

b.软件需求

2、从软件测试人员角度看需求

3、为什么需求对软件测试人员如此重要?

4、如何深入理解被测试软件的需求?

九、测试用例 (Test Case)

1、概念

2、测试用例解决了两大问题

3、测试用例的例子

十、软件错误(BUG)

1、概念

十一、软件生命周期

分为6个阶段:需求分析->计划->设计->编码->测试->运行维护


一、什么是软件测试?

软件测试是验证软件产品特性是否满足用户的需求。 它是一系列活动,这些活动是用于评估一个程序或软件系统的特性或能力,并确定其是否达到了其预期的效果(预期的效果即即需求定义)。

概括之,测试是保障软件质量的。

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

 

二、软件测试的特点

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

练习:一个软件系统的登陆功能如何进行测试?

要考虑多方面的因素:密码账号的正确与否,sql注入,网络环境,同时能登录的人数,同一用户多台设备登录……


 

三、软件测试和开发的区别

1、内容:

开发:是通过不同的编程语言以及相关技术,最终做出软件 (Coding)

测试:是写测试用例、执行、发送测试报告;编写自动化测试用例,开发相关的测试工具。

2、技能区别

开发:专业度高,技能深度大(因为开发要写出高效的代码)。

测试:专业度低,技能广度大(因为测试人员要对产品进行全方面的测试,如外观是否好看,webUI自动化测试,APPUI自动化,后端的接口进行测试,性能,安全等等。

3、工作环境

基本类似。

4、薪水

通常情况下,大厂测试和开发的薪资是一样的。

中小厂测试和开发的薪资比起来,测试是略低的。

5、发展前景

开发:

初级开发工程师 -> 中级开发工程师 -> 高级开发工程师 ->架构师 -> CTO

测试:

初级测试工程师 -> 中级测试工程师-> 高级测试工程师 -> 架构师->项目经理

6、繁忙程度

敏捷模式下差距不大,产品发布前压力比较大。

7、技能要求

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


四、软件测试与调试的区别

1、角色

调试:开发自己调试

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

2、目的

调试(Debug)确保程序做了程序员想它做的事情 (发现问题、解决问题)

测试(Testing)确保程序解决了它解决的问题 (发现问题)

3、执行的阶段

调试一般在开发阶段。

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

4、手段

调试:debug,分析代码逻辑。

测试:等价类划分法,边界值法等等。


五、《软件测试的艺术》

《软件测试的艺术》给出软件测试的定义:测试是为发现错误而执行程序的过程。它意味着软件测试不仅要证明软件做了该做的事情,也要保证它没做不该做的事情。 是一本学习软件测试的推荐书目。


 

六、优秀的软件测试人员具备的素质

1、技能

  • 测试用例设计能力
  • 编程能力
  • 编写测试工具、自动化测试用例技术快速学习的能力
  • 业务快速学习能力

2、非技能

  • 沟通、合作(一个项目是一堆人写的)
  • 文字表达能力 (测试用例文字写出来的,编写测试文档,BUG)
  • 抗压能力
  • 责任感

七、软件测试岗位

  • 软件测试工程师:工程师的主要工作一般包含需求分析、编写测试计划和测试方案、设计测试用例、执行测试用例、跟踪BUG、编写测试报告等。
  • 测试开发工程师:根据项目的特点来开发一些自动化测试的脚本,或自动化测试的工具,或者是软件测试工作中用到的提高工作效率的小工具什么的,从而能够更有效地进行测试,提高软件产品的质量。 测试开发工程师工作的目的就是为了更高效,更快捷地让测试工程师进行测试工作;测试开发岗位一般要求一定的开发能力,解决问题的能力尤为重要。
  • 性能测试工程师:针对系统进行性能测试,包括使用工具和编写性能自动化测试脚本。
  • 安全测试工程师:主要分析产品可能会出现的安全问题,做各个方面的渗透测试,提高产品的安全性。
  • 其它:系统测试工程师,嵌入式测试工程师,硬件测试工程师。

八、什么是需求

1、概念

满足用户期望或正式规定文档(合同、标准、规范)所具有的条件和权能,包含用户需求和软件需求。

a.用户需求

可以简单理解为甲方提出的需求,如果没有甲方,那么就是终端用户使用产品时必须要完成的任务。该需求一般比较简略。

b.软件需求

也叫功能需求,该需求会详细描述开发人员必须实现的软件功能。 用户需求就是一句话,而软件需求是一个文档(详细描述用户需求如何实现)。日常工作中通常是用软件需求进行开发测试。

大多数公司在进行软件开发的时候,会把用户需求转化为软件需求(这就是PM产品经理要做的事情)。开发人员和测试人员工作的直接依据就是软件需求。

2、从软件测试人员角度看需求

软件需求是测试人员进行测试工作的基本依据。 在具体设计测试用例的时候,首先需要搞清楚每一个业务需求对应的多少个软件功能需求点,然后分析出每个软件功能需求点对应的多少个测试需求点,然后针对每个测试需求点设计测试用例。

过程:业务需求—>软件功能需求点—>测试需求点—>测试用例

以用户登录为例来阐述依据需求设计测试用例的过程。其中,测试需求点的识别要从多个角度进行,常见的有功能、兼容、性能、安全等。

 

3、为什么需求对软件测试人员如此重要?

从软件功能需求出发,无遗漏的识别出测试需求是至关重要的,因为这将直接关系到用例的测试覆盖率。

对于识别出的每个测试需求点,需要采用具体的设计测试用例的方法来进行测试用例的设计。

4、如何深入理解被测试软件的需求?

测试工程师在需求分析和设计阶段就开始介入。只有测试人员真正理解原始业务需求,才能从业务需求的角度去设计针对性明确、覆盖率较高的测试用例集。测试人员了解业务需求的方式有:

  1. 参加需求评审会议。
  2. 查阅文档(需求文档,技术文档)。
  3. 找产品经理了解软件功能,找开发人员了解软件的实现。

九、测试用例 Test Case

1、概念

测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合(注意是一个集合,而不是指某个具体的样例)。这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素。

2、测试用例解决了两大问题

测试过程中可能会遇到以下问题: 不知道是否全面测试了所有功能、测试的覆盖率无法衡量、对新版本的重复测试很难实施、存在大量冗余测试影响测试效率……

测试用例就是来解决这些问题的。概括来说,测试用例case解决了两大问题:

  1. 测什么
  2. 怎么测

测试用例提高测试人员工作效率,解决了测试人员工作的重复性问题。并且,测试用例也是建立自动化(让代码代替人员执行测试)的基础。

3、测试用例的例子

a、对注册功能的测试用例记录

 b、对在线OJ平台的判题功能的测试用例记录

 

c、对qq的登录功能的测试用例记录。

 

 


十、软件错误(BUG

1、概念

当且仅当规格说明是存在的并且正确时,程序与规格说明之间的不匹配才是错误。(程序与规格说明之间不匹配这样的说法是片面的。

  • 规格说明:软件需求,规格说明书。
一个需求规格说明书的示例
  • 程序与规格说明不匹配:即执行结果不等于预期结果。

当涉及到需求规格说明书没有提到的功能时,判断标准以最终用户为准:当程序没有实现其最终用户合理预期的功能要求时,就是软件错误。


十一、软件生命周期

指的是从软件产品的设想开始到软件不再使用而结束的时间。

分为6个阶段:需求分析->计划->设计->编码->测试->运行维护

1、需求分析:分析需求是否合理,需求是否完整。

2、计划:谁开发,谁测试,开发多久,测试多久……

3、设计:制定方案。

4、编码:写代码。

5、测试:形成测试报告。

一个测试报告的样例

 

6、运行维护:如果有线上问题,此时测试人员需要协助开发定位问题+解决问题。

 

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

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

相关文章

Lecture 7 Deep Learning for NLP: Feedforward Networks

目录 Deep LearningFeedforward Neural Network 前馈神经网络Neuron 神经元Output Layer 输出层OptimizationRegularization 正则化Topic Classification 主题分类Language Model as Classifiers 语言模型作为分类器Word Embeddings 词嵌入Training a Feed-Forward Neural Netw…

RVOS操作系统协作式多任务切换实现-03

RVOS操作系统协作式多任务切换实现-03 任务(task)多任务 (Multitask)任务上下文(Context)多任务系统的分类协作式多任务 创建和初始化第 1 号任务切换到第一号任务执行协作式多任务 - 调度初始化和任务创建…

虚拟机-安装与使用2023

虚拟机-安装与使用 前言 一、虚拟机 1.VMware 2.Virtualbox 二、VMware 的下载 三、VMware 的安装 四、验证是否安装成功 五、运行 VMware 六、VMware 上安装其它操作系统 安装 Windows 10安装 CentOS-Linux安装 Kali-Linux 七、VMware 常用功能同步时间系统备份克隆快照内存设…

黑马Redis视频教程高级篇(多级缓存案例导入说明)

目录 一、安装MYSQL 1.1、准备目录 1.2、运行命令 1.3、修改配置 1.4、重启 二、导入SQL 三、导入Demo工程 3.1、分页查询商品 3.2、新增商品 3.3、修改商品 3.4、修改库存 3.5、删除商品 3.6、根据id查询商品 3.7、根据id查询库存 3.8、启动 四、导入商品查询…

Maven高级——私服(完结撒花!)

作用与介绍 一个公司内有两个项目组,如果其中一个开发了一个依赖tlias-utils,另一个项目组要使用的话要么就是传过来直接install放到自己的本地仓库里面的。 但是也可以搭建一个公共仓库,专门供公司局域网内部使用,也就是所谓私服。 然后在…

chatgpt赋能python:Python反向函数:在编程中的威力

Python反向函数:在编程中的威力 在Python中,反向函数是一个强大且常用的工具,可以帮助程序员在编写代码时更加高效和精确地处理数据。在本文中,我们将讨论Python反向函数的用途和实现,并详细介绍如何在您的代码中使用…

Java007——Java注释介绍

围绕以下3点介绍: 1、什么是Java注释? 2、Java注释的作用? 3、Java注释长什么样,以及怎么使用Java注释? 一、什么是Java注释? Java注释是在Java程序中用来描述代码的特殊语句。 注释被忽略并且不被编译器…

MySQL表的增删改查

目录 一、Create 1.insert 2.更新 3.替换 二、Retrieve(查找) 1.select 2.where 3. 结果排序 4. 筛选分页结果 三、Update 四、Delete 1.删除数据 2.截断表 五、聚合函数 1.count: 2.avg 3.sum 4.max 5.min 六、Group …

微信小程序开发实战 ②④(自定义 TabBar练习)

作者 : SYFStrive 博客首页 : HomePage 📜: 微信小程序 📌:个人社区(欢迎大佬们加入) 👉:社区链接🔗 📌:觉得文章不错可以点点关注 &#x1f4…

十四、神经风格迁移

文章目录 1、神经风格迁移2、生成图片的代价函数THE END 1、神经风格迁移 \qquad 神经风格迁移就是将一幅原有的图片(content picture, C),对照着一幅风格图片(style picture, S),生成一幅新的图片(generated picture, G),如下图所示&#xf…

k8s istio 集成 多版本应用服务 和 网格监测

说明 博客文章地址:https://blog.taoluyuan.com/posts/istio-getting-started/ 本主要是内容: 使用 istioctl 安装 istio采用 istio 官方提供 的 应用bookinfo,实现多版本的服务应用部署istio 网关 gateway,vs,dr 的基本使用利用监测工具 prometheus,grafana,jaeger 查看 ist…

关于EMC Unity 存储系统DIMM内存的几个问题

下面是客户咨询最多的几个关于EMC Unity的DIMM内存的问题,供大家参考。 1. Unity存储能否自己扩容内存 有客户觉得Unity存储的内容太小,想自己扩容内存,很朴实的想法,原来是每个控制器3条16gb,能不能升级到3条32gb或…

基于Mybatis-Plus拦截器实现MySQL数据加解密

一、背景 用户的一些敏感数据,例如手机号、邮箱、身份证等信息,在数据库以明文存储时会存在数据泄露的风险,因此需要进行加密, 但存储数据再被取出时,需要进行解密,因此加密算法需要使用对称加密算法。 常…

Unreal5 第三人称射击游戏 射击功能实现1

状态机的缓存 状态机缓存功能相当于我们只需要实现一次,可以在多个地方引用,也可以在别的状态机里面使用,而不是在里面再重新写一遍相应的功能。 我们可以在基础状态机的链接拉出一条线,搜索“缓存” 第一个就是新保存的缓存姿势…

Qt OpenGL(四十二)——Qt OpenGL 核心模式-GLSL(二)

提示:本系列文章的索引目录在下面文章的链接里(点击下面可以跳转查看): Qt OpenGL 核心模式版本文章目录 Qt OpenGL(四十二)——Qt OpenGL 核心模式-GLSL(二) 冯一川注:GLSL其实也是不断迭代的,比如像3.3版本中,基本数据类型浮点型只支持float型,而GLSL4.0版本开始就…

chatgpt赋能python:Python单位换算—让编程更精确的工具

Python单位换算—让编程更精确的工具 作为一名10年经验的Python工程师,我深深认识到在各种计算机领域的重要性。它可以帮助我们进行大量数据的计算和转换,其中的单位换算是其中一个重要的子领域。 单位换算对编程的重要性 无论是在科学研究还是工业生…

序贯最小二乘平差 VS 卡尔曼滤波

文章目录 Part.I IntroductionPart.II 概念比较Chap.I 序贯最小二乘平差Chap.II 卡尔曼滤波Chap.III 比较 Reference Part.I Introduction 序贯最小二乘平差和卡尔曼滤波有些相似,但是还是有一些区别: 序贯最小二乘平差用来处理静态数据,也…

层次多尺度注意力用于语义分割

层次多尺度注意力用于语义分割 HIERARCHICAL MULTI-SCALE ATTENTION FOR SEMANTIC SEGMENTATION https://arxiv.org/pdf/2005.10821.pdf 摘要 多尺度推断通常用于提高语义分割的结果。多个图像尺度通过网络传递,然后使用平均或最大池化方法将结果组合起来。在本文…

活用Excel高级筛选解决实际问题

一朋友遇到一个难题:一个电子行业文档,数据中有一项为输出电压,有固定值比如24V、48V等;也有范围值比如10V-60V或者40V-50V,数据不规则,且数量庞大。需要对数据进行分析,筛选出有效数据&#xf…

Spring Bean生命周期之(1)BeanDefinition

文章目录 1 BeanDefinition1.1 Spring Bean 读取解析配置信息1.1.1 XML 配置的处理主要使用的事例1.1.2 注解 BeanDefinition 解析示例 1.2 spring bean 注册阶段1.3 Spring BeanDefinition 合并阶段1.3.1 BeanDefinition 合并示例1.3.2 源码分析 1 BeanDefinition 在spring b…