写给软件测试初学者—如何迅速找到系统中缺陷

软件测试新手如何快速找出软件中的缺陷Bug

前言:

当前用户对软件企业开发出来的软件质量提出了越来越高的要求了,并且近些年软件测试这个行业在国内得到了蓬勃的发展,尤其是最近2-3年来加入这个职业或者即将加入到这个职业的人也越来越多了。那么作为一名软件测试工程师,我们该如何迅速找到软件中的缺陷Bug呢?

正文:

下面结合作者多年的软件测试经验谈谈。

  1. 尽快熟悉公司的产品业务

比如你们公司做ERP软件的,你肯定要熟悉EPR的业务流程,比如你们公司是做银行金融类软件的,那么你一定要熟悉银行金融软件的的业务流程,因为只有熟悉了产品的业务流程,你才能迅速找出软件中存在的一些重要的缺陷,你发现的软件缺陷才是有价值的。否则即使你能找到一些软件缺陷,那也是纯软件的缺陷,价值不大。

所以,我给刚入职的一家公司的测试新手建议:做好测试,先要从熟悉业务开始。

  1. 把自己当成是用户

把自己当成是用户去使用该系统,比如在使用该系统过程中是这样操作的吗?

2.1比如在大量要求用户输入的软件界面中,有一些用户喜欢使用Tab键采用全键盘的输入;此时的正确的接口应该采取从左到右,从上到下的顺序。

2.2比如有的用户喜欢使用快捷键操作等(Ctr+C,Ctr+V,Ctr+F),但是实际情况下一些开发出来的软件的快捷键却根本不起作用。

2.3比如软件在需要用户输入的信息的时候(特别是在填写个人资料的时候),必填项后面一律要用*等醒目的标示,要让用户知道这个地方时必须填写的。

2.4下拉框不选值的时候,应该有个默认值;并且要多检查程序中的多处下拉框,因为很多情况下下拉框取不到值。

  1. 善于怀疑,不要迷信高手

世界上没有绝对正确的,总有错误的地方,具有叛逆心理,别人认为不可能发生的事,我却认为可能发生。别人认为是对的,我却认为不是对的。如果你认为某个或者某些程序员水平很高,他写的这个地方应该没问题吧,那么我要说你错了,这样很容易遗漏软件中的Bug。因为程序开发人员毕竟是普通的人,只要是人就会犯错误的。

  1. 不要让程序开发人员的观点:“用户不会进行这样的操作”而说服自己

遇到这样的情况,你要坚持你自己正确的想法,以后对方会明白你的。比如在一个录入员工基本信息的系统中,系统中对员工的年龄作为负值、而没有作为判断、也可以保存到数据库中,此时你不要被程序员的用户不会进行这样操作的观点说服自己,你要坚持你正确的观点,把这种现象作为一个Bug吧,勇敢点!你的选择不会不错!

  1. 在软件测试过程中要跟踪一条数据完整的流程

在软件测试的时候要跟踪一条数据完整的流程,保证数据的正确性这个真的是太重要了:假如你在测试一个销售的类型的软件的时候:你应该先做订货-à入库-à盘点-à销售-à查询。首先你要保证这个数据的流向是正确的无误的。假如你在测试法院审判软件的时候,你要先收案-à立案-à发送审批-à排期---审理审判-à结案判决-à归档-à查询。

总之跟踪一条数据的流程,保证数据的正确性。如果经过你测试的软件在用户使用过程中业务流程上都走不通的话,那么这样的软件你说经过你的测试,但是在比人看来与没有测试有什么区别呢?

  1. 回归测试要注意的细项

程序员提交新的程序版本后,作为测试人员应该立即与程序员沟通这个修改的功能、并且这个新修改的功能影响哪些功能。举个简单的例子来说明一下:比如在一款软件中,程序开发人员修改了某个“会员”的某个字段信息。作为测试人员首先你要测试“会员”的功能这个是你首先需要做的。另外你还要和程序员沟通询问他们新修改的这个会员的字段,会影响会员的销售功能吗?会对会员以前的销售记录的查询有影响吗?如果对这些功能有影响,那么这些功能都是你在回归测试的时候重点测试的地方,也是最容易产生Bug的地方了。

  1. 与使用者互动的缺陷

7.1如填写资料错误应的时候,应该能够提示错误的位置,让用户知道是这个地方输入数据不对。

7.2删除数据之前给一定要给出是否删除确认提示。

