软件测试

一、答疑篇

为什么选择软件测试行业?你有什么优秀的素质

一、什么是软件测试

验证软件是否满足用户的需求(软件需求来源于用户需求)

二、软件测试和研发的区别?

1、测试和调试的区别

目的不同

–测试的任务是发现程序中的缺陷;调试的任务是定位并且解决程序中的问题。

参与角色不同

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

执行的阶段不同

–测试贯穿整个软件开发生命周期,调试一般在开发阶段。

2、测试和研发的区别

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

工作环境 基本类似

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

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

繁忙程度 一般比研发轻松,但敏捷模式下差距不大,产品发布前压力比较大

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

三、软件测试岗位有哪些

  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. 按级别:初级、中级、高级、资深、组长、主管、经理、总监等

四、自动化测试框架

Java TestNG

python unittest

RobertFramwork

作业:五、面试官问你:为什么要做软件测试?

1、思维模式

逆向思维:开发盖房子,测试拆房子。不走寻常路。

案例:手机中有两条通话记录,进行删除。删除为0后,继续删除。

发散性思维:探求多项答案

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

2、兴趣

真的有兴趣么?而不是开发加班多,不想编码?

3、性格特征

好奇心 成就感 敏感 不浮躁 善于怀疑 批判性思维:清楚–准确、切题–深刻,有意义,有逻辑性–公正、全面

4、能力

快速学习能力

沟通能力

文字能力

开发能力

5、责任感和压力

责任感:测试往往是产品的最后一个检验者;测试的工作成效很难衡量,测试用例执行、bug数目的多少都无 法说明产品是否能够交给用户使用。所以,责任感是最重要的测试必备素质之一。

压力:来自开发人员、用户、上级、自己的压力。测试人员的压力比想象中的要大。

二、概念篇

1、软件开发中的需求

什么是需求?

满足用户的期望或规定的文档(合同,规范,标准)所需要的的条件或权限,包括用户需求和软件需求。

(1)软件需求从用户需求转化而来

(2)用户需求转化为软件需求的核心是沟通

2、BUG的概念

(1)当且仅当规格说明书(软件需求说明书)存在,并且正确,程序和规格说明书不相符合,称之为软件错误(BUG)

(2)当用户需求存在且合理,程序没有满足用户的需求,称之为BUG

3、测试用例的概念

向被测试系统发起的一组操作集合,包含测试环境,测试数据,操作步骤,预期结果等。

标题,功能模块,前提条件,重要性

(单另:邮箱注册登录失败测试用例)

网易邮箱的测试用例:个人用户注册成功并登录

功能模块 注册登陆

测试前提 系统运行正常,邮件服务已开启

重要性 重要

测试环境 Dell、Windows10、Chrome,IE10+

测试数据 用户名、密码、验证码

测试方式 手动

步骤动作: 期望结果:

1、进入注册登陆页面,选择注册 系统展现注册页面

2、输入邮箱地址,密码,手机号码 系统进行注册,发送激活短信,注册成 功后跳转到注册成功页面

3、输入注册用的验证码,进行激活操作 激活成功

4、用注册邮箱和密码,登录 登录成功,系统进入个人主页面

作业:水杯的测试用例:

水杯的握把是否有,是否方便用户拿起放下,水杯是否漏水,水杯质量如何,水杯能装多少水

在这里插入图片描述

4、模型(软件开发模型和测试模型)

一、软件开发模型

1、软件的生命周期:需求分析,计划,设计,编码,测试,运行维护

2、软件开发模型

(1)瀑布模型

一倾而下,有去无回,一个阶段进行完成之后进行下一阶段,每一阶段都只执行一次,是线性顺序进行的。

优点:强调阶段性,强调早期计划和需求调查,强调产品测试

缺点:风险往往后期测试阶段才显露,因而失去及早纠正的机会

(2)螺旋模型

适用于前期需求不是很明确,规模庞大,风险大的模型,渐进式开发模型的代表,每一层迭代都有需求分析,风险分析等,迭代次数比较多

优点:强调严格风险管理,强调开发质量,提供机会讨论项目是否有价值继续开发下去

缺点:对风险管理的技能水平提出了更高的要求,耗费人员,资金,时间投入

(3)增量模型-迭代模型(两种模型结合)

一个系统,开发A、B、C、D四个业务模块,两周时间

增量模型:第一周:A,B两个业务模块做完,第二周:C,D两个功能模块完成

迭代模型:第一周:先完成ABCD四个业务板块的基层功能,第二周:补充完成复杂的业务功能

