• 0
  • 0
分享
  • 如何定位web前后台的BUG——软件测试圈
  • quinn 2022-08-23 16:37:58 字数 3641 阅读 3317 收藏 0

一、对系统整体的了解

Server端:jsp+Servlet+json

数据库:sql、MySQL、oracle等

前台:涉及到jstl,jsp,js,css,htm等方面

后台:servlet,jms,ejb,还有很多框架,struts,hibernate,spring,ibatis

Jsp:分不清前后台的,因为这里涉及到一个运行时刻的问题,它们的运行时刻是不同。

用户发出请求后,服务器解析用户请求,转至对应的jsp,这个时候可以说是整个jsp都是后台程序。

而Jsp做出响应后,把响应的内容返回给浏览器,这个时候浏览器就只看见html,css,javascript,这个时候所有的程序又都是前台程序。

二、前后台bug定位

1.前台的bug通常是功能、界面和兼容性等有关;后台的bug与性能和安全性有关。

前台bug定位:按F12在控制台中查看报错信息,对于出错的js可以在Sources下查看对应报错的资源文件,写入缺陷管理工具提交给开发即可(或者使用一些抓包工具,抓取请求相应过程中的资源文件)

前台bug注意以下三个方面:

1)网站前台权限控制:没有权限的用户不能直接输入url的方式来进行访问,必须进行登录。以后涉及到权限的测试,一定不能漏掉url的方式也需要验证一下。

而在单个页面进行W3C测试时则需要去掉该权限控制。

2)网站前台的title,对于这个也很容易忽视。进入到不同的功能页面,title显示应该是有,并且要和你进入的页面一致。title就是在浏览器最左上角看到的那些文字

3)http和https的注意点:

https是一种安全链接,需要证书,所以在系统中客户会要求某些关键的地方希望加上这种安全连接,那么此时你需要注意的是:对于不需要的安全链接的地方千万也要去

重点测试,有些开发会很容易忽略这一点。

要打开HTTPS开头的网站,前提是该网站安装了SSL证书,只有安装了SSL证书的网站,并且开启了443端口,你才可以通过HTTPS加密协议无访问;如果没有则不能访问。

比如在某个网站http协议后面加个s去访问,看能否访问成功,能成功,会显示绿色安全小锁,否则就不能访问。

2.后台bug定位:根据后台日志文件

系统使用secureCRT进行日志获取,或者服务器控制方面的操作(关闭和重启)

重启的一般情况:

1)热部署(新增部分功能,或者修改部分bug)

2)发布新版本(整个系统)

3)内存溢出,此时重启服务器即可

由于项目中有线程程序,./shutdown脚本关闭tomcat程序,不能把启动的线程全部关闭,造成服务器启动线程未关闭的错误。

Linux系统中重启Tomcat的一般步骤:(一般是先关闭进程,然后进行重启,如果/要删除某个文件:rm文件名,或者不为空的文件夹:rm-rf文件夹名)

cd  usr/local/  //测试服务器名称/bin
ps -exf  //看测试服务器下运行的项目的主进程(最前面的数字为PID进程号)
kill -9 PID //强制关闭某一项目的主进程
./startup.sh  // ./**.sh即执行重启shell脚本文件,此时在测试服务器的bin下面,直接执行即可,其余的加上chmoda+xshell脚本文件,也可用./执行

小知识:

psa ux和ps -ef命令区别
psa ux是用BSD的格式来显示java这个进程
显示的项目有:USER,PID,%CPU,%MEM,VSZ,RSS,TTY,STAT,START,TIME,COMMAND
ps -ef是用标准的格式显示java这个进程
显示的项目有:UID,PID,PPID,C,STIME,TTY,TIME,CMD)

3.如何查看日志?

一台服务器可以部署多个应用:

cd usr/local/测试服务器名称/logs     //查看先进入到服务器的logs目录下
tail -f catalina.out     //监视catalina.out文件的尾部内容(默认10行)

4.日志中常见的问题

获取日志文件中常遇到的问题:

1)编码问题:tomcat是新的,需要改编码修改tomcat的server.xml文件<Connectorport="8080"URIEncoding="UTF-8"/>

特别是windows下的项目重新部署到linux系统下,

