软件测试工作中找bug就是这个岗位本身立足的职责,那么对于很多新人和新入行的同学们来说,这个过程会有点苦逼,毕竟经历的项目经验不多,想快速的切入寻找bug往往会比较痛苦。哪下面小编就以自身的经验来普及下如何在工作快速的去定位找到bug。
一、要找文档资料和请教同事尽快熟悉公司的产品业务, 根据产品的业务属性来熟悉产品的业务流程,这样才能迅速找出软件中存在的一些重要的缺陷,这样发现的软件缺陷的价值才是比较有价值的。
1、把自己代入一个最初的使用用户的角色中去:
1)把自己当成实际用户去使用该软件产品,比如在试用软件的过程中,思考用户是大概会是如何操作的呢 。
2)现在很多要求用户输入的软件界面中,有一些用户喜欢使用Tab键采用全键盘的输入,此时正确的接口应该是从左到右,从上到下的这样一个顺序。
3)很多用户喜欢使用快捷键进行复制粘贴的操作(Ctrl+C、V),但是实际情况下一些开发出来的软件的快捷键根本不起这些预期的作用。
4)有效软件产品在需要用户输入信息的时候(特别是在填写个人资料的时候),必填选项前面后面会用到 * 等醒目的表示符号来提示用户必须在这个地方填写资料信息。
5)一些软件产品的下拉框不选的时候,应该有个默认值,并且要多检查程序中的多处下拉框,因为很多情况下下拉框会取不到值。
2、要对软件产品持怀疑的心态:
1)因为世界上没有绝对完美的东西或者产品,总会有错误的地方,因此软件从业者要具有逆推心理,别人认为不可能发生的事,我却认为可能发生;别人认为是对的,我却认为是错的。假如一个水平很高的程序员编写的程序,不要有“他写的这个程序应该没有问题吧”这种想法,因为这样会导致疏忽遗漏软件中的一些潜藏的Bug。
2)不用让程序员拿“用户不会这样操作”的观点说服自己,当遇到这样的情况时,你要坚持自己正确的观点,坚持把bug作为事实依据的结果拿出来说服开发去修改。
3、在测试的过程中最好是能自己执行测完一个整个业务流程:
1)比如一个软件产品的某个模块功能:“点击商品—收藏商品—加入购物车—订单结算—付款—消费二维码—消费—二维码失效”,如果在测试软件过程中业务流程逻辑都走不通的话,那么这个软件测试和不测试也没有什么区别了。
4、回归测试时要注意的事项:
1)程序员提交发布了新的版本后,作为测试人员应该立即与程序员沟通了解这个修改的功能的具体需求,并了解这个新修改的功能会影响到那些功能。而被影响的功能,是在回归测试中优先重点测试的地方,而且这些被影响的功能也是最容易产生Bug的地方。
5、软件产品与使用者互动的缺陷:
1)如填写资料错误的时候,应该能够提示错误的位置,让用户知道这个地方输入的数据不对;
2)当需要删除数据前一定要给定出是否删除的确认提示;
3)不要在软件中使用中英文混合的提示:比如对于用户在进行某个操作的错误提示,不要一会用“Error”,一会又用“错误”,一定要有统一标准规范,否则也是一种bug。
4)要对操作界面上的一些容易出错的字进行检查,比如把“登录”写成“登陆”;
5)在软件中提示中不要对用户使用提示很多专业的术语;
6)新增/修改信息提交后系统应该要给出“保存/提交/修改成功”的提示信息,并自动更新显示;
7)在用户进行大量的输入后,点击保存按钮,仅仅是因为某个地方输入选择不正确,点击确定后所有的输入信息都被清空了,这样的Bug会大大降低软件的易用性,也让用户感到使用的麻烦和不合理,更严重的后果会导致用户不在使用该软件。
8)对于软件的一些查询功能,测试的时候可以通过设置开始时间>结束时间,看看能否查询出记录;
6、软件产品的边界值 :
1)众所周知软件最容易在边界值上出现问题,所以作为测试人员一定要在边界值上多投入一些测试时间,比如测试用户输入框中的数值的最大数和最小数,以及为空的各种情况;
7、非法输入的容错性:
1)比如在需要输入数字的地方因操作失误而输入字母,在需要输入字母的地方也操作失误而输入数字,在需要用户输入的文本框中拷贝字数很多的文章,测试看看软件是如何对以上的几种做何提示处理的;
8、软件的接口测试:
1)如果软件不同模块功能是由不同的程序员一起共同完成的,那么要在他们程序接口相关联的地方多测试检查,避免双方程序员互相认为做了接口处理,最后谁也没有做接口的处理,导致软件在运行中产生缺陷;
9、兼容性测试:
1)软件兼容性测试要在不同的硬件、软件下(包括操作系统、浏览器)下的测试;
2)硬件配置不同时,有时候一些软件产品在配置很高的机器上,也会隐瞒一些错误,由于CPU运行过快的时候,很多现象一闪而过,导致肉眼没那么快反应过来发现不了缺陷;
3)软件不同时,软件在不同版本的浏览器中的界面与权限也不一样,这样的情况其实就是软件中的一个Bug现象;
10、软件产品在压力测试下容易出错:
1)软件产品在压力测试下容易产生的错误,是作为一名测试人员必须要知道的事情。所以在测试过程中,将软件在压力运行下长时间运行,看看软件是否能在压力之下正常工作;
11、随机测试:
1)很多软件产品即使经过很充分的测试,也不能完全的发现软件中的所有缺陷,所以在测试的时候可以做一些随机测试,比如胡乱在界面上乱点,有时也会发现一些意想不到的软件bug;
12、软件测试的作用和必备知识:
1)从事软件测试需要的知识:首先要了解软件工程的基本知识,理解软件生命周期过程中各阶段需要做的工作和需要达到的目标。然后,需要具备一定的编程经验或者是参与开发的项目经验。其次,需要掌握软件测试方面的知识,包括测试的定义、对象、目的、测试方法、测试过程等;
2)测试需要解决的问题是什么:一般来说,大家一般都会认为程序员按照软件的需求说明书编写就好了,可以实现需求中定义功能的程序,那么这个软件就可以投入使用了。结果是在用户的使用操作过程中,就会发现一系列的错误,给用户带来很多麻烦,为了给用户最大程度的减少软件会给用户带来的麻烦,这时就到了软件测试发挥作用的时候了,因此,软件测试要解决的问题就是寻找软件中未发现的隐藏的bug,来为软件的上市提供质量的保障。
3)何时开始进行测试:测试是一个独立的过程,它贯穿于软件生命周期的整个过程,于软件生命周期中的各个流程并发进行,因此可以说软件的整个生命周期中,越早开始进行测试越能提取发现bug。
4)如何开展测试:软件的测试基本可以分为测试需求分析、测试计划制定、测试用例编写、测试用例执行、测试结果输出报告这六个步骤,根据测试类型的不同,选择测试步骤的开始时间也不同。
5)测试需求分析:了解测试的规模、测试的内容、复杂程度以及存在的风险,通过测试需求分析,可以得出测试要点,而且测试要点可以包括系统功能方面的测试要点,也可以包括非功能方面的要点;
6)测试计划制定:测试计划的制定可以分为如下几点:
(1)首先,按照测试类型依据的标准确定需要测试的特性,如登记测试需要考虑用户文档、常规要求、功能性、可靠性、易用性这个五个特征;
(2)其次,确定需要测试的子特性,如功能性要求考虑安装性、适合性、正确性、一致性这四项;
(3)然后,选择相应的测试策略,对需要测试的几大特性评估该如何进行测试,如需要检查用户文档是否完整,需要验证功能是否正确等;
(4)再次,需要配置测试的环境,确定测试需要的硬件和软件设备是否准备齐全;
(5)最后,需要确定测试的人员及日程安排,为及时高质量的完成测试工作做准备,这一过程需要形成测试计划文档;
7)测试用例的设计:测试用例是测试工作的核心,如何设计出用最小的测试用例集找出软件中尽可能多的缺陷的测试用例,是一个很值得积累的经验;
8)在编写任何测试用例的时候,都应该使用边界值分析法,经验表明,这种方法发现错误的能力最强;
(1)必要时使用等价类划分法补充测试用例;
(2)必要时采用错误推测法补充测试用例;
(3)如有输入条件的组合,就从输入条件极其组合开始测试;
9)测试具体执行:手工执行功能化测试用例,并检查UI设计的Bug,在功能手工测试之后进行功能、性能、接口等自动化测试。
10)测试结果报告:根据不同的测试类型输出不同的测试报告,主要分析在测试中出现的问题,并对软件提出评估报告和结果建议;