当前位置: 首页 > 编程日记 > 正文

后台服务项目的白盒测试之旅

本文来自阿网易云社区

作者:孙婷婷


白盒测试起因

17年下半年我开始介入部门新项目的服务v2版本的功能测试。刚接手项目时,感到十分头疼,首先它不像我刚接触测试时做的to C端项目,主要是页面展示操作,黑盒测试足够;其次它不像我刚来网易介入的图像项目,主要通过接口判断图片属性,撸撸产品需求也能通过黑盒测试覆盖功能。

相比之下新项目的项目特点则是:

A.    是一个服务端项目,主要是接口测试;

B.    接口参数需要特定的加密格式加密后传输,服务端需要解密后处理,数据不透明;

C.    接口参数量多达至少30个,接口最后返回类型多达30种,逻辑复杂;

总结起来,它就是一个数据不透明、逻辑复杂的后台接口服务项目。刚拿到项目的时候我基本处在无从下手的阶段,加密解密太复杂,我连接口测试都不会实现。被逼无奈,先把开发的单元测试用例拿来跑一跑,边跑边了解摸索,慢慢就走上了白盒测试的道路。


测试摸索

我在测试过程中,主要按照通过数据追溯主干,需求用例发散旁支,bug追因查看细节的思路,来一步步抓大放小学习开发代码,同时完成测试任务。

1.追溯主干:

在项目介入过程中,我喜欢通过关注数据的流动来快速了解一个项目的主要实现过程,即撸清从调用一个接口传入参数到获得结果这个过程中数据经过哪些模块,经过加工后落入哪个存储模块。

举例来说,在本次测试摸索过程中,首先梳理项目各个接口的主要功能、梳理接口参数和返回值。由于项目的主要功能接口是collect接口和check接口,则在代码层主要关注这两个相关模块。

d792dc1e-60f1-4f70-934a-3f4c008b6980

b57e5ec8-1952-4114-8efc-98414eaddaa8

接着根据接口参数的数据流向走读或者DEBUG代码,查看在主干链路上的流向。由于项目的主要参数是收集的设备和行为信息CheckData,就可以重点关注CheckData的数据处理。在实践中,遵循从上层深入底层的原则,本项目中都是http接口,则可以从代码Controller层入手,跟踪CheckData数据经过哪些系统、模块处理,是否经过kafka、redis、nos等模块,最终存入何处。这步操作,对于后续在测试过程中进一步校验测试数据处理是否正确会有很大帮助;同时面对分布式系统,能让你快速了解整个项目的模块、依赖和架构,分分钟画出系统架构图。

2.发散旁支:

在接触接口后,可以在功能用例的基础上查看重点需求代码发散旁支,了解需求细节,查看或者跟开发讨论了解具体实现方法。结合测试用例,可以边测试边了解代码,补全用例没运行到的代码场景。例如下图中在测试collect接口功能时,已经通过梳理主干看到代码中参数会被解密后解析,此时就可以详细去查看数据处理方法decode和parse,增加些解密解析中的异常场景,也便于后续校验传参是否合理、解析是否正确等。

b632b637-e17f-46dd-959b-121b23461c1e

3.bug追因查看细节

当测试过程中输出结果不符合预期却又不能肯定定性为bug时,就是白盒测试上台的最好时机啦。将项目配置成远程debug模式,复现问题场景,在触发场景过程中单步调试代码,查看代码实现细节,确认每一步是否符合预期最终定位问题原因。将结果自信反馈给相关开发。


对于DEBUG这个过程,没有接触过远程DEBUG的小伙伴,可以首先尝试把代码下载到本地review代码;review熟了可以求助开发,帮着先把代码在本地跑起来进行本地debug;当本地debug玩的飞起的时候,远程debug就也不是问题啦~(为了避免一些环境配置问题,测试环境测试还是比本地环境测试靠谱的)

可以参考二组小伙伴宋亚敏写的远程debug配置:http://ks.netease.com/blog?id=8113


总结:

完成白盒测试,首先建立在非常了解需求的基础上,其次,对于代码有一定的热情,最后也要熟悉java基本知识(如果开发使用其他语言,还需要了解相应的技术知识)。不过还没上道的小伙伴也不用心急,会看到这里,说明你也是感受到了代码的迷人之处准确尝试啦,平时注意积累技术知识,拿一个合适的项目介入实践,白盒测试并不是一个遥远的话题。