2)空指针:程序问题,一般没有考虑到为空情况,或者主外键约束的数据为空,或者删除关联数据,导致为空

3)长度过长,超过最大长度,测试环境修改数据库字段长度后生产环境未修改,导致报错!!

4)非法数据:

5)内存溢出:重启

5.一般的问题原因总结:

程序:为空判断,增删改查,不同公众号调用的接口也不一样

数据初始化:数据库表结构和数据初始化,权限配置,

特别注意生产环境上的用户数据修改,此时用户在使用,很重要!

故障无法重现时:

1)看日志,根据日志定位原因,则在测试环境中按照日志提示构造条件相同的测试案例测试,尝试在测试环境中将问题重现。

2)测试环境和配置与实际的工程环境和配置有哪些差异等等。同时主动与开发负责人、工程实施人员以及有经验的项目经理讨论,分析可能导致的原因。

测试环境ok,生产环境新增时保存失败,查看后台日志报长度溢出,数据库内容字段要求和生产环境不一致!!

6.辅助工具:linux和SQL

linux查看日志

SQL用来筛选数据或直接进行数据修改状态,多用于集成测试过程中前后流程相连接

三.浏览器兼容性和网页规范标准测试

浏览器兼容性测试(偏主流浏览器,如谷歌,火狐,IE8以上):

https://dev.windows.com/en-us/microsoft-edge/tools/staticscan/

W3C网页验证:(判断网页书写是否符合规范,记住此处必须去掉权限控制,单个单元页面url需要跟参数)

https://validator.w3.org/

W3C手机端页面检测(如手机微信菜单下的页面):

https://validator.w3.org/mobile-alpha/

互联网测试与传统测试的区别

1.最大的不同:互联网产品需要自己部署和运营,用户使用瘦客户端(浏览器,app或一个需要安装的client),核心的数据和业务逻辑在互联网公司的机房,在IDC,在云端。

如:我们做的系统用户只需一个浏览器,服务器用的阿里云,部署和运营只需要一个运维人员即可。

考虑现网(生产环境)存在下面两个问题:

(1)如何发布功能到现网

互联网测试完一般可直接发布,测试周期短,有时候需要进行灰度发布,先让部分用户用起来,发布完做生产验证。

(2)如何保证测试环境和生产环境同步

测试环境比较难搞,拿我们做的懒企鹅来说,牵扯的系统平台比较多,用到很多微信平台的接口,这个很难自己搭建或者用mock。

另外保证测试环境和到生产环境都是好的,需要代码和数据库,以及环境配置都要保持一致,这需要相应的机制和工具来验证和同步。

2.互联网产品节奏很快

有的软件公司,基本是进行二次开发,周期长,每次都需要经过下面几个完整的测试流程:

客户提出需求--BA和客户沟通,确定需求和解决方案--测试人员根据需求说明书和解决方案编写测试用例、进行概要评审、进行详细设计评审、开始测试、回归测试、生产验证。

现在的互联网产品测试基本为:

产品经理确定好测试需求--开发人员写详设-(此阶段可以进行设计bug检查)--开发人员开发--测试人员测试,上线

来不及测试设计,来不及自动化,短时间内如何保证测试的覆盖率和质量?--(探索式测试应势而生)

3.更多的人参与到测试中

互联网公司有专门的测试团队的比较少,一般开发和测试比例:7:1,如何保证质量?

1)开发人员的自测

开发人员进行单元测试,测试用例的通过率,同一个版本拉代码的次数

2)产品或运营人员的体验

在这里基本我就相当于用户,进行产品体验,或者根据免费试用者反馈的意见进行优化

3)发布之前的评审

注意环境,配置,数据方面的问题

4.有一些是免测试的

并不是所有发布到生产环境的东西都需要在测试环境检验,如:图片样式改动,小bug修复,但是哪些免测是个复杂的问题

5.海量用户带来的挑战

1)性能方面

如何做轻量级的性能测试

2)浏览器的兼容性

现在的系统大多基于主流的火狐,谷歌,IE8以上,放弃浏览器兼容就等于放弃一部分客户。

6.测试工具和技术方面

传统的企业花钱购买商业软件,如QTP,loadrunner,或者自己开发的项目管理工具