优点:抗风险能力强,迭代模型 > 增量模型

(4)敏捷开发模型(轻量级的开发过程)

thoughtworks(一个公司,用的是敏捷开发模型)

敏捷宣言:敏捷开发模型的价值观:

通过身体力行和帮助他人来揭示更好的 软件开发方式。经由这项工怍,我们形成了如下价值观:

个体与交互重于过程和工具

可用的软件重于完备的文档

客户协作重于合同谈判

响应变化重于遵循计划

在每对比对中,后者并非全无价值,但我们更看重前者

敏捷开发有多种方式,其中scrum是比较流行的:

scrum的角色

PO product owner: 客户的代表,和客户沟通,把客户的需求转换为user story

SM scrum master: scrum流程的保障者,组织,主持各种会议

ST scrum Team: 各种技能的人员组成,完成迭代的目标

①(scrum):

发布计划会议,迭代计划会议,每日站会(昨天做了什么,碰到问题,今天做什么),演示会议,回顾会议

1、发布计划会议:PO会把user story进行排版,确定本期的user story;

2、迭代计划会议:SM和ST对user story进行分解,形成小的任务,确定具体的开发人员和完成时间;

3、每日站会:昨天完成了什么,碰到什么问题,今天的计划是什么;

4、演示会议:想用户演示迭代的成果,PO把用户的建议整理成user story放到下一次迭代当中;

5、回顾会议:回顾本次迭代,对不好的地方改进,好的地方运用到下一次迭代当中。

②敏捷当中的测试:

轻文档,轻流程,重目标,重产出 拥抱变化

削弱了测试用例的作用,进行探索性测试(思维导图)

二、软件测试的模型

软件测试V模型:

在这里插入图片描述

软件测试V模型是瀑布模型的变种。

  • 特点/优点:后期测试的每个阶段对应前期的每个开发阶段,描述了前后对应关系,有明确的测试依据

  • V模型指出,单元和集成测试应检测程序的执行是否满足软件设计的要求;系统测试应检测系统功能、性能的 质量特性是否达到系统要求的指标;验收测试确定软件的实现是否满足用户需要或合同的要求

  • 缺点:测试在编码之后,未在需求阶段就进入测试,不利于前期风险及时发现

软件测试W模型(双V模型)

在这里插入图片描述

  • W模型增加了软件各开发阶段中应同步进行的验证和确认。由两个V字型模型组成,分别代表测试与开发过程
  • 特点:测试的对象不仅是程序,还有需求、设计
  • 优点:测试与开发同步进行有利于项目问题及早发现,避免造成后期开发完成之后才发现问题
  • 缺点:阶段性比较强,上一阶段完成才进行下一阶段,不适用于敏捷开发

什么是配置管理?

配置管理( Configuration Management)是通过对在软件生命周期不同的时间点上的软件配置进行标识,并对这些被标识的软件配置项的更改进行系统控制,从而达到保证软件产品的完整性和可溯性的过程。

三、基础篇

1、软件测试的生命周期(软件测试的流程)

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

2、软件开发的生命周期

需求分析、计划、设计、编码、测试、运维

3、如何描述一个bug

例如:微信聊天记录无法删除

1、版本号

如V1.0.0

2、测试环境

如IOS2.1 iPhone 6s

3、操作步骤

如1、登录微信2、进入聊天页面3、选中一条聊天记录左滑,点击删除

4、预期结果

5、实际结果

如未删除

6、其他

7、不要把多个bug放在一起

4、bug的级别

崩溃:系统无法正常运行,阻断,崩溃。表现:死循环,死机,数据库死锁等

严重:系统可以运行,但是不稳定,如果继续运行,会发生严重后果。表现:数据泄露,直播画面失真,密码明文显示

一般:系统可以稳定运行,但是缺少部分功能,影响用户体验。表现:微信聊天记录无法删除,数据库查询错误

次要:系统稳定的运行,属于建议性的bug

5、bug的生命周期

(从bug创建到bug关闭,经历的一些状态)

New:新建

open:确认

fixed:已解决

reopen:重新打开

closed:关闭

reject:丢弃

delay:延期

对于后两种状态要告知项目经理如何处理

6、如果因为一个bug和开发人员产生冲突,测试人员如何恰当处理?

1、检查bug描述是否清楚

2、站在用户的角度去说服开发人员

3、bug定级要有理有据

4、提升自身的技术水平,知道bug产生原因,不光提问题,也可以提建议方案

5、不要争吵,开评审会评审bug,产品经理可以决定如何解决问题

