(1)以开发为核心,测试只是开发队伍的一部分,也就是开发团队中有测试人员,但 没有形成独立的团队
(2)以项目经理为核心,开发小组和测试小组并存,隶属于项目经理领导。
(3)项目经理、开发组长和测试组长“三足鼎立”,测试团队具有独立的、权威的地 位。
同时,我也准备了一份软件测试视频教程(含接口、自动化、性能等),需要的可以直接在下方观看,或者直接关注VX公众号:互联网杂货铺,免费领取
软件测试视频教程观看处:
B站封神的接口测试教程,30天练完70个项目实战(含自动化测试、性能测试),学完即就业,永久白嫖!
时间特性:时间短、速度快、效率高。
资源特性:占用资源(CPU、内存、硬盘、网络)少。
包括与不同硬件、平台、软件自身不同版本、其他软件、数据的兼容。
可用性指标一般要求达到 4 个 9 即 99.99%(全年 52 分钟不正常工作)或 5 个 9 即 99.999%(全年 5 分钟),对一些军事系统,可用性高达 7 个 9(99.99999%(全年 失效时间不超过两秒)。
一般测试时间不足,可以采用空间换时间的办法,如在高负载情况下进 行为期一周 或一个月的测试,以判断其可靠性。
关注 MTTF(平均无故障时间)、MTTR(平均恢复时间)、MTBF(平均失效间 隔时间)。
修改可能包括修正、改进或软件对环境需求和功能规格说明变化的适应。
可维护性的软件应该是易改变的、稳定的、易测试的。
如在部署两台服务器时测试系统性能(容量,即最大负载),再部署四台、八台服 务器时分别进行系统容量的测试,看其容量是否为上次(两台、四台)实验值的两 倍或接近两倍。如果是,系统就具有良好的可伸缩性。
2.1 研读文档主要任务
和用户、业务人员、产品经理或产品设计人员、开发人员等沟通
2.2 怎么研读文档
分析软件的用户群,分析用户的实际需要;
分析软件的开发环境、开发语言、数据类型;
分析软件架构、软件的运行环境和平台、数据库类型;
分析软件要实现哪些目标(功能、性能、界面、易用性、兼容性、安全性)以 及具体的要求是什么;
分析软件有哪些功能,每种功能要完成什么业务,这些业务应该怎么实现,业 务逻辑是什么,业务流程是怎样的,业务规则有何要求;
分析功能或业务间的联系,哪些业务更关键或重要;
明确测试周期,测试目标,测试范围。
分析每个模块或功能上实现的功能
设计的开发原理包括数据类型
从用户使用场景角度分析业务流程
记录业务规则
以情景再现的形式写出需求信息。
2.3 研读需求文档案例
便签的数量最多为 50 个
便签标题字数最多为 40 个字节
便签的正文文字数量最多为 200 个
年份只能设置在 1900-2100 之间
所有参与方达成一致。
已发现的问题被阐述清楚、被修正。
这些需求都是用户提出来的吗?
有没有画蛇添足的需求?没有漏掉什么需求吗?
和竞争对手的产品做过比较吗?我们的产品优势体现在哪里?
是否正确地描述了每个需求?这条描述是否存在二义性的问题?
我的理解和文档作者的理解一致吗?
步骤一:分析业务流程(可以绘制流程图)
步骤二:描述程序的基本流及备选流
1、基本流(正确的流程)
(1)插入银行卡:客户将银行卡插入 ATM 机的读卡器
(2)验证银行卡:ATM 机从银行卡的磁条中读取账户代码,并检查它是 否属于可以接受的银行卡
(3)输入密码:ATM 机要求客户输入密码
(4)验证密码:确定该密码是否正确
(5)进入 ATM 主界面:ATM 显示在本机中可用的各种选项
(6)选择取款并输入金额:客户选择“取款”,并选择取款金额
(7)ATM 机验证:ATM 机进行验证账户余额是否满足以及总取款金额 是否满足要求,验证 ATM 机内现金是否够用
(8)更新账户余额、出钞:验证成功,更新账户余额,输出现金,提示 用户收取现金
(9)返回主界面
2、备选流(各种错误情况)
(1)银行卡无效:提示错误并退卡
(2)密码错误:提示错误,并判断是否 3 次错误
(3)密码 3 次错误:吞卡
(4)账户余额不足:提示错误并退卡
(5)总取款金额超出当日可取限额:提示错误并退卡
(6)ATM 机余额不足:提示错误并退卡
步骤三:根据基本流和备选流生成不同的场景
步骤 1:需求分析
借助开发知识
与开发或用户沟通
了解用户群及行业知识
-99~99 之间的整数
步骤 2:划分等价类并细化
-99 到 99 之中的整数
细化 :负数、0 、正数
超范围 :<-99 或 >99
非法类型 : 浮点数 、 字符(串)
遗漏一种测试情况
一块划成两块(等价类划分过细),结果?
冗余测试
过于粗略可能会漏掉软件缺陷
积累经验
最小值
小于最小值
最大值
大于最大值
看看下面的代码有错误吗?
输入或输出的边界最容易产生错误。
前面测试两位数加法计算器的测试没有考虑输入组合。
分析输入和输出
用等价类划分分析输入的各种情况、输出的各种情况
分析输入条件和输出条件
输入
原始决策表/判定表
优化策略
测试基本功能的保留;
一个输入错误,另外输入无所谓,可以整合;
所有输入都要错误过。
最终的决策表
导致测试量爆炸。
在测试程序时,人们可以根据经验或直觉推测程序中可能存在的各种错误,从而有针对 性地编写检查这些错误的测试方法。
错误推测分类
输入数据测试方面
输出数据测试方面
数据结构测试方面
文件系统方面
输入非法数据
测试方法
输入非法类型
输入非法范围/长度
输入非法格式
输入默认值
接受软件的默认值
键入空值
将默认值改为另外一个值
将默认值改为另外一个值,再变为空值
输入特殊字符(集)
根据被测软件所处的操作系统、程序设计语言、后台数据库以及具体业务 等信息列出表格,进行讨论,标明哪些需要测试,哪些需要剔除。
了解具体行业知识,具体问题具体分析。
文件命名下列特殊字符(33 个)
不能使用:\ /<>|“?,com0-com9,lpt0-lpt9,prn、aux、nul、 con。
思考
用户名有哪些特殊字符?
QQ 昵称、聊天内容有哪些特殊字符?
输入合法数据的非法组合
输入可能是出现问题的组合值。
输出数据方面的错误推测
1)同一个输入产生多种输出
案例
输入:一个电话打来
输出:
状态一:等待接听。
状态二:占线。
状态三:停机。
状态四:无法接通。
状态五:关机。
状态六:空号。
测试方法
2)验证输出结果的正确性
测试方法
数据结构方面的错误推测
1)数据结构溢出
变量
上溢:值太大
下溢:值太小
数组
上溢:数据量太多
下溢:数据量太少
2)计算结果溢出
输入非法值或很大与很小数据,强制结果产生上溢或下溢。
3)操作数和操作符不符
找到程序中容易引起操作数和操作符不符的计算、表达式等
文件系统方面的错误推测
1)使文件系统超载
假设“软件测试工程师管理系统”要保存 10000 个工程师信息,则保存时 engineer.txt文件可能会有20M大小,如果此时磁盘只有10M可用空间了, “软件测试工程师管理系统”会如何动作呢?
创建满容量或近乎满容量的文件系统,然后强制执行各种通过输入或输出 访问文件系统的操作。
打开足够多的文件,文件打开时会强制创建备份副本,从而占用双倍的存 储空间。
使用工具 CannedHeat,模拟文件系统超载。
2)更改文件访问权限
不同的用户对相同文件具有不同的访问权限,需要考虑登录同一台机器的 多个用户操作相同文件的权限问题。
打开一个文件,在操作系统中修改该文件的访问权限。有些操作系统 允许权限高的用户控制一般用户已经打开的文件。
两个应用程序打开,关闭同一个文件。
如把同一应用程序的不同版本安装在同一机器上,在不同版本的应用 程序中打开和关闭同一文件;
试着在某个应用程序中打开在另一个程序中已打开的文件,这可能会 导致文件访问权限上出现冲突。
3)使介质忙或不可用
大多数操作系统能同时运行多个应用程序,但相互切换时会有延迟,但是 没有对错误响应。
测试方法
通过启动大量应用程序,强制它们都打开并保存文件来使文件系统处于忙 的状态;或者同时下载大量文件也可以使后台拥挤。
使用一些测试工具来模拟磁盘的状况。
4)介质损坏
损坏的介质可能使操作系统传回错误代码,这些错误代码可能没有在应用 程序中编程处理。
损坏介质的方法使用不很多,只有少数公司采用,大多是开发操作系统、 设备驱动程序以及以安全为主的应用程序的公司会采用这种测试方法。确 定是否使用该方法,主要要考虑数据对用户的重要性。
该方法可以使用实际损坏了的介质。检查应用程序对错误的处理能力,应 用程序可以对错误进行处理或者将问题告诉用户,并且要确保用户数据文 件不丢失、不损坏。
也可以通过软件模拟。
将测试点写入测试需求分析说明书,或者 XMind 等,留存下以供将来编写测试用例使
用。
2.1 用例编号/序号
2.2 用例说明
2.3 初始条件
2.4 操作步骤
2.5 预期结果
2.6 用例状态
2.7 优先级
保证测试用例质量的方法
首先,要对用户需求、服务质量要求、产品特性有深刻且全面的理解
其次,采取正确、恰当的方法进行用例设计;
再者,按照测试用例的标准格式或规范的模板来书写测试用例;
最后,对测试用例的检查、评审,也是提高测试用例质量的主要且有效的手段。
软件未达到产品说明书标明的功能;
产品说明书简称为说明(spec)或产品说明(productspec),是软件开发小组 的一个协定。它对开发的产品进行定义,给出产品的细节、如何做、做什么、 不能做什么。这种协定从简单的口头说明到正式的书面文档有多种形式。
软件出现了产品说明书指明不会出现的错误;
如金融软件 7*24 工作不能宕机
软件功能超出产品说明书指明范围;
软件未达到产品说明书虽未指出但应达到的目标;
如软件在断电时的意外处理
软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。
主要体现在易用性方面。
发现缺陷后,应该做好分离和再现,排查发现的“缺陷”是不是软件本身的问题, 然后才能提交。
再现 3 次
重现
复现
缺陷的缺陷
是测试人员提交的不是缺陷的缺陷;
是一种无效缺陷;
此类缺陷常使测试人员遭受指责。
怎么办 : 正确理解需求; 做好复现。
重复缺陷
同一个缺陷 A 测试工程师提交后,B 测试工程师又提交或者自己提交的缺陷 与之前提交的缺陷相同或类似;
是一种无效缺陷;
怎么办 : 尽量避免两个人同时测试同一模块; 自己提交的缺陷与自己的重复,提交前查找一下,增强开发知识。
报告缺陷是为了缺陷得到修复。
希望获得缺陷的本质特征和复现步骤。
希望获得缺陷的严重程度和分布情况,以及对市场和用户的影响程度。
Correct(准确)
每个组成部分的描述准确,不会引起误解;
Clear(清晰)
每个组成部分的描述清晰,易于理解;
Concise(简洁)
只包含必不可少的信息,不包括任何多余的内容;
Complete(完整)
包含复现该缺陷的完整步骤和其他本质信息;
Consistent(一致)
按照一致的格式书写全部缺陷报告。
5.1 缺陷标题
执行完 A 后,发生 B;
在什么地方,做了什么事情,出了什么结果;
5.2 复现步骤
只记录各个操作步骤是什么,不要包括每个步骤的执行结果。
5.3 预期结果
软件应该具有的结果,或者说正确结果应该是什么样子。
5.4 实际结果
1.显示“命令代码行…错误”;
2.显示“并且终止…服务”。
5.5 注释/截图
截取缺陷特征图像文件;
测试过程所使用的测试文件;
测试附加的打印机驱动程序;
再次描述重点,避免开发人员将缺陷退回给测试人员补充更多信息;
再次指明该缺陷是否在前一版本已经存在;
多个平台之间是否具有不同表现;
注释包含缺陷的隔离信息,指出缺陷的具体影响范围。
能在 Win2000 和 WinXP 文本框中显示文本内容,但不支持 Win98
屏幕刷新后,现象会消失。
使用二进制文件,不存在该错误。
参见附加的使用说明书和测试文件。
我(I)、你(You)、他/她(He/She)
情绪化的语言和强调符号!!!
似乎(Seems)、看上去可能(Appearstobe)
认为比较幽默的内容 不确定的测试问题(Issues)/不确定是否是缺陷
A 类—致命缺陷,包括以下各种错误:
由于程序所引起的死机,非法退出;
死循环;
数据库发生死锁;
因错误操作导致的程序中断;
功能错误;
与数据库连接错误;
数据通讯错误
B 类—严重缺陷,包括以下各种错误:
程序错误;
程序接口错误;
数据库的表、业务规则、缺省值未加完整性等约束条件
C 类一般缺陷,包括以下各种错误:
操作界面错误(包括数据窗口内列名定义、含义是否一致);
打印内容、格式错误;
简单的输入限制未放在前台进行控制;
删除操作未给出提示;
数据库表中有过多的空字段
D 类—较小缺陷,包括以下各种错误:
界面不规范;
辅助说明描述不清楚;
输入输出不规范;
长操作未给用户提示;
提示窗口文字未采用行业术语;
可输入区域和只读区域没有明显的区分标志
E 类—意见或建议
有效的缺陷分析不仅可以评价软件质量,同时可以帮助项目组很好地掌握和评 估软件的研发过程,进而改进研发过程,未对缺陷进行分析就无法对研发流程 进行改进。
缺陷分析还能为软件新版本的开发提供宝贵的经验,进而在项目开展之前,指 定准确、有效的项目控制计划,为开发高质量的软件产品提供保障。
PS:如需要软件测试学习资料,可在公众号(互联网杂货铺),后台回复1,小编后面会逐步完善自己收藏的资料。
整理不易,给个关注点个赞吧,谢谢各位大佬!