大部分的互联网公司使用开源或自主研发的,如selenium,appium,robotium,monkeyrunner,jmeter

相同点:

1.都需要非常熟悉产品和业务

2.都需要了解产品的技术(深度测试方面性能分析,内存泄露,web服务器,cache,代理)

3.具体的测试技术

4.测试设计的方法

5.测试人员的技术体系:


作者:老_张

原文链接:https://www.cnblogs.com/imyalost/p/5800632.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   测试团队作为产品研发团队重要的一环,承担着产品研发质量保证的工作。一款产品质量的好坏,测试团队起着很重要的作用。  作为测试团队的管理者、负责人,所有工作的开展,都需要从自身团队的价值出发,为整个团队找到最佳的价值输出点。  今天,我们就从这个点出发,探讨测试团队的管理工作。  一般情况下,测试团队工作的服务对象,主要包括两个:一个是产品的最终用户,另一个是产品的研发团队,我们分开来说。  最终用户  产品的最终用户,最直观地感受着一款产品质量,测试团队测试的好坏与否,产品的最终用户最有发言权。  因此,如何让产品的最终用户的体验,来证明测试团队的价值,是测试团队最重要的工作之一。  从这...
            0 0 1464
            分享
          •   Robot Framework是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发(ATDD)。  对于公司层面:现在市面上很多都要求app、web自动化,但是浅层面的都是基于UI自动化,对很多产品来说基于UI的自动化脚本运行过程中容易出现出现找不到定位元素而错误,且版本更新迭代块,脚本维护成本高,此时可以进行接口自动化测试,通过保证接口逻辑,数据传输正确,提高产品的质量。  本文简单的介绍下通过Robot Framework做一个简单的接口自动化测试实践过...
            1 2 1951
            分享
          • 这篇总结推迟了好久,一直想在工作一年之后写一篇总结,由于各种琐事以及感觉想法的不成熟,一推再推。这两天尤为强烈,不管怎样都应该把这一年多测试工作学到的知识和想法记录下来。软件测试行业在国内发展时间较短,每个公司对软件测试公司的定位和工作内容也不经相同。本人只在一个公司从事测试工作并时间不长,如有偏见欢迎指正,不胜感激。个人对功能、性能、自动化三个方面测试的认识功能测试的重点在哪儿?说一下本人对功能测试的理解,关于功能测试重点在对被测系统的了解上。至于测试方法:等价类划分、边界值、错误推测、因果图....等测试方法很容易理解。把这些方法应用到系统功能测试中也不难,关键是如何应用?这里又引出了一个...
            13 13 1678
            分享
          •   摘要:大家好,今天我们一起聊聊,在软件性能测试过程中如何编写性能测试用例,上一次推文介绍了如何进行性能测试的需求分析,在性能需求分析中已经确定了哪些接口或那些业务逻辑需要进行性能测试,那么在用例设计上就根据不同的接口及业务进行设计测试用例。  首先需要对每个接口进行压测,验证每个接口是否有明显的性能瓶颈。并需要把所有的单一接口全部优化完毕后,再做场景级别的性能测试。  一、单接口的性能测试用例  例如登录系统的登录接口:  二、多接口的业务场景性能测试用例  例如登录系统的登录后进行下载业务。  三、全流程业务场景性能测试用例  例如登录系统的登录后进行填表然后进行下载业务。  例如登录系...
            0 1 1576
            分享
          • 前言由于需求的快速迭代和敏捷测试的要求,在测试过程中引入自动化成为必不可少的手段。作为一个互联网测试团队,我们自然也引入了自动化测试这个环节。在众多的测试框架中,我们选取了相对成熟稳定,支持多种平台的Appium框架。虽然Appium自身的Api能解决大多数的测试场景,但总有漏网之鱼。不巧,就是这些漏网之鱼往往成为我们自动化实施中的那些梗。本文主要介绍我们测试团队在Appium UI自动化实施过程遇到的梗,以及对应的解决方法。自动化测试Appium自动化框架我们这里先简单介绍下Appium。Appium是一个移动端的自动化框架,可用于测试原生应用,移动网页应用和混合型应用。Appium的核心是...
            0 0 1113
            分享
      • 51testing软件测试圈微信