初识软件测试

目录

软件测试的概念

调试与测试的区别

测试人员需要具备的素质

需求的概念

bug的概念

测试用例

软件的生命周期

开发模型

软件测试的生命周期

如何处理与开发发生争执的问题


软件测试的概念

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

软件测试岗位

测试人员包括软件测试工程师和软件测试开发工程师

上面的"开发":指开发效能工具,比如:自动化测试工具、代码覆盖率工具、数据构造工具

软件开发工程师与软件测试开发工程师的区别

前者:开发为主;后者:测试为主,开发为辅

调试和测试的区别

调试与测试,主要有三个方面的不同,分别是目的,参与角色,执行阶段

目的

调试:发现并解决软件中的缺陷

测试:发现软件中的缺陷

参与角色

调试:开发人员

测试:测试人员,开发人员,比如单元测试,就主要由开发人员来测试

执行阶段

调试:编码阶段

测试:贯穿于软件的整个生命周期

测试人员需要具备的素质

综合能力:快速学习的能力,沟通能力,文字能力,开发能力

掌握自动化测试技术

优秀的测试用例设计能力

探索性思维,可从工作中积累经验

有责任感和一定的压力承受能力

需求的概念

需求包含用户需求与软件需求

用户需求:指甲方提出的需求,没有甲方,则就是终端用户使用产品时必须要完成的任务

软件需求:也叫功能需求,该需求会详细描述开发人员必须实现的软件功能

为什么用户需求不能作为开发和测试人员工作的依据?

因为要考虑市场可行性和技术可行性,所以需要对用户的需求进行需求分析

需求是测试人员开展软件测试的工作的依据!如果想要测试人员更好的了解需求,那么从需求分析

阶段就应该让测试人员介入

bug的概念

当且仅当规格说明是存在的并且正确,程序与规格说明之间的不匹配就是错误

当需求规格说明书没有提到的功能,判断标准以最终用户为准。当程序没有实现其最终用户合理预

期的功能要求时,就是软件错误

描述一个bug

发现bug的版本,发现bug的环境、发现bug的步骤、期望的结果、实际的结果、其它:bug类

型:前端问题,bug等级:次要...

bug的级别

常见的有:崩溃、严重、一般、次要

崩溃:阻碍开发或测试工作的问题;造成系统崩溃、死机、死循环,导致数据库数据丢失,与数据

库连接错误,主要功能丧失、基本模块缺失等问题

严重:系统主要功能部分丧失、数据库保存调用错误、用户数据丢失,一级功能菜单不能使用,但

是不影响其它功能的测试

一般:功能没有完全实现,但不影响使用,功能菜单存在缺陷,但不会影响系统稳定性

次要:主要就是一些优化建议类的问题

注意:实际bug的级别,还是要看具体的公司!!!

bug的生命周期

New:新发现的Bug,未经评审决定是否指派给开发人员进行修改。

Open:确认是Bug,并且认为需要进行修改,指派给相应的开发人员。

Fixed:开发人员进行修改后标识成修改状态,有待测试人员的回归测试验证。

Rejected:如果认为不是Bug,则拒绝修改。

Delay:如果认为暂时不需要修改或暂时不能修改,则延后修改。

Closed:修改状态的Bug经测试人员的回归测试并验证通过,则关闭Bug。

Reopen:如果经验证Bug仍然存在,则需要重新打开Bug,开发人员重新修改。

bug的终态就是closed,rejected--->closed   fixed ---> closed,如下图

测试用例

概念:为了实施测试而向被测试的系统提供的一组集合,包含测试环境、操作步骤、测试数据、预

期结果等要素

在工作中通常使用脑图来编写测试用例!!!

为什么要设计测试用例

围绕着软件需求来设计测试用例

解决了重复测试问题

原则:测试用例避免用后即弃!!!

步骤:提bug -> 开发人员对bug修复完成之后 -> 对bug进行回归验证

版本迭代:对新版本的历史功能也需要进行测试,用自动化测试来完成

软件的生命周期

需求分析:分析用户需求是否合理(市场分析、技术分析...),产物:软件需求文档

计划:指定需求执行计划

设计:将需求细化成一个个任务,进行技术设计(设计哪些接口,采用哪些技术),产物:设计文档

编码:开发人员按照需求文档以及设计文档来进行编码

测试:测试人员参考测试用例来执行测试

运行维护:项目上线之后对产品进行线上的维护,包括修复性维护,完善性维护,预防性维护

修复性维护:对项目中未发现的问题进行修复

完善性维护:对功能进行完善

预防性维护:为了避免产品在线上出现一些其它的问题,进行一些预防的手段

开发模型

瀑布模型

如下图,瀑布模型的软件开发流程。下图中的框架也是所有其它模型的基础框架

特点:线性的开发流程,不能够应对需求的变化

缺陷:测试被后置,就带来了两个问题

1、风险往往迟至后期的测试阶段才显露,因而失去及早纠正的机会

2、需要有足够的时间预留给测试过程,否则将导致测试不充分,从而将缺陷直接遗留给用户

