软件测试常见Bug - BBChe/-Bug GitHub Wiki

1.翻页
  翻页时,没有加载数据为空,第二页数据没有请求
  翻页时,重复请求第一页的数据
  翻页时,没有图片的内容有时候会引用有图片的内容
  2、图片数据为空
  图片数据为空时,会保留为空的图片数据位置
  3、链接为空
  链接为空时,点击图片,会刷新页面
  4、服务端部分字段为空
  整个页面出现空白
  5、session过期
  session过期后,可能整个页面的数据就会丢失,页面呈现空白
  6、文字内容过多
  文字内容过多时,页面排版错乱
  7、不同平台的浏览器,功能、样式问题
  PC与手机浏览器,同段代码会展示不同的样式
  同个功能在不同的浏览器上面,功能会出现失效的现象
  8、弹窗,针对图片弹窗
  不同的手机,弹窗处理机制会不一样,导致有些手机点击弹窗按钮,弹窗不会出现
  9、第三方应用,访问网页
  会偶尔出现,HTML+CSS样式不起任何作用,页面呈现空白(遇见过,无复现)
  第三方应用登录网页后,登录账户错乱
  第三方应用分享,微信、QQ、微博三种分享渠道,有三种不一样的分享机制
  10、音频网页
  不同手机、不同的系统版本,有些手机进入网页后,音频效果会自动播放,相反有些手机需要点击播放按钮,才能播放
  11、自动检测是否安装应用
  有些手机上是安装过应用的,通过手机浏览器打开此应用的任何页面,页面顶部会不会自动判断是否安装此应用,有些手机可以自动检测,但部分手机是不可以检测的,安卓手机偏多,iPhone手机也不少
  12、cookie过期
  WEB系统基本上会用到cookie,如果cookie未在预定的时间内进行保存,刷新页面,会对cookie有影响
  13、链接正确性
  链接未按指定的跳转
  所跳转的链接不存在
  链接不正确跳转
  14、导航测试
  WEB基本上每个页面顶部都会有导航,看下导航是否为死导航、乱导航等
  15、分辨率
  页面文字及样式,应支持常见的分辨率
  16、文本字符
  简单的文本字符判断,像手机号不能输入非数字以外的字符
  17、性能测试
  请求数据时的响应,会不会很久才会请求到数据
  18、图片测试
  正常的图片展示,是否会模糊
  图片是否会截断及压缩
  图片格式的处理,JPG、PNG、GIF
  19、客户端兼容性
  平台兼容性,第三方客户端应用内引用web页面,主要是Android与IOS系统
  浏览器兼容性
  20、整体界面测试
  整体界面的样式、文字排列、图片展示等
