说明:该篇博客是博主一字一码编写的,实属不易,请尊重原创,谢谢大家!
接着上一篇博客继续往下写 :https://blog.csdn.net/qq_41782425/article/details/103500264
文本框
√ 长度要求;
√ 输入内容限制。
密码框
√ 长度要求;
√ 不允许明文显示;
√ 禁止复制粘贴;
√ 输入内容限制;
√ 两次密码要一致。
单选按钮
√ 框架标题/提示文本不缺失且正确;
√ 各个选项正确;
√ 执行同一功能的多个单选按钮只能选中一个;
√ 要有默认选中项;
√ 一般不能取消选中;
√ 存入后台的数据正确。
组合列表框/下拉列表
√ 通常单选,条目内容要正确(没有多余/错放项、缺少项);
√ 横向显示要完整;
√ 条目功能要正确实现;
√ 组合列表框中可能允许输入数据。
数码框(up-down 控件)
√ 能使用上下箭头控制数字变动;
√ 数字有范围限制;
√ 数字自动循环或者到达边界时停止;
√ 可以直接输入数字。
窗口标题
√ 不缺失;
√ 显示正确。
选项卡
√ ctrl+tab 切换
默认焦点
Tab 顺序
快捷键/热键
√ 使用 ctrl 或 alt+其它字母
√ 同一窗口、界面或菜单中不能重复
大纲法主要用于对软件进行功能拆分。
模块
√ 包含多个功能操作的对象或功能集合,如文件(菜单)等。
功能点/功能
√ 能独立完成一件事或一个业务。如新建、打开等。
业务流程
√ 软件为了完成业务或完成核心功能所经历的步骤。
业务逻辑
√ 是对业务的不同处理方式。
业务规则
√ 如要求用户名只能用英文,5-11 个字符等。
案例
√ 即时贴程序部分需求说明
✰ 便签的数量最多为 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
✰ 非法类型
▲ 浮点数
▲ 字符(串)
ATM 机的取款测试:取款最少 50,最多 5000,每笔 50 的倍数,测试取一笔。
需求:50~5000 ,50的倍数
有效类:50~5000 50的倍数
无效类:小于50 大于5000 非50的倍数;不输入取款金额丶输入字符(前提ATM机键盘有字符)
解决:
密码框测试点
√ 有效等价类:4-10位
√ 无效等价类:小于4和大于10
程序输入类型测试点(根据开发语言来分辨是否区分大小写)
√ 有效等价类:true和false
√ 无效等价类:true和false以外的
Office 中选择字体测试点
√ 有效等价类:选择组合框中存在的字体,输入组合框中存在的字体
√ 无效等价类:输入不存在的字体
用户名组成测试点
√ 有效等价类:纯字母丶字母加数字 长度不超过12
√ 无效等价类:数字开头,包含特殊字符,长度大于12,长度为0(也就是不输入)
日期文本框测试点
√ 在分析之前需要了解产品用户,因为每个国家的日期排序规则不一样,如英国为日丶月丶年,美国为月丶日丶年,中国为年丶月丶日;并且还需要了解日期间隔符使用哪种符号
√ 有效等价类:日期范围正确,使用 / 作为间隔符;日期范围正确,不使用间隔符
√ 无效等价类:范围不正确,间隔符不合法(如空格或字母等),日期顺序与设定日期规则不匹配,年月日输入不合法数据(字符,标点等)
分析需求,找出边界。
写出边界值
√ 最小值
√ 小于最小值
√ 最大值
√ 大于最大值
使用边界值分析方法写测试点
练习题讲解
√ 测试知识的储备
✰ 了解开发原理
▲ 可能的编码方式
■ if (bl >= ‘A’ && bl <= ‘Z’)
■ if (bl >=65 && bl <=90)
■ if (bl > 64 && bl < 91)
■ if(bl>=‘0’ && bl<=‘9’)
■ if(bl>=0 && bl<=9)
■ if (bl>= -32768 && bl <= 32767)
■ if (bl >= -99 && bl<= 99)
部分 ASCII
如在输入框输入数据一定要了解系统的编程语言,如java中char类型或者int类型byte类型都是可以存储0~9的
即时贴程序,考虑标题的测试
√ 标题字数:1-40 字节
√ 标题字数:0-40 字节
文本输入域允许输入 1-255 个字符
下拉列表
分页
思考题讲解:
即时贴程序标题字数(1-40字节):0丶1丶40丶41
即时贴程序标题字数(0-40字节):0丶40丶41
文本输入域:0丶1丶255丶256(说明一点只允许输入1~255个字符,当输入到255个字符无法输入时,即表明256个字符已经测了,没有缺陷)
下拉列表:下拉列表选择第一个和最后一个
分页(显示1~20页):第1页和20页
分页(显示首页丶上一页丶下一页丶末页):首页丶末页丶点了首页点上一页丶点了末页点下一页
测试两位数加法计算器的测试没有考虑输入组合。
需求分析
√ 分析输入和输出
✰ 用等价类划分分析输入的各种情况、输出的各种情况
画判定表
分析与简化判定表
分析输入条件和输出条件
√ 输入
✰ 输入 1:
▲ 条件 1: 0<=X<=99
▲ 条件 2: -99<=X<0
▲ 条件 3: X<-99
▲ 条件 4: X>99
✰ 输入 2:
▲ 条件 1: 0<=X<=99
▲ 条件 2: -99<=X<0
▲ 条件 3: X<-99
▲ 条件 4: X>99
√ 输出
✰ 正确计算
✰ 错误提示
优化决策表
√ 优化策略
✰ 测试基本功能的保留;
✰ 一个输入错误,另外输入无所谓,可以整合;
✰ 所有输入都要错误过。
案例: 某厂工资发放需求
√ 工资分为年薪制,月薪制,两者互斥
√ 错误程度分为普通和严重,两者可同时具备
√ 年薪制员工犯普通错误扣工资 2%,犯严重错误扣工资 6%
√ 月薪制员工犯普通错误扣工资 4%,犯严重错误扣工资 8%
适用于多种输入的存在组合情况时。
填 | 填 | 填 | 填 | 填 |
---|---|---|---|---|
填 | 填 | 填 | 填 | 不填 |
填 | 填 | 填 | 不填 | 填 |
填 | 填 | 不填 | 填 | 填 |
填 | 不填 | 填 | 填 | 填 |
不填 | 填 | 填 | 填 | 填 |
不填 | 不填 | 不填 | 不填 | 不填 |
测试不是验证软件正确,而是攻击软件,发现错误。
测试要时刻保持怀疑的态度,具有缺陷预防意识。
测试要寻求系统设计、功能设计的弱点。
设计负面的、异常的测试,如考虑错误的或者异常的输入,往往可以发现更多的软件缺陷。
在测试程序时,人们可以根据经验或直觉推测程序中可能存在的各种错误,从而有针对性地编写检查这些错误的测试方法。
一般用于键盘输入数据时。
测试方法
√ 输入非法类型
√ 输入非法范围/长度
√ 输入非法格式
注意
√ 错误信息的检查:需要额外考虑错误提示信息的内容
√ 错误信息和错误要对应一致
√ 错误信息不能为空
√ 错误信息的内容不能只是错误代码,不能包含开发信息
√ 错误信息不能中英文混合
讲解
√ 咨询开发语言以及数据类型,如java byte类型-128~127,实际生活中肯定有超过127岁的,那么byte类型就不能用了
√ 如果年龄的范围设定在18-40岁之间,那么非法数据包括无效等价类 <18 >40,非法字符,小数,以及18.0这种格式
√ 两位以内的整数-99~99,同理也需要咨询开发语言以及数据类型
√ 文件名长度要求1~255字符,然而在windows系统中有些文件命名是拒绝使用的,如一些windows命令字符等
√ 日期格式,日期范围以及必须是数字其外都是非法输入
适用于有默认值的地方。
测试方法
√ 接受软件的默认值
√ 键入空值
√ 将默认值改为另外一个值
√ 将默认值改为另外一个值,再变为空值
适用于不能输入有特殊含义的字符时。
测试方法
√ 根据被测软件所处的操作系统、程序设计语言、后台数据库以及具体业务等信息列出表格,进行讨论,标明哪些需要测试,哪些需要剔除。
√ 了解具体行业知识,具体问题具体分析。
案例
√ 文件命名下列特殊字符(33 个)
✰ 不能使用:\ / < > | “ : * ?,com0-com9,lpt0-lpt9,prn、aux、nul、con。
思考
√ 用户名有哪些特殊字符?
√ QQ 昵称、聊天内容有哪些特殊字符?
解答:
①如在windows操作系统中那么admin以及administrator就是特殊字符;linux中可能root则是特殊字符,在数据库里面sa丶root丶system丶master等都可能是特殊字符,包括数据库中–注释丶单引号等都要进行测试,防止sql注入
②在QQ昵称中比如领导人历史人物的名字,以及小数点等特殊字符;聊天内容比如涉及到金钱相关的银行卡,转账,金额等,以及骂人的话包括中英文
适用于输入值之间存在依赖关系时。
测试方法
√ 输入可能是出现问题的组合值。
案例
单独看都是合法数据,但组合起来就有问题;当选择天津市时,区县可以选择海淀区说明是个bug,也就是非法组合,因为海淀区属于北京市的
案例
√ 输入:一个电话打来
√ 输出:
✰ 状态一:等待接听。
✰ 状态二:占线。
✰ 状态三:停机。
✰ 状态四:无法接通。
✰ 状态五:关机。
✰ 状态六:空号。
测试方法
√ 详细测试每一种输出,不要有遗漏。
√ 熟悉被测软件业务知识,阅读各种程序文档,明确输入可能产生的输出,列出关于程序输入于输出的一个列表,然后进行测试。
思考
√ QQ 中有没有类似的测试?
✰ QQ视频
▲ 接听
▲ 拒绝
■ 点击拒绝
■ 退出QQ
■ 关闭计算机/手机
▲ 等待超时(无应答)
适用于程序中存在变量、数组等数据结构时。
测试方法
√ 变量
✰ 上溢:值太大
✰ 下溢:值太小
√ 数组
✰ 上溢:数据量太多
✰ 下溢:数据量太少
思考
✰ QQ 中有相关案例吗?
▲ 添加好友,例如只能添加1000个好友,当添加1000个好友后再进行添加,则是测上溢;删除好友则是测下溢,如果此时删除好友选项不存在或者按钮置灰,不代表我们没有测,而是说明该功能无缺陷
适用于需要进行数值计算程序和图形操作程序的测试时,如加、减、乘、除等。
测试方法
✰ 找到程序中容易引起操作数和操作符不符的计算、表达式等。
计算√2^2-2,实际会想的是√2的平方就是2,然后2-2的0,其实并不是因为√2算出来的值为1.14…,然而1.414…的平方并不是2了,这个是不是缺陷取决于精确到或者咨询经理,根据用户需求来定
适用于数据存储到硬盘中时。
案例
√ 假设“软件测试工程师管理系统”要保存 10000 个工程师信息,则保存时 engineer.txt 文件可能会有 20M 大小,如果此时磁盘只有 10M 可用空间了,“软件测试工程师管理系统”会如何动作呢?
测试方法
√ 创建满容量或近乎满容量的文件系统,然后强制执行各种通过输入或输出访问文件系统的操作。
√ 打开足够多的文件,文件打开时会强制创建备份副本,从而占用双倍的存储空间。
√ 使用工具 Canned Heat,模拟文件系统超载。
适用于应用程序的运行需要消耗大量内存或运行时需求其他相关软件同时运行的情况。
√ 大多数操作系统能同时运行多个应用程序,但相互切换时会有延迟,但是没有对错误响应。
测试方法
√ 通过启动大量应用程序,强制它们都打开并保存文件来使文件系统处于忙的状态;或者同时下载大量文件也可以使后台拥挤。
√ 使用一些测试工具来模拟磁盘的状况。
使用场合
√ 损坏的介质可能使操作系统传回错误代码,这些错误代码可能没有在应用程序中编程处理。
测试方法
√ 损坏介质的方法使用不很多,只有少数公司采用,大多是开发操作系统、设备驱动程序以及以安全为主的应用程序的公司会采用这种测试方法。确定是否使用该方法,主要要考虑数据对用户的重要性。
√ 该方法可以使用实际损坏了的介质。检查应用程序对错误的处理能力,应用程序可以对错误进行处理或者将问题告诉用户,并且要确保用户数据文件不丢失、不损坏。
√ 也可以通过软件模拟。
输入非法类型
输入非法范围(数值)
输入非法长度(个数)
输入非法格式
输入默认值
输入特殊字符
输入合法数据的非法组合
粘贴强制输入
一个输入多个输出不要遗漏
输出结果(含数据库)要正确
上溢、下溢(含结果)
操作数与操作符不符
文件超载
文件权限不足
介质忙或不可用
介质损坏
对软件需求进行正确性的检查。
保证软件需求的可测试性。
通过产品需求文档的评审,与市场、产品、开发等各部门相关人员沟通,使得大家认识一致,避免在后期产生不同的理解,引起争吵。
通过产品需求文档的评审,更好地理解产品的功能性和非功能性需求
在需求文档评审通过后,测试的目标和范围就确定了。虽然此后会有需求的变更,但可以得到有效的控制,这样可降低测试的风险。
评审是否完成是以需求文档获得多方“邮件确认”或“签字”通过为标志的。这不应该只体现在“签字”形式上,更重要的是达到下面的结果。
√ 所有参与方达成一致。
√ 已发现的问题被阐述清楚、被修正。
明确自己的角色和责任。
熟悉评审内容,为评审做好准备,做细做到位。
在评审会上,针对问题阐述观点,而不是针对个人。
可以分别讨论主要的问题和次要的问题。
在会议前或会议后可以就存在的问题提出自己建设性的意见。
提高自己的沟通能力,采取适当的、灵活的表述方式。
对发现的问题跟踪下去。
应该在需求形成的过程中进行分阶段的多次评审,而不是一次评审。
测试人员要善于提问,多思考
√ 这些需求都是用户提出来的吗?
√ 有没有画蛇添足的需求?没有漏掉什么需求吗?
√ 和竞争对手的产品做过比较吗?我们的产品优势体现在哪里?
√ 是否正确地描述了每个需求?这条描述是否存在二义性的问题?