瀑布模型最大的缺陷在于,可以运行的产品很迟才能被看到(上线)

使用场景:需求固定的小项目 

螺旋模型

如下图,螺旋模型引入了全流程的风险分析,每次分析完成之后都会生成一个新的原型

缺陷:软件开发时间变长,增加了人力、资金成本

适用场景:规模庞大、复杂度高、风险大的项目

增量模型

假如用户需求有A、B、C功能,开发完A我就直接上线供给用户使用,再慢慢完成其它功能,以人

物画为例,先画头、再画身体...

迭代模型

先开发一个基础版本(包含功能A、B、C),但是A、B、C比较简陋,然后再在继续基础版本上对

A、B、C功能进行迭代优化,比如人物画,先画一个轮廓,再细化、补色

敏捷模型

敏捷宣言

个体与交互重于过程和工具。轻流程,强调人与人之间面对面的高效沟通

可用的软件重于完备的文档。轻文档,重产出

客户协作重于合同谈判。

响应变化重于遵循计划。比如用户功能需求变更,那么就需要完成用户新的功能需求

特点:轻流程,轻文档,重目标,重产出

scrum

三个角色

产品经理:收集用户的需求,编写需求文档,对产品负责的人

项目经理:负责召开各种会议,协调项目,为研发团队服务

研发团队:开发人员、测试人员、UI设计人员等待

五个会议

发布会议:产品经理拿出一些需求,介绍需求内容是什么,有哪些具体的功能需要实现

迭代计划会议:划分负责人,初步工时

每日例会:团队成员汇报各自完成了什么任务,以及遇到的一些可能无法解决的问题

演示会议:负责人来进行软件功能的演示以及介绍如何使用

回顾会议:总结本次迭代出现的一些问题,下一次迭代继续改进

软件测试的生命周期

需求分析 -> 测试计划 ->测试设计、测试开发 ->测试执行 -> 测试评估

需求分析:站在用户的角度:查看需求逻辑是否正确,是否符合用户的需求和行为习惯;站在开发

人员的角度:思考需求是否可以实现,或者实现起来难度大小

测试计划:指定测试计划,如测试的工时,人力的安排等等

测试设计、测试开发:设计测试用例,经验丰富的白盒测试人员可以开始单元测试

测试执行:参考测试用例来执行测试

测试评估:测试人员需要记录测试、做好缺陷管理,然后进行测试的评估

测试模型

V模型

特点:明确标注了测试的类型

           明确标注了测试阶段和开发阶段之间的对应的关系

缺点:测试后置

W模型

测试从需求阶段就开始介入了

缺点:上一个阶段完成下一个阶段才能开始

           开发模型和测试模型也保持着一种前后的线性关系

重文档、重过程 -------->  不支持敏捷模型

如何处理与开发发生争执的问题

具备批判性思维,多反思自己是不是bug描述的清不清楚

bug等级一定要有理有据

合理友好的进行沟通,站在用户的角度反问:如果你是用户,你能接受这样吗?

不仅能够提出问题,最好也能够给出解决方案

组织bug评审,邀请代表参加bug评审:产品代表、开发代表、测试代表,如何解决bug,如何预

防类似的bug

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。在编写C程序时,需要注意变量的声明和定义、指针的使用、内存的分配与释放等问题。C语言中常用的数据结构包括: 1. 数组:一种存储同类型数据的结构,可以进行索引访问和修改。 2. 链表:一种存储不同类型数据的结构,每个节点包含数据和指向下一个节点的指针。 3. 栈:一种后进先出(LIFO)的数据结构,可以通过压入(push)和弹出(pop)操作进行数据的存储和取出。 4. 队列:一种先进先出(FIFO)的数据结构,可以通过入队(enqueue)和出队(dequeue)操作进行数据的存储和取出。 5. 树:一种存储具有父子关系的数据结构,可以通过中序遍历、前序遍历和后序遍历等方式进行数据的访问和修改。 6. 图:一种存储具有节点和边关系的数据结构,可以通过广度优先搜索、深度优先搜索等方式进行数据的访问和修改。 这些数据结构在C语言中都有相应的实现方式,可以应用于各种不同的场景。C语言中的各种数据结构都有其优缺点,下面列举一些常见的数据结构的优缺点: 数组: 优点:访问和修改元素的速度非常快,适用于需要频繁读取和修改数据的场合。 缺点:数组的长度是固定的,不适合存储大小不固定的动态数据,另外数组在内存中是连续分配的,当数组较大时可能会导致内存碎片化。 链表: 优点:可以方便地插入和删除元素,适用于需要频繁插入和删除数据的场合。 缺点:访问和修改元素的速度相对较慢,因为需要遍历链表找到指定的节点。 栈: 优点:后进先出(LIFO)的特性使得栈在处理递归和括号匹配等问题时非常方便。 缺点:栈的空间有限,当数据量较大时可能会导致栈溢出。 队列: 优点:先进先出(FIFO)的特性使得
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值