前言
测试过程中伴随很多问题的产出,比如程序缺陷、环境问题等,作为一个专业的测试人员,我们的任务应该不是仅仅做到把问题丢出去给开发,而是自己也要养成对问题的分析能力,进一步提升自己对问题处理和系统的理解。下面会简单介绍日常测试问题(程序缺陷、环境问题)的分类和分析步骤。
写在前面的话:不管遇到什么问题,首先进行测试重现,确认非偶发后,按照以下步骤进行分析;若为偶发,则先记录下来,测试时注意问题是否会规律发生。
一、程序缺陷分析
一般情况下,常见的程序缺陷可以分为这几类:程序处理报错(抛异常),页面JS报错,业务逻辑错误等。
1、程序处理报错(抛异常)
这类问题一般有这几种表现形式:页面直接输出异常、页面弹框提示、服务器打印异常日志。
1)页面直接输出异常是比较低级的处理方式,这种情况下我们是可以直接确认为程序问题,即使是脏数据引起的异常,这种异常表现方式是需要进行修复的。
2)页面弹框提示,比较友好的情况下我们可以看出是什么操作或者控制出了问题,这时根据提示文字可以确定问题;如果仅仅弹出诸如“操作错误”等指向不明的信息,需要保留现场,将使用的数据和页面状态截图留下。然后通过服务器上的日志来定位问题。
3)服务器打印异常日志,一般的系统都会记录两种日志,跟踪日志和错误日志。跟踪日志可以记录下在系统操作时的业务轨迹,错误日志则记录下系统出错时详细的日志信息,登录到服务器之后,用简单的指令可以得到对应的日志,如tail -f xxxx.log(实时刷新日志),grep ‘xxxxxx’ xxx.log(在日志中抓取包含XXXXXX的日志上下文)。一般通过错误日志可以直接定位到错误发生的代码行,可以更快速直接地解决问题。
2、页面JS报错
这类问题一般多见于操作时未出现任何提示,但是没有预期的响应结果。通过F12按键打开控制台,切换到console模块,如果有js报错,这里可以直接看到,一般通过这些信息可以直接定位到出问题的代码行。
还有一种是由于浏览器兼容性引起的问题,常见于IE浏览器edge以下的版本,但不局限于这种浏览器版本。在其他浏览器如chrome等表现正常,但在某一浏览器上页面加载出现异常且无法正常操作,如果是IE,则通过F12按键打开控制台,在控制台右上角查看是否浏览器版本过低,切换到edge,如果显示正常,则是版本问题导致。
二、环境问题分析
环境问题会阻碍测试执行,也会影响我们判断一个问题是否是程序缺陷,所以对环境问题有基本的判断和分析能力是必要的,有一定的了解之后我们也是可以着手去解决环境问题,避免等待耗费宝贵的测试时间。
1、服务器异常(内存溢出等)
当出现服务器异常时,页面上会有比较固定的表现,比如页面404页面500或者提示无响应等,引起此类问题原因有很多种,常见的有系统部署、服务器内存溢出等等。在前面我们已经知道了怎么在服务器查看日志,这里是类似的,先在服务启动日志里查看是否正在执行重启,如果没有部署,则查看错误日志或跟踪日志,人为刷新一下系统,查看实时产生的日志,是否有异常信息诸如out of memory、target not exist、fail to response等,则可能是服务器出了异常,需要进行重启或者进一步问题定位。
2、数据库异常
如果服务器并无异常,则需查看数据库连接是否正常,一般直接本地连接一下数据库即可知晓。或者通过上述服务器日志查询过程,一般可以看到数据库连接异常,也可定位到问题。重启数据库或者重启数据库所在的服务器可以解决问题,但是需先确认数据库及服务器是否有其他用途,沟通后再执行重启。
3、部署包、配置文件问题
如果上述现象都没有出现,那还有可能是部署包或者配置文件出现问题。重启系统,然后在启动日志中,可以看到相关的异常日志,如部署包不存在、配置文件找不到某个配置、配置项出现语法错误等,因为打包发布一般是通过指令拷贝到服务器上,在这中间可能出现问题导致包没有同步过去,此时需要重新部署包。配置文件中的很多配置项目跟系统启动息息相关,如果缺失或者格式错误,会引起系统运行异常。
三、数据问题分析
数据是测试的重要组成部分,但是大部分测试环境由于长期的大量测试执行,会积累不少错误数据,也是引发问题的一个重要方面。当执行用例后没有达到预期结果,我们还需要确认下自己使用的数据是干净完整的。
1、如果是自己新做的数据,先检查下数据库中相关字段是否已有值并且写入的值正确,确认是否做数据过程中系统存在BUG导致数据错误;如果数据在库里是正确的,那么根据上述第一、第二大点进行继续排查,过程中记得保存数据及操作截图。
2、如果是从系统或数据库直接找的历史数据,先确认该数据是否符合当前系统的逻辑,因为该数据可能不包含现有功能需要的字段,或者数值不符合当前的要求,从而导致变成了脏数据影响测试结果;再则是确认数据库中相关字段是否已有值并且写入的值正确。
3、还有一种情况是系统权限问题,配置不正确也会导致问题。如果系统有明确的权限划分,角色、菜单、数据读取限制等,出现操作错误时,检查当前用户是否具备对应的权限。