作业:QQ登录的测试用例

QQ登录成功(失败)的测试用例

功能模块 登录QQ

测试前提 系统运行正常,QQ已安装好

测试环境 Dell,windows10

测试数据 QQ号,密码

测试方式 手动

步骤动作: 期望结果

1、打开QQ软件 系统展现QQ登录界面

2、输入QQ号和密码 系统进行校验QQ号和密码,登录成功后 跳转到登录成功页面(无法跳转,登陆失败)
在这里插入图片描述
作业:淘宝购物车的测试用例

在这里插入图片描述
在这里插入图片描述

四、用例篇

1、测试用例的基本要素:

测试用例就是为了实施测试而向被测试系统发起的一组集合,这组集合包括:

测试环境,测试数据,操作步骤,预期结果

设计测试用例的好处:

1、评估需求的覆盖率

2、重复使用(回归测试)

3、后辈借鉴学习,汲取经验

2、测试用例的设计方法(重点)

测试用例的总体设计方法:基于需求的设计

具体的设计方法:(基于需求的测试用例设计方法)

基于需求设计测试用例的前提:验证需求的正确性和完整性,逻辑要一致(验证需求)

根据用户需求和软件需求来考虑设计测试用例。

以下几种方法都属于黑盒测试的测试用例设计方法:

等价类

把输入(特殊情况下考虑输出)划分成若干个等价类,从每一个等价类当中提取一个测试用例进行测试,如果该测试用例通过,那么就说该测试用例代表的等价类测试通过

解决了情况很多,无法穷举的情况

有效等价类符合程序规格说明的有意义的值,叫做有效等价类

无效等价类不符合程序规格说明的无意义的值,叫无效等价类

if(x > 21)

有效等价类:x > 21 21.05 55

无效等价类:x <= 21 -1 15.5 10

课堂练习1:一个文本框搜索框,允许1-6个英文字符或数字,按OK结束。设计等价类

有效等价类:

​ (1)1-6个a-z

​ (2)1-6个A-Z

​ (3)1-6个0-9

​ (4)1-6个a-z和A-Z混合

​ (5)1-6个a-z和0-9混合

​ (6)1-6个A-Z和0-9混合

​ (7)1-6个a-z,A-Z,0-9混合

无效等价类:

​ (1)字符个数0个,

​ (2)或者大于6个,

​ (3)1-6非英文或数字

​ (4)1-6位英文数字,特殊符号混合

课堂练习2:手机号位数

有效等价类:11位,

无效等价类:小于11位、大于11位

边界值

针对输入输出的边界进行测试的黑盒测试方法

一般边界值和等价类方法用在一起进行设计测试用例

邮箱注册:6-18位字符,使用字母,数字,需要以字母开头

临界值:针对位数:5,7,17,19

因果图

因果图是一种逻辑图

有多个输入,输出和不同输入的组合之间有关系,就可以使用因果图法设计测试用例

在这里插入图片描述

因果图法设计测试用例的步骤

1、找出所有输入和输出

2、找出输入和输出之间的关系

3、根据输入输出之间的关系画因果图

4、根据因果图画判定表

5、根据判定表设计测试用例

**课堂练习1:**618活动,订单已提交,订单金额大于3000或者有红包,则优惠

1、找出所有输入和输出

输入:(1)订单未提交(2)订单已提交,小于3000,有红包

(3)订单已提交,等于3000,有红包(4)订单已提交,大于3000,有红包

输出:(1)有红包或者大于3000,则有优惠(2)没有红包且小于3000,没有优惠

2、输入和输出之间关系

订单未提交,则无优惠,

订单提交了,超过3000,有红包,则有优惠

订单提交了,超过3000,无红包,则有优惠

订单提交了,小于3000,有红包,则有优惠

订单提交了,小于3000,无红包,则无优惠

3、画出因果图
在这里插入图片描述

4、画出判定表

在这里插入图片描述
5、根据判定表指定测试用例

在这里插入图片描述
…等等
作业:(1)淘宝APP购物车测试用例

作业:(1)为什么购物车里的商品添加到一定程度就添加不了了

​ (2)APP基础功能的测试

正交法

研究多因素多水平的一种测试用例的设计方法。取出多个水平的最优组合,通过研究这些组合最后的实验结果来分析我们这个的实验结果

因素:输入

水平:每个因素的取值

水平数:每个因素取值的个数

正交表的列数:因素数

正交表的行数:(水平数 - 1) * 因素数 + 1

问题:如何去选择一个合适的正交树(最优组合)?行 列

