今天要向大家推出一个有关异常测试用例的Bug,内容可以概括性的描述为:当输入了不在预定集合里面的字符后(如输入不在映射内的表情字符),会导致程序崩溃。
那么我们试着来重现一下问题发现的过程吧。首先向大家隆重介绍Bug重现的环境,这是一款兼具音乐、社交的强大产品,上档次的推荐功能,一上手便能寻觅到让自己沉醉不已的歌曲,已经按捺不住让更多人来一起分享好音乐的冲动了,怎么办!点击分享,要说点什么?此刻的激动之情已不能用言语表达了,就以表情来承载我对这首歌的喜爱吧,输入表情[哈哈],哎呀,太激动了,手一抖改成[哈哈哈]了,没关系,这不影响我想表达的内容,点击发送,搞定!咦?啪,程序闪退了!这绝对是Bug,影响用户体验,分享的热情都被浇灭了好嘛?
既然掌握了重现过程,就要尝试分析是哪一步操作造成程序崩溃了。我们发现:关键操作在添加表情上,本应该是[哈哈]表情对应的字符,错误的输入了[哈哈哈],而这个字符并不在映射内,点击发送后,由于代码没有特殊处理此类情况,导致字符表情修改了映射内容, App程序崩溃。
想必各位测试江湖的高手们必能瞬间点出这个异常情况的元凶,没错就是:Null,众多异常测试用例中最常见的一种。在移动端测试中,App闪退和长时间无响应的问题,还会由空指针、越界、溢出等异常用例引起。
对于Null,自然是要在程序中加入代码保护,例如一个简单的If-else判断语句,即可对Null进行特殊处理,至此一个严重程度高的Crash问题便迎刃而解,很轻松有木有!
这个Bug虽然在技术层面上提供的内容不多,Bug的发现、解决过程也是通俗易懂,但是却提醒我们在测试过程的规范中,需要重视异常测试用例的测试,对我们日常的开发、测试都有一定的借鉴意义:
对于开发人员而言,编写代码需要认真仔细,充分考虑每个函数可能的输入输出情况,完善自测。当然如果开发有足够的时间实施单元测试,在开发自测阶段就能发现大部分的异常用例了。
而从QA的角度来看,测试用例的完善性就显得很重要了,无论是边界值条件法、等价划分法等,都需要在正常测试用例的基础上,充分考虑到可能出现的异常用例。用户的误操作经常会产生异常情况,而严重的Bug往往诞生在这种异常情况下!
本文来自网易实践者社区,经作者陆春红授权发布