7.3不要在软件中使用中英文混合的提示比如:比如对于用户某个操作的错误提示,不要一会用“error”、一会用“错误”;一会用“succeed”另一会用“成功”,总之要统一。

7.4另外要对程序员出现错别字进行检查,比如把“登录”写成“登陆”。

7.5另外,在软件中不要对用户使用很专业的术语比如“记录”、“字段”等。

7.6新增/修改信息保存提交后系统给出“保存/提交/修改成功”提示信息,并自动更新显示。

7.7在用户进行大量的输入后,点击“保存”按钮,仅仅是因为某个地方的输入选择不正确,点击确定后发现所有的输入的内容都全部被清空了,花费很长时间的输入、仅仅是某个地方的输入不正确,而把该用户的所有输入的其他内容也清空了,假如你是这个软件的使用者、你肯定感觉挺挺恼火的。

7.8对于软件中的查询功能,测试的时候设置开始时间>大于结束时间看看能否查询出记录,这也是程序员容易犯的一个错误。

8.软件边界值

软件最容易在边界值上发生问题了。众所周知软件最容易在边界值上出现问题了,所以作为测试人员一定要在边界值上多测试,比如测试用户输入框中的数值的最大数和最小数,以及为空时的情况。

一个真实的边界值漏测案例:用户还款失败(假设用户本次需要还款1999.99元),但是在真实的用户使用过程中,用户向平台充值1999.99元,还款失败!

因为测试人员在测试平台充值还款都很随意,动不动就充值5万,10万之类的数字。因为测试平台的钱就是个数字而已!

9.非法容错性

比如在需要输入数字的地方输入字母;在需要输入字母的地方输入数字;在需要用户输入的文本框中拷贝字数很多的整篇文章到这里测试看看软件是如何做处理的;在含有除法的计算中把除数设为0等等来检验软件的容错性。

负数

  1. 软件接口的测试

如果软件不同部分是由多个程序员共同完成的,那么要在他们程序接口相关联的地方多检查,因为有时候在接口的地方,A程序员认为B程序员做了处理;B程序员认为A程序员做了处理;但是事实上他们双方都没有做处理。笔者的亲身经历:曾经做过一款销售类型的软件,A程序员做订货、B程序员做入库,他们每个人的程序都能单独运行,结果集成到一起就出现了错误,这个问题在测试过程中居然没有被发现,在用户的实际使用环境中用户发现报表查询出来的结果不准确,才发现了这个问题。

另外,现在的接口测试,还表现在程序前后端分离方面,比如下图中的,添加用户功能的用户手机号码在接口没做校验导致:

手机号码new

  1. 兼容性检测

目前的系统兼容性测试主要体现在两个方面:

web兼容性最主要测试的就是体现浏览器的兼容性。

app的兼容性测试最主要就是测试app在不同手机下的使用情况,尤其需要测试一些新开发的app在老版本的手机上会出现闪退的情况。

最准确的做法:对于 web 应用,这些场景应该在客户认可的多种浏览器的各个版本上进行测试,如:IE,Firefox,Chrome,Safari 等。

比如下图中的日历控件在IE9.0浏览器下不显示:

日期控件

12.软件在压力之下容易出错

软件在压力之下容易产生的错误,作为一个有经验的测试人员一般都知道:把你的软件在压力之下长时间运行测试,然后看看软件能否在压力之下经的住考验。

下图为笔者对上海市中小学专题校验系统做压力测试的时候的学习时长-28535分钟:

压力测试1

13.权限测试

测试过程中要注意权限访问相关的测试不要漏掉,比如下图中我修改我的个人中心的某个参数,居然能看到别人的个人中心的相关信息。

安全

14.随机测试

即使测试经过大量的充分的测试,也不能发现软件中的所有缺陷,所以测试人员在测试的时候可以做一些随机的测试,比如胡乱的在软件界面上乱点一通有时候也会发现一些意想不的软件缺陷。

15.学习他人的经验

最后,作为一名软件测试人员你可以查看公司里的软件缺陷库(比如Jira、bugzilla和禅道等)看看别人报告的软件Bug,从别人的报告Bug思路中你可以学习测试的经验,迅速找出软件中的缺陷。

禅道中的bug

总结:

软件测试虽然辛苦,但是掌握了一定的技巧之后将使你事半功倍。

希望上面介绍的一些技巧对你有所帮助。

posted on 2023-06-22 19:16  软件测试King老师  阅读(241)  评论(0)    收藏  举报