21.录入的下拉选择项进行了过滤根据表单的检索关键字作为过滤条件进行下拉列表过滤显示
22.录入的下拉选择项或单选项与别的录入项之间的联动过滤关系正确检查多重关联的下拉列表字段的数据有效性
23.必填项字段控制与数据库必填项控制一致
24.正确输入所有相关内容,包括必填项,点添加按钮,记录成功添加
25.成功新增的记录在数据库显示的值与录入的一致
26.必填项内容不填、其它项正确输入,点添加按钮,系统有相应提示
27.内容项中输入空格,点添加按钮,记录不能添加成功
28.内容中不输入,保存后显示null
29.内容项中输入系统中不允许出现的字符、点添加按钮,系统有相应提示
30.仅填写必填项,点添加按钮,记录能否添加成功
31.添加记录失败时,有相应的提示,原填写内容保存
32.添加记录失败时,原填写内容保存
33.重复提交相同记录,系统有相应提示(同一客户端提交两次相同的记录,不同客户端提交一次相同的记录)
34.某些输入项不允许重复(注意大小写和前后空格问题),若添加重复的输入项,系统应有相应提示
35.提交时自动处理了内容首尾两端的空格
36.提交成功的记录后,可以正常显示此记录
37.提交成功的记录后,可以正常调用此记录
38.新增数据提交后,会清空缓存,如果没有清除再次提交有提示
39.提交成功后刷新页面,系统不会抛异常信息
40.是否有批量新增功能,如果存在,则要考虑对批量新增进行性能和压力测试
41.是否有批量新增功能,如果存在,则要考虑在批量新增过程中,如果出现系统异常,新增操作是否进行了数据回滚
42.新增按钮是否对应了一组事务处理(即点击新增的同时,在后台数据库进行了多项工作,而非一条添加),要在新增成功后,检查是否所有的事务操作都进行了正确完整的处理
43.新增按钮是否对应了一组事务处理,要在新增过程中,人为构造新增异常,检查是否进行了事务回滚操作
44.新增操作是否支持回车键或TAB键的输入切换操作
45.新增操作中是否具备撤销功能
46.新增操作异常后,不会影响其他的功能操作
47.新增操作的同时,是否在后台创建了对应的文件夹或文件,如果存在,要在新增结束后,在系统后台进行文件夹或文件的确认和检查
48.新增操作的同时,是否在后台网络中进行了相关数据或文件的传输,如果存在,要在新增过程中,检查网络数据传输的完整性和正确性以及安全性
49.新增操作后,是否会自动更新系统其他页面或数据库表的信息(例如网站新注册一个用户,该网站首页上对应的注册用户人数进行更新),如果存在,要明确更新的时间点,在时间点到来时,检查是否进行了更新
50.新增操作后,是否会自动更新系统其他页面中对应的下拉框数据(例如新增一个状态,在前台下拉框中会增加一个新的状态内容),如果存在,要在相关页面上逐一检查下拉框内容是否进行了更新
51.如果是B/S或C/S系统,在服务器端增加了一个信息,是否会影响到前台系统界面的数据,如果存在,那么在后台服务器端进行新增操作后,就要在前台客户端去查看相关的信息是否进行了更新
52.如果该功能存在假删除,要考虑在新增记录时,关于重复的校验,是否包括假删除数据例如员工管理功能对应的删除操作是假删除,并且新增员工要求,员工姓名不能重复。加入张三离职后,把张三假删除,在界面上看不到张三的信息,此时再次新增员工信息,是否能再次录入一个员工姓名为张三的?
53.新增界面中是否有右键快捷菜单,支持拷贝和粘贴等常见编辑功能
54.能否支持回车或TAB键的切换
支付功能测试
在支付金额上
55.金额的最小值:0.01
56.无实际支付意义的金额:0元订单
57.支付金额错误:格式错误、数字错误(支付金额为负数)
58.超大金额:设置的最高金额上限。(如微信红包的最大值为200元等)
59.余额小于实际需要支付的金额
60.银行卡或其他设置当日消费金额或者是单笔消费金额超额
支付接口上
61.关于支付会设计到很多第三方接口的相关的事件。比如:支付宝、微信、网银系统、手机银行、POP机的终端服务,甚至是扫码枪等硬件设备也是有关系的
支付操作问题上
62.指纹支付
63.免密支付
64.账号+密码支付
65.动态获取支付验证码支付
66.银行卡+密码绑定支付
67.信用卡可能会设计到支付码等
68.如今的支付多样化、快捷支付和银行卡支付之间的差异性。信用卡和普通储蓄卡之间的差异性等都是需要考虑的
产品的容错性上(异常处理)
69.如何处理退款
70.支付时出现断网
71.支付失败之后如何补单和退单
72.支付金额不足的情况下,充值后是否可以再继续支付
73.持续点击是否会出现多次扣款
74.如果发生多次扣款,如何退款到支付账号
75.待支付状态,如果买家下单,不支付走了;这个单子不能一直是待支付,所以系统需要能够发现长期未支付,直接关闭;同时需要支持买家关闭等
76.关闭订单时,系统能直接把单子关闭吗?它有没有可能已支付,只是支付回调还没有回来
77.如果因为系统设计,支付未回调之前被关闭了;回调回来后,系统该怎么做,确保不会出现买家把钱付了,单子被关闭了
测试方法
划分等价类:把所有可能的数据输入划分为若干部分,然后从每一部分选择少数具有代表性的数据作为测试用例
1.有效等价类:合理,有意义的输入数据构成的集合,检验程序是否实现规格说明预先规定的功能和性能
2.无效等价类:不合理,无意义的输入数据构成的集合,检验程序的容错能力
’边界分析
1.大量的错误发生在输入或输出的边界上,而不是某个范围的内部
逻辑覆盖
1.语句覆盖:设计若干测试用例,运行所测程序,使得每一条可执行语句至少执行一次,语句覆盖是最弱的逻辑覆盖在准则
2.判定覆盖:设计若干测试用例,运行被测程序,使得程序中每个判断的取值分支和取假分支至少经历一次,即判断的真假值都能满足
if else 条件覆盖
设计若干测试用例,运行被测程序,要使判断中的每个条件的可能取值至少满足一次
if ?
for (?) else
路径覆盖:覆盖所有可能的路径
1.判定-条件覆盖:使得每个条件的所有可能至少出现一次,并且至少每个判断本身的判断本身的判断结果出现一次
功能测试的常用方法
1.页面连接检查,每一个链接是否有对应的界面
2.相关性检查,删除/增加一项会不会对其他项产生影响,如果产生影响,是否正确
3.检查按钮功能是否正确
4.字符串长度检查,输入超出需求所说明的字符串长度的内容,看系统是否检查,会不会出错
5.字符类型检查
6.标点字符检查
7.中文字符处理,乱码或出错
8.检查带出信息的完整性,在查看信息和update信息时,查看所填写的信息是不是全部带出,带出的信息和添加的信息是否一致
9.信息重复,在一些需要命名,且名字唯一的信息输入重复名字或ID,看系统有没有处理,重名包括是否区分大小写,以及在输入内容的前后输入空格,看系统是否处理
10.检查删除功能,在一些可以删除多个的地方,不选任何内容按删除按钮看系统有没有任何处理
11.选择一个或多个时又如何处理
12.检查添加修改是否一致,检查添加和修改信息的要求是否一致,例如添加要求必填的项,修改也应该必填;添加规定为整型项,修改也必须为整型项
13.检查修改重名,修改时把不能重名的项改为已存在的内容,看是否处理,报错,同时看是否报自己重名的错
14.重复提交表单,一条已成功提交的记录,back后再提交,看系统是否进行处理
15.检查多次处理back键的情况
16.Search检查:在有search功能的地方输入系统存在和不存在的内容,看结果是否正确
17.如果可以输入多个search条件,同时可以添加合理和不合理的条件,看系统是否处理正确
18.输入信息的位置,输入信息时,光标的位置
19.上传和下载文件的检查,上传下载的功能是否实现,上传文件是否能打开,上传文件的格式规定,系统是否有解释信息
20.必填信息检查,必填项是否有提示信息
21.快捷健检查,是否支持常用快捷键检查
22.回车键检查,在输入结束后之间按回车键,看系统处理如何,会否报错
易用性,按钮名称通俗易懂,望文知意
1.完成相同或相近功能的按钮,要用Frame框起来,常用按钮要有快捷键
2.完成同一功能或任务的元素要集中放置,减少鼠标的移动距离
3.按功能将界面划分区域块,并要有功能说明和标题
4.界面要支持键盘自动浏览按钮功能,tab,回车键等
5.界面上首先要输入的和重要信息的控件在tab顺序中应当靠前,位置也应放在窗口上较醒目的位置
6.同一界面上的控件数最好不要超过10个,多于10个时可以考虑使用分页界面显示
7.分页界面要支持在页面间的快捷切换,常用组合快捷键Ctrl+Tab
8.默认按钮要支持Enter及选操作,即按Enter后自动执行默认按钮对应操作
9.可写控件检测到非法输入后应给出说明并能自动获得焦点
10.Tab键的顺序与控件排列顺序要一致,目前流行总体从上到下,同时行间从左到友的方式
11.复选框和选项框按选择几率的高低而先后排序
12.复选框和选项框要有默认选项,并支持Tab选择
13.选项数相同时多用选项框而不用下拉列表框
14.界面空间较小时使用下拉框而不用选项框
15.选项框较少时使用选项框,反之使用下拉框
16.专业性强的软件要使用相关的专业术语,通用性界面则提倡使用通用性词眼
excel导入导出
导入:
1.在excel中某一行或者某一个字段格式不对或者数据为空,则需要和策划确认是否提示到具体的字段,最终需要保证提示文案友好?excel中导入具体的信息提示:“某字段格式不对或者数据为空等”
2.导入excel时系统应判断出格式不对,根据具体要求提示相应文案,例如文件格式不对等?提示:“excel中导入格式不对”
3.需确认是否导入,如果导入的文件是相同文件时需要做出相应的提示,并按提示中的操作进行?提示:“将重复的文件覆盖还是忽略?”
4.excel用excel和wps两种软件编辑后导入,测试软件是否支持excel和wps两种方式下导入?excel支持excel和wps软件的编辑,导入数据正常显示
5.不使用下载的模板,自己新建excel导入,自己手动新建excel或者对其他excel进行修改,使excel格式和模板一致,这种情况下填写正确的数据?excel正常导入
导出:
1.选择需要导出的列表项,点击导出按钮?格式检查1.导出的excel格式是否符合预期2.excel中各字段是否正确3.导出excel文件名是否有要求,如果有要求,是否正确4.不同浏览器导出的excel文件显示一致与正常
2.数据检查:1.选择数据为空时是否可以导出2.数据量较小时导出检查3.excel导出时数据的分页检查(一般数据量较大时,开发都会分批次去取数据,分页时容易出现问题)4.数据量很大时,系统是否会出现问题,导出的时间检查,以及对系统其他功能的检查?1.数据为空时提示不能导出2.正常导出,数据显示正常3.正常导出,数据显示正常4.正常导出,数据显示正常
自己总结:
  1)空白
  用户名和密码均为空/用户名填写,密码为空/用户名为空,密码填写
  2)错误校验
  输入错误的用户名和密码/用户名错误密码正确/用户名正确密码错误
  3)大小写区分(如:用户名和密码都为小写时)
  用户名和密码均大写/用户名大写,密码小写/用户名小写,密码大写
  4)存在空格
  合法的用户名或密码前插入空格/合法的用户名或密码中间插入空格/合法的用户名或密码后插入空格
  5)已注销的用户名登录
  6)已禁止/锁住的用户名登录
  7)长短校验
  在给定的用户名和密码规则下,超出或少于指定的长度登录(测试临界值)
  8)非法字符校验(如@#¥%等字符)
  9)多次错误登录,是否锁住
  用户名或者密码在连续输错3次或者5次的情况下,账号要被锁定
  10)是否支持tab和enter键
  输入框是否支持tab键或支持Enter键登录
  11)多点登录/提示信息
  同一个用户不能同一时间在不同的位置登录
  12)登录是否记住用户名和密码
  13)密码明文
  14)切换用户,是否显示前一用户信息
  15)登陆后前进后退操作
  16)查看密码转码是否有规律,是否每次都是一样
  17)密码是否可以用MD5解密
  18)登录超时(经过一段时间自动退出)
  19)SQL注入
  20)跨站
  21)COOKIE注入
  22)COOKIE加密检查
  23)提交用get方法(不安全)
  网上资料:
  一、基本功能测试:
  输入正确的用户名和密码登录成功
  输入错误的用户名密码登录失败
  用户名正确,密码错误,是否提示输入密码错误?
  用户名错误,密码正常,是否提示输入用户名错误?
  用户名和密码都错误,是否有相应提示?
  用户名密码为空时,是否有相应提示?
  如果用户未注册,提示请先注册,然后进行登录
  已经注销的用户登录失败,提示信息友好?
  密码框是否加密显示?
  用户名是否支持中文、特殊字符?
  用户名是否有长度限制?
  密码是否支持中文,特殊字符?
  密码是否有长度限制?
  密码是否区分大小写?
  密码为一些简单常用字符串时,是否提示修改?如:123456
  密码存储方式?是否加密?
  登录功能是否需要输入验证码?
  验证码有效时间?
  验证码输入错误,登录失败,提示信息是否友好?
  输入过期的验证码能否登录成功?
  验证码是否容易识别?
  验证码换一张功能是否可用?点击验证码图片是否可以更换验证码?
  用户体系:比如系统分普通用户、高级用户,不同用户登录系统后可的权限不同。
  如果使用第三方账号(QQ,微博账号)登录,那么第三方账号与本系统的账号体系对应关系如何保存?首次登录需要极权等
  二、页面测试:
  登录页面显示是否正常?文字和图片能否正常显示,相应的提示信息是否正确,按钮的设置和排列是否正常,页面是否简洁壮观等。
  页面默认焦点是否定位在用户名的输入框中
  首次登录时相应的输入框是否为空?或者如果有默认文案,当点击输入框时默认方案是否消失?
  相应的按钮如登录、重置等,是否可用;页面的前进、后退、刷新按钮是否可用?
  快捷键Tab,Esc,Enter 等,能否控制使用
  兼容性测试:不同浏览器,不同操作系统,不同分辨率下界面是否正常
  三 、安全测试:
  不登录:浏览器中直接输入登录后的地址,看是否可以直接进入
  登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取)
  用户名和密码是否通过加密的方式,发送给Web服务器
  用户名和密码的验证,应该是用服务器端验证, 而不能单单是在客户端用javascript验证
  用户名和密码的输入框,应该屏蔽SQL注入攻击(当用户名输入1‘or’1‘=’1,密码随便输入,可以登录时则是未屏蔽SQL注入攻击)
  用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)
  错误登陆的次数限制(防止暴力破解)
  考虑是否支持多用户在同一机器上登录;
  考虑一用户在多台机器上登录
  四、性能测试:
  单用户登录系统的响应时间是否符合"1-3-5"原则,所谓1-3-5原则为:网站响应时间1-3-5原则,1秒是很好,3s是好,超过5秒用户就容易跳失
  用户数在临界点时并发登录是否还能符合"3-5-8"原则
  压力:大量并发用户登录,系统的响应时间是多少?系统会出现宕机、内存泄露、cpu饱和、无法登录吗?
  稳定性: 系统能否处理并发用户数在临界点以内连续登录N个时的场景?
  五、其它测试:
  连续输入3次或以上错误密码,用记是否被锁一定时间(如:15分钟)?时间内不允许登录,超出时间点是否可以继续登录。
  用户session过期后,重新登录是否还能重新返回这前session过期的页面?
  用户名和密码输入框是事支持键盘快捷键?如:撤销、复制、粘贴等等
  是否允许同名用户同时登录进行操作?考虑web和app同时登录
  手机登录时,是否先判断网络可用?
  手机登录时,是否先判断app存在新版本?
  是否支持单点登录?
  是否有埋点接口
  WEB网站测试
  一、输入框:
  1、正常的字母/文字/数字(正常流程的测试);
  2、重复提交(输入内容后,重复点击提交按钮);
  3、纯异常字符/正常输入夹杂异常字符(!@#¥%……&**等等);
  4、长度限制(边界值测试,假设最小长度为N,最大长度为M,则测试N-1,N,M,M+1);
  5、重复输入(已经存在记录,重复输入);
  6、空提交(什么都不输入直接提交,看程序如何处理);
  7、含有空格(开头,中间,结尾);
  8、含有回车(输入内容中含有回车,查看如何处理,如何保存,以及如何显示);
  9、复制粘贴操作(如密码需二次确认验证,此时复制粘贴不可生效,其余的情况应该生效);
  10、如有格式要求,请验证格式(如电话号码的格式要求,运营商号段的要求);
  11、输入非法字符集,如:null,\n;
  12、全/半角的符号是否区分;
  13、对于搜索输入框:
  若输入 * 是否能搜索出全部的内容;
  若输入空格能否搜索出全部的内容;
  若输入比要搜索的全部内容超长的字符,能否搜出相应的内容;
  输入脚本/html语言,是否会过滤(此处涉及安全测试,可暂不考虑)。
  二、提交/确定按钮:
  1、对于提交/确定按钮,点击后,数据是否成功处理,页面跳转是否正确;
  2、连续点击提交/确定按钮页面如何处理,注意连续提交时操作要快,达到签个提交尚未处理完成,点击下一个提交,程序如何处理,是否报错;
  3、对于取消按钮,点击“取消”按钮后,查看数据有没提交。
  三、后退按钮,返回键:
  1、对于页面的操作,大家要注意测试下浏览器上的后退按钮操作,查看下做完操作后点击后退按钮后,之前的操作是否会撤销?
  2、连续点击后退按钮,查看页面会做何种处理,是否会报错;
  3、比如已经退出登录的页面,点击后退按钮,页面是否仍是登录状态?
  4、对于有返回键的页面,对于已经成功提交的记录,点击返回键后,看如何处理之前的操作;
  5、对于有连续返回键的页面,连续点击返回键,页面如何处理,是否报错。
  四、链接测试:
  1、首先,测试所有链接是否按指示的那样确实链接到了该链接的页面;
  2、其次,测试所链接的页面是否存在;
  3、最后,保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面,只有知道正确的URL地址才能访问。
  要注意的是:未登录时各功能跳转页面的测试;对于网站测试各个页面的跳转都是需要点击测试的,以及需要登录的操作,在未登录的情况下去操作,跳转是否正常都需要验证;
  五、session超时/失效:
  1、登录后长时间不操作,session超时,查看页面跳转;
  2、这涉及所有需要登录的才能操作的页面;
  3、测试这种情况的简便方法:登录网站,将需要测试的页面Page1在另一个标签中打开,然后再在原来的页面中退出登录,此时session已经失效;这样再去操作Page1,即可达到session失效或超时的条件。
  六、 图形界面测试:
  1、首先要确保图形有明确的用途。
  2、网站的图片尺寸要尽量地小,并且要能清楚地说明某件事情,一般都链接到某个具体的页面。
  3、其次验证所有页面字体的风格是否一致;在这要验证背景颜色应该与字体颜色和前景颜色相搭配。
  七、操作流程测试:测试中不仅测试界面友好性,还要对操作流程易用性或者友好性做测试.
  1、不仅要验证操作流程是否符合大部分用户的操作习惯;
  2、是否有多余的操作流程,对于多余的流程是没有任何好处的,不仅使操作繁琐还有可能出现不必要的漏洞;
  3、操作流程是否顺畅,会不会产生让用户误解的步骤;
  4、每个步骤操作完以后,需要给出提示的是否明确给出。
  八、列表及翻页功能测试:
  1、对于页面中的各项列表,都要测试其翻页功能,不仅要注意测试各个翻页相关按钮(注意:tab键,enter键的测试),特别是首页,尾页;
  2、还要测试当该列表中含有的页数超过5页,10页甚至更多页的情况;同时要验证5页以后,或者10页以后,或者很多也以后的页面是否正常;
  九、页面提示语测试:
  页面提示语不仅要友好,还要做到整个网站风格(字体大小,字体颜色,提示的排版,背景,提示语气等)要统一;对于这种提示语的测
  试,在测试的过程分别提出来 可能会比较繁琐,而且浪费时间和体力;对于这一类问题,最好是统一提出,统一总结,因为此类情况大部
  分会是比较类似的情况,可统一整理出文档,反馈给开发 人员,统一修改,这样能够提高双方的工作效率。
  十、浏览器兼容性:
  现在新开发的项目对浏览器的兼容性要求也是比较高的,比较主流的浏览器就是IE6,IE7,IE8以及FireFox,苹果的浏览器Safari等,通过我
  们测试的情况,IE6是最不容易兼容的浏览器,其次是IE7,Safari;IE8和FireFox差不多,一般问题不大。在测试的时候大家最好用IE6浏览
  器,容易发现问题;对于其他IE的测试可以通过IETester工具,这个并不是完全精准的,但是鉴于一个电脑只能安装一个IE浏览器,只能退而
  求其次了;当然也可以用其他同事的浏览器确认测试。
  十一、是否支持tab键,enter键:
  在测试网站的按钮或者输入框时,要测试是否支持tab键和enter键,利用这两个键做操作是用户习惯性的操作;
  十二、页面title测试:
  一个网站的页面title是最好要统一的;
  要验证页面title的显示是否正确;
  风格是否统一;
  类似操作的不同页面的title是否与对应的页面相一致。
  十三、刷新键:点击浏览器上的刷新键,检查页面如何处理,是否报错?
  十四、滚动条测试:对于滚动条的测试,要注意测试拉动滚动条是否异常。
  PS:
  session与cookie的区别:
  session是保存在服务器上面的,cookie是保存在本地的,本地cookie向服务端请求时,会在coolie中带一个session id向服务端发出数据请求,而服务端会根据这个session id去找到这个session文件,然后进行数据处理。

⚠️ **GitHub.com Fallback** ⚠️