​ 正交表的列数:因素数

​ 正交表的行数:(水平数 - 1) * 因素数 + 1

正交表的性质:

1、每一列中各数据出现的次数一样多

2、任何两列各有序对数一样多

正交法设计测试用例的步骤:
1、有哪些因素(变量)
2、每个因素有哪几个水平(变量的取值)
3、选择一个合适的正交表
4、把变量的值映射到表中
5、把每一行的各因素水平的组合作为一个测试用例
6、加上你认为可疑且没有在表中出现的用例组合

**课堂练习:**用邮箱注册的测试用例

姓名,邮箱,密码,确认密码,验证码
在这里插入图片描述

问题:当水平数不同的时候可以用正交表设计测试用例吗?

工具:PICT

场景设计法

用业务流把各个孤立的功能点串联起来形成事件流作为一个场景去测试

场景:去银行ATM取款

1、基本事件流:

正常插卡,输入正确密码,选择业务(取款),输入金额,取钱退卡

2、备选事件流:

(1)操作超时,吞卡,ATM异常,无法操作,

(2)卡片异常(插卡插不进去,卡插反了,卡断了,卡消磁了,非本行银行卡)

(3)输入密码前两次错误,第三次正确,操作继续;三次全错

(4)选择查询金额,

(5)输入金额大于余额,输入金额不符合要求,无法取款

(6)ATM机内无钱,无法取款

(7)退卡失败,操作超时,吞卡

(8)无网络,ATM机故障

错误猜测法

根据经验和直觉去判断系统的哪一个模块有问题,针对有问题的模块设计测试用例

(作为补充的去设计测试用例)经验丰富,知识积累

3、测试用例的有效性

4、测试用例的粒度和评价

粒度指测试用例编写的详细程度
作业:
在这里插入图片描述

1、姓名:1-20个字符,不包含数字,不能为空

2、年龄:18-60之间的整数,不能为空

根据等价类和边界值设计测试用例:

姓名:

有效等价类:1-20个非数字字符,2个非数字字符

无效等价类:1-20个数字字符,1-20个部分为数字,大于20个,为空

边界值:1,2,18,19个字符

年龄:

有效等价类:18-60之间的整数

无效等价类:小于18,大于60的整数,小数,空

边界值:17,18,19,59,60,61

作业2:

自动售卖饮料机器:(因果图法)

输入1.5块,按“雪碧”,输出雪碧

按“可乐”,输出可乐

按“红茶”,输出红茶

如果输入2块,输出饮料的同事还会输出5角硬币

(1)找出输入输出:

输入:1.5,2,按雪碧,按可乐,按红茶

输出:雪碧,可乐,红茶,5毛硬币

(2)输入输出的关系:

输入1.5,按雪碧,输出雪碧,

​ 按可乐,输出可乐,

​ 按红茶,输出红茶,

输入2,按雪碧,输出雪碧,5毛

​ 按可乐,输出可乐,5毛

​ 按红茶,输出红茶,5毛

(3)画因果图

注意:当有多个输入的时候,不管他们之间是什么关系,肯定有中间结果

在这里插入图片描述
(4)根据因果图写判定表

简化版:

在这里插入图片描述
(5)写测试用例:

1、输入2块,按雪碧,输出5毛,输出雪碧

2、输入2块,按可乐,输出5毛,输出可乐

3、输入2块,按红茶,输出5毛,输出红茶

4、输入1.5,按雪碧,输出雪碧

5、输入1.5,按可乐,输出可乐

6、输入1.5,按红茶,输出红茶

**作业:**微信发红包的测试用例

看 Java 的 Junit 单元测试

在这里插入图片描述
在这里插入图片描述

五、进阶篇

在这里插入图片描述

SDK,全称:SoftWare DeveLopment Kit,一般是指软件工程师特定的软件包建立的开发工具集合

一、按开发阶段划分 *

1、单元测试:针对程序内部的最小模块进行测试。 java、Junit;C++、gtest

TDD编码前(Test-Driven-Development)测试驱动开发

(依据:详细设计文档)(白盒测试)

2、集成测试:按照一定的策略将各个模块组合起来,进行测试(依据:概要设计文档)

习题: 局部数据测试出现在哪一个测试阶段?

A单元测试 B集成测试 C系统测试 D验收测试

答案:A

(灰盒测试:黑盒测试和白盒测试之间)

3、系统测试:将软件看成一个系统进行测试。 在集成测试之后

(依据:需求和系统设计文档)(黑盒测试)