在测试实践过程中,由于项目测试确实投入了大量的时间和精力,让我途中质疑过白盒测试的意义,同一个bug,用功能测试方法能否测出来?是否更节省时间人力呢?认真思考后我觉得白盒测试作为一个高技巧的测试手段,在这个过程中我还是收获更多的:

1.     对于业务,有了更加深刻的认识和理解,在和开发产品沟通的时候能更好的传达双方的需求,也获得大家的认可;

2.     技术实力提升,白盒测试虽然增加了阅读代码的时间投入,但是减少了bug沟通成本,让我们有更多的机会去了解开发的技术,扩充技术知识面,提升测试信心。

当然,这个过程确实投入了大量的时间,有些异常顺着开发思路也容易造成异常漏测。不过我觉得这不全是白盒测试的锅,更多的是我一开始黑盒用例设计不完善以及过多依赖白盒的原因,因此以后项目测试中对于多种测试方式的使用分配还需要再磨炼。


最后,以前QA向开发提bug时对话是这样的:

QA:你这个功能实现好像有个bug……

开发gg:什么bug,你环境是测试环境吗,代码有重新部署吗?

QA:最新的测试环境……

开发gg:数据发的对吗?参数接口有没有调错?

QA:确认了好像没错

开发gg:那你重现一下试试?

QA:好……

现在的对话则是这样的:

QA:你这段代码逻辑跟需求不符啊

开发gg:啊,是的是的,我改一下

QA:你这段代码是不是粗心了哇,true和false弄反了哎

开发gg:哎呀好像是的,我改一下

(彩蛋:)

开发gg:你们这边有没有自测用例,让我先自测一下看有没有问题哦~~

最大收获:无形之中,我已经推动了开发自测啦!!



网易云免费体验馆,0成本体验20+款云产品!

更多网易研发、产品、运营经验分享请访问网易云社区。



相关文章:
【推荐】 盘点大数据在游戏行业中的应用

相关文章:

【自然框架 NatureFW】里的两种“映射”方式

自然框架里面采用了两种映射关系,一个是流行的ORM,另一是非主流的“CCM ” (我自己想的,呵呵)。 先说一下ORM。ORM是O和R的映射关系。也看到很多人写关于ORM的文章,发现好像有个误区。这个误区就是&#x…

ordfilt2函数功能说明

转自:http://www.ilovematlab.cn/thread-91331-1-1.html ordfilt2函数在MATLAB图像处理工具箱中提供了二维统计顺序滤波函数ordfilt2函数。二维统计顺序滤波是中值滤波的推广,对于给定的n个数值{al ,a2,...,an},将它们…

今晚直播写代码|英伟达工程师亲授如何加速YOLO目标检测

NVIDIA TensorRT是一种高性能深度学习推理优化器和运行时加速库,可以为深度学习推理应用程序提供低延时和高吞吐量。通过TensorRT,开发者可以优化神经网络模型,以高精度校对低精度,最后将模型部署到超大规模数据中心、嵌入式平台或…

TensorFlow Lite:TensorFlow在移动设备与嵌入式设备上的轻量级跨平台解决方案 | Google 开发者大会 2018...

Google 开发者大会 (Google Developer Days,简称 GDD) 是展示 Google 最新开发者产品和平台的全球盛会,旨在帮助你快速开发优质应用,发展和留住活跃用户群,充分利用各种工具获得更多收益。2018 Google 开发者大会于 9 月 20 日和 …

热烈庆祝“mysql 集群数据库架构成功”

坚持了两周,终于在linux下把mysql集群数据库给架起来了!下面简单说明下集群数据库原理 第一:集群数据库分MGM,NDBD,SQL 其中MGM是相当于“中央政府”,维持NDBD,SQL等服务器的之间的关系的 NDBD是数据存储的分布化&…

352万帧标注图片,1400个视频,亮风台推最大单目标跟踪数据集

CVPR 2019期间,专注于AR技术,整合软硬件的人工智能公司亮风台公开大规模单目标跟踪高质量数据集LaSOT,包含超过352万帧手工标注的图片和1400个视频,这也是目前为止最大的拥有密集标注的单目标跟踪数据集。论文《LaSOT: A High-qua…

centos7中nfs文件系统的使用

需求:file01:1.1.1.1(内网ip 172.20.103.212),file02:2.2.2.2(内网ip 172.20.103.211) 这两台机器的 /dev/mapper/myvg-mylv /data 这个盘都挂载到 video01 47.254.78.171, video02 47.254.83.81 这两台机器上即将file01和file02的/data目录都挂载到vid…

在图像变换中用最小二乘法求解仿射变换参数