4、回归测试:指修改了旧代码之后,重新进行测试以确认修改有没有引入bug,自动回归测试大幅度降低系统测试,维护升级等阶段的成本。

5、冒烟测试:对系统的基本的核心功能进行测试,目的是确认软件基本功能正常,如果通过冒烟测试就可以进行后续的正式测试工作。

6、验收测试:部署软件前的最后一个测试,是技术测试的最后一个阶段,也称为交付测试, 目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买展示该软件系统满足原始需求。(黑盒测试)

二、按测试的实施组织划分

1、α测试:由用户在开发环境下现场测试

优点:有利于和测试,开发人员及时沟通,及时解决

缺点:受测试,开发人员影响,不利于测试结果

2、β测试:由软件的使用者,在一个或者多个场所进行测试(用户实际使用的环境)

优点:测试环境是用户实际使用环境,有利于问题发现

缺点:不受开发方控制,测试时间不集中

一般α测试先于β测试

3、第三方测试:软件测试机构,给钱去测试,结余开发和用户之间的组织

三、按是否运行划分

静态测试: 是指不运行被测试程序,仅通过分析和检查源程序的语法、结构、过程、接口等检查程序的正确性

动态测试: 动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。这种方法由三部分组成:构造测试用例、执行程序、分析程序的输出结果

四、按是否手工划分

手工测试: 由人去一个一个的输入用例,然后观察结果,和机器测试相对应,比较原始

优点:自动化无法替代探索性测试,发散思维结果的测试

缺点:执行效率慢,量大易错

自动化测试: 自动化测试就是把以人为驱动的测试行为转化为机器执行的一种过程

自动化测试比如功能测试自动化、性能测试自动化、安全测试自动化。
通常所说的自动化是指功能测试自动化
自动化测试按照测试对象来分,还可以分为接口测试、UI测试等。接口测试的ROI(产出投入比)要比UI测试高 。

工具 selenium 功能自动化测试

​ jmeter 接口自动化测试,性能自动化测试

loadrunner 性能测试

​ appium APP端的功能自动化测试

测试框架 Java testNG

python unittest

​ Robertframework

自动化测试实施步骤:

1、完成功能测试,版本基本稳定

2、根据项目特性,选择适合项目的自动化工具,并搭建环境

3、提取手工测试的测试用例转化为自动化测试的用例

4、通过工具、代码实现自动化的构造输入,自动检测输出结果是否符合预期

5、生成自动化测试报告

6、持续改进,脚本优化

五、按是否查看代码划分 *

黑盒测试:

是把软件当成黑色的盒子,不关心程序的内部结构逻辑,只关心输入和输出。

黑盒测试设计测试用例的方法有哪些:等价类,边界值,因果图,正交法,场景分析法,错误猜测法

白盒测试:

把软件当成一个透明的盒子,检查软件内部的逻辑,结构,语句是否正确。

(1)语句覆盖法: 就是设计若干个测试用例,运行被测程序,使得每一条可执行语句至少执行一次。(是所有测试方法中最弱的覆盖)

(2)逻辑覆盖法

包括(判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖

判定覆盖:使设计测试用例保证每个判断的每个取值分支至少经历一次

条件覆盖:指选择足够测试用例运行时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支

判定条件覆盖:设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果至少执行,即要求各个判断的所有可能的条件取值组合至少执行一次。

条件组合覆盖:使所有判定中各条件判断结果的所有组合至少出现一次,满足这种覆盖标准成为条件组合覆盖。

(3)路径覆盖法: 每条可能执行到的路径至少执行一次。

(4)循环覆盖法: 当程序中存在循环结构时, 要覆盖所有的路径是不可能的,但是可以通过限制循环结构来测试。

灰盒测试:

介于黑盒测试和白盒测试之间的,不仅关心输入和输出,还关心软件内部的情况,多用于集成测试阶段

六、按测试地域划分

软件本地化:将软件处理成不同的语言版本的技术

软件国际化:使软件可以生成不同的语言版本和适应不同的风俗,在转换的时候,不需要修改软件源代码的技术。

国际化测试:

本地化测试:之前讲的全都是本地化测试

七、按测试对象划分

业务测试

界面测试

容错性测试

文档测试

兼容性测试

易用性测试

安装测试

安全测试

简历内容

1、了解软件测试V模型和W模型
2、掌握黑盒测试设计测试用例的测试方法,如,等价类,边界值,因果图,正交法,场景分析法,错误猜测法
3、了解白盒测试的测试方法,如,语句覆盖,逻辑覆盖,路径覆盖,循环覆盖

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值