设原图像为f(x,y),畸变后的图像为F(X,Y),要将F(X,Y)恢复为f(x,y),就是要找到(X,Y)坐标与(x,y)坐标的转换关系,这个转换关系称为坐标变换,表示为(x,y)T(X,Y)。 景物在成像过程中产生的扭曲,会使图像的比例失…

showModalDialog关闭子窗口,并刷新父窗口

一、用法&#xff1a;window.showModalDialog(url,args,dialogWidth650px;scrollno;dialogHeight250px;statusno; ); 二、关闭子窗口&#xff0c;并刷新父窗口 想在showModalDialog打开的窗口中提交表单且不打开新窗口 只需在打开的页面的<head>中加入<base target&qu…

cvDrawContours:在图像上绘制外部和内部轮廓

转自&#xff1a;http://www.aiseminar.cn/html/18/t-618.html?action-uchimage 函数cvDrawContours用于在图像上绘制外部和内部轮廓。当thickness > 0 时&#xff0c;绘制轮廓线&#xff1b;否则填充由轮廓包围的部分。 void cvDrawContours( CvArr *img, CvSeq* contour,…

Python最抢手、Go最有前途,7000位程序员揭秘2019软件开发现状

作者 | 屠敏 整理报告来源 | JetBrains转载自 CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;互联网的下半场&#xff0c;科技公司为面对更加严峻的竞争环境&#xff0c;越来越重视开源节流。而对于身处其中且撑起 IT 半边天的技术人&#xff0c;如今如何了&#xff1f;从…

main函数参数

参考&#xff1a;Where Does GCC Look to Find its Header Files? 命令行参数 VS 程序参数 ./a.out 1 2 3 4 5 6 1 2 3 4 5 6是程序参数&#xff0c;是传给a.out这个程序处理的&#xff0c;main里面的argv来接收 ./a.out 1 2 3 4 5 6完整的这一串才是命令行参数 代码演示 如下…

转载 load-on-startup的用法

转载于:http://www.ituring.com.cn/article/50477 Web.xml中的Servlet中的配置&#xff1a; <servlet><servlet-name>createBlog</servlet-name><servlet-class>com.cnblogs.CreateBlog</servlet-class><load-on-startup>0</load-on-s…

商汤62篇论文入选CVPR 2019,一览五大方向最新研究进展

&#xff08;图源自视觉中国&#xff09;作为与ICCV、ECCV并称为计算机视觉领域三大国际会议之一&#xff0c;本届CVPR大会共收到5265篇有效投稿&#xff0c;接收论文1300篇&#xff0c;接收率为25.2%。商汤科技CVPR 2019录取论文在多个领域实现突破作为国内CV领域的明星公司&a…

cvSaveImage保存图像

转自&#xff1a;http://blog.csdn.net/luhuillll/archive/2009/10/28/4739471.aspx opencv保存图象直接使用cvSaveImage,这个函数.但是windows位图的图象格式是RGBt格式,而opencv的图象存储格式是BGR. 这样导致保存的图象失真.在windows下查看图象好象变绿色了.所以在保存图象…

软工实践原型设计——PaperRepositories

软工实践原型设计——PaperRepositories 写在前面 本次作业链接队友&#xff08;031602237吴杰婷&#xff09;博客链接pdf文件地址原型设计地址(加载有点慢...)结对成员:031602237吴杰婷 & 031602636许舒玲原型设计工具:Axure RP 8PSP表格 PSP3.1Personal Software Process…

nagios+sendmail配置

以下为自己安装测试过的&#xff0c;如果有问题&#xff0c;大家一起讨论 系统环境&#xff1a;centos6.2 64位 最小化安装 一 安装nagios 见附件&#xff1a;nagios官方文档&#xff08;nagios_nrpe20120929_web.pdf&#xff09; 二 安装配置sendmail 我用hotmail邮箱接收nagi…

真正的博士是如何参加AAAI, ICML, ICLR等AI顶会的?

&#xff08;图源自视觉中国&#xff09;整理 | 一一出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;源于对学术的热爱&#xff0c;让很多人走上了博士这条求索之路&#xff0c;而热爱会让他们勤奋付出&#xff0c;勤奋让他们成为佼佼者。在刚刚过去的 ICML 大会上&a…

matlab图像滤波

转自&#xff1a;http://hi.baidu.com/wang%5Fpw/blog/item/36354a637ac87b48eaf8f879.html clc; clear all; Iimread(eight.tif); % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % %用中值滤波&#xff0c;多维滤波&#xff0c;使用中心为-4,-8的拉普 % %拉…

​2018你不得不看的国内CRM软件排行榜

2018你不得不看的国内CRM软件排行榜短短几年时间&#xff0c;CRM在中国的发展就已经非常迅猛&#xff0c;现在已经成为了管理软件增长最快的产业。在我们总结的CRM软件排行榜中&#xff0c;腾讯企点的CRM软件赫然摆在前列。而CRM在中国中小企业已经突破千万家&#xff0c;占全国…

二维物体形状识别方法比较

二维物体形状识别方法比较 摘 要 针对模式识别中二维物体的形状识别问题&#xff0c;以二值图像中的物体形状为主要研究对象&#xff0c;依次从特征提取、分类器设计两个主要层面对形状识别方法进行了全面综述&#xff0c;并分析了国内外研究现状&#xff0c;特别是近年来所取…

个人知识管理的10个误区

100个人&#xff0c;有100个对个人知识管理的理解。 当我们热烈的讨论“个人知识管理”的时候&#xff0c;也许我们讨论的根本不是一个东西&#xff1a;你理解的个人知识管理和他理解的个人知识管理根本不同。 拙作《你的知识需要管理》试图去建立一个个人知识管理内容的框架&a…

关于比特币现金升级问题讨论不断升温

过去几周&#xff0c;比特币现金的支持者一直在讨论定于今年11月15日推出的硬叉。大多数人都明白&#xff0c;目前有两个阵营有着完全不同的愿景。看来双方在短期内不会达成妥协。最近&#xff0c;随着时间的推移&#xff0c;双方都在测试某些特性&#xff0c;并发表了关于特定…

阿里AI摘图像识别竞赛WebVision桂冠,万物识别准确率创世界纪录

近日&#xff0c;第三届图像识别竞赛WebVision中&#xff0c;阿里AI击败了全世界150多支参赛队伍&#xff0c;获得冠军。 WebVision由谷歌、美国卡耐基梅隆大学、苏黎世联邦理工大学等机构联合全球视觉技术领域顶级学术会议CVPR发起&#xff0c;是目前图像识别领域最权威的竞赛…

做人工智能必看的45篇论文 | 附下载地址

而AI领域的发展会是IT中最快的。我们所看到的那些黑客技&#xff0c;其后面无不堆积了大量的论文。而且都是最新、最前沿的论文。从某种调度来讲&#xff0c;他们所用的技术跟书籍里的内容确实不是一个时代。要想与时俱进&#xff0c;就必须改变思路——从论文入手。今天给大家…

C# Socket编程(5)使用TCP Socket

TCP 协议(Transmission Control Protocol,传输控制协议)是TCP/IP体系中面向连接(connection oriented)的传输层(transport layer)&#xff0c;TCP协议能够检测和恢复IP层提供的主机到主机的信道中可能发生的报文丢失、重复以及其他错误。由于TCP协议是一种面向连接协议:在使用它…

opencv 检测直线、线段、圆、矩形

转自&#xff1a;http://blog.csdn.net/byxdaz/archive/2009/12/01/4912136.aspx 检测直线&#xff1a;cvHoughLines&#xff0c;cvHoughLines2 检测圆&#xff1a;cvHoughCircles 检测矩形&#xff1a;opencv中没有对应的函数&#xff0c;下面有段代码可以检测矩形&#xff…

kaldi 源码分析(十) - gmm-init-mono.c分析

一直没有搞明白 hmm-gmm 之间是通过什么联系起来的&#xff0c;花了些时间查代码&#xff0c;看到最直观联系的就是 gmm-init-mono 工具。 gmm-init-mono 基础类通过上述看到&#xff0c;主要的配置都是 在 topo 文件中, 这里需要将一些常见的名称理解下来&#xff0c;这里直接…

你最需要了解的H3C交换机端口安全模式

以下内容摘自正在全国热销的《Cisco/H3C交换机高级配置与管理技术手册》一书&#xff08;畅销经典——《Cisco/H3C交换机配置与管理完全手册》&#xff08;第二版&#xff09;的配套姊妹篇&#xff09;。目前京东网和卓越网上都有“满150元减50元&#xff0c;满300元减100元”的…

TCL发布7项AI合作项目,聘任蒋涛为技术顾问

作者 | 夕颜出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09;2019 年 6 月 14 日&#xff0c;TCL 举办了以“技术无疆界&#xff0c;合作赢未来”为主题的技术合作开放大会。会上&#xff0c;TCL 面向全球发布了 13 项技术合作项目&#xff0c;其中包括 7 项人工智能技…