测试人员掌握代码的重要性

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 在测试中心做了一年的测试,从一个对业务不熟悉的小白到能独立掌握一个两个或者更多业务;从一个连ORACLE都没有接触过,连LINUX都不知道是什么东西小白到能在平时测试时稍微写写存储过程,写写shell脚本提高测试效率。

在测试中心做了一年的测试,从一个对业务不熟悉的小白到能独立掌握一个两个或者更多业务;从一个连ORACLE都没有接触过,连LINUX都不知道是什么东西小白到能在平时测试时稍微写写存储过程,写写shell脚本提高测试效率。点点滴滴的成长都使得自己在测试的发展上继续保持兴趣。想想当初点开界面左点点,右点点,程序偶尔出现BUG,自己便会兴奋地记录QC,截图加日志给开发排查,当时想想可能还是蛮有成就感的,毕竟程序在自己的手中得到了提升。

我相信大家都是慢慢成长过来的。但时间久了,就比如说一年这个时间点,我们不难发现,我们和同时进来的开发同事的差别在哪里,我们对程序的代码逻辑会比较陌生。当然,毕竟两个职位的职能是不一样的。但是,这里我还是想说,测试其实也是很有必要掌握代码,理解程序的代码逻辑。我也经常和身边的测试小伙伴强调,平时测修改单的时候,也可以稍微关注下开发人员修改的代码。

上周周末,我和部门的测试经理一起对HT客户的现场问题做了一次复现和测试。这里先说明一下,这个问题其实在之前的版本上已经发布过临时补丁进行修正,但近期又反馈回来说没有修正正确。

OK,那我先描述一下问题。具体如下,系统中存在一张记录持仓的表TUNITSTOCK,由于这张表存在过多的0持仓的数据,影响了客户的使用,在某次修 改中增加了一个功能“日初清除0持仓”,而这个功能在零持仓的数据达到1000条以上时,会重建TUNITSTOCK的一个唯一索引。问题就出现在这里, 之前发布的临时补丁,在重建索引时,只是产生了一个NORMAL类型的索引,而不是UNIQUE类型的索引。而程序又正好莫名其妙的产生了一条原本不会产生的错误数据(原先不会产生,是因为UNIQUE类型的索引),这就导致了日终归档的时候发生了主键冲突。

那作为测试,首先第一点肯定是要重现问题了。这里也就会引申出“测试掌握代码必要性”。

 

第一点:提升测试效率

有时候,客户返回的信息并不是很完善,根据客户提供的信息我们不一定能成功复现出问题。但如果了解代码逻辑,就像这个清除0持仓的功能,我们知道它是在一个存储过程中,我们便会去找它进入“清除0持仓,重建索引”的匹配条件。这时候找到匹配条件,只要将测试数据一一匹配就能重现问题。

并且掌握代码,就比如一些简单的sql。也非常有利于批量测试数据的生成。依旧是这个例子,我们需要有1000以上的0持仓,为了不使TUNITSTOCK产生主键冲突,需要某些字段不一致,但又要和基础数据相互匹配。这时候笛卡尔积的运用,select t.vc_inter_code,a.* from tstockinfo t,tunitstock a where t.c_market_no='1' and t.c_stock_type in ('1','2','3')

and a.c_market_no='1' and a.l=1 and a.l_unit_id=15;便可以很好的解决问题。所以有时候小学问加小技巧是十分管用的。

测试数据准备完成之后,就是要走流程使程序按照理想的预设出错。但对于当时我们测试的软件,流程非常耗时。如果按部就班走流程,就需要好几个小时,如果再加上后续测试修复,那真的可以睡在公司了。

所以,在知道程序一些实现逻辑上,我们将很多不影响这个测试的流程全部关闭。力求最快重现问题。并且我们知道这个是因为某一个存储过程造成的,我们也就直接在PLSQL中 test了这个存储过程,顺利的重现了问题。

 

第二点:定位问题

对于一些简单的问题,我相信在掌握了代码之后,我们自己在通过日志跟代码也是可以很轻易的定位到代码的错误地方。而不是,只是将错误的截图和日志直接扔给开发,让他们去排查。长而久之,会让他们觉得随便从一个地方拉一个人过来都是可以进行软件测试行业的。

这里我依旧以上面的例子为例,像上面描述,当0持仓达到了1000以上时,索引会重建。错误版本是从unique重建成为了normal。当我们把正确的代码替换后,原本的就是unique,重建后还是unique类型的索引,这个时候我们必须要自己确定这个索引是没有重建前的,还是重建后的。

这段代码开发并没有进行日志的输出,那为了确定程序是否修正,我们就必须要自己进行日志打印。这时候掌握一点程序日志输出的代码就很好用了。(之前测试人员就是因为观察到清除0持仓的前后索引类型都是unique,而没有关注到这个unique是否是重建的,而导致再次遗漏)。

第三点:清晰程序变动

其实这个0持仓清除,重建索引的修改是非常简单的。就是把原先create index修改成了create unique index。如果我们测试时候有关注代码的变动,就会发现修改的代码中还是没有添加unique这个关键字段,那我相信这个问题就不会再一次的遗漏出去。

时常关注修改单代码的,也可以很好的避免测试没有测试全面,出现遗漏的情况。也可以预防某些开发不正规递交修改单,修改单描述修改A,但代码其实修改了A和B。

第四点:提升自我能力和测试形象

经常性的关注程序代码逻辑,可以有效地提高自身代码水平和思维方式。为之后性能测试,安全测试提供支撑,例如自己写写测试工具等。

当有了比较好的代码能力,和开发沟通会更加顺畅,理解开发的设计和实现。

当然掌握代码不只以上说的几点好处,总之就是一句话,掌握代码对于测试如虎添翼。

作者:卢凯



作者:恒生开发者社区
链接:http://www.jianshu.com/p/26f7c088bdb8
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
1月前
|
数据采集 机器学习/深度学习 大数据
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
这篇文章详细介绍了C3D架构在行为检测领域的应用,包括训练和测试步骤,使用UCF101数据集进行演示。
44 1
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
|
1月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
2月前
|
Web App开发 JavaScript 前端开发
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
添加浮动按钮点击滚动到网页底部的纯JavaScript演示代码 IE9、11,Maxthon 1.6.7,Firefox30、31,360极速浏览器7.5.3.308下测试正常
|
2月前
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
70 6
基于Python访问Hive的pytest测试代码实现
|
2月前
|
Java C++
代码文件间重复性测试
本文介绍了如何使用代码相似性检测工具simian来找出代码文件中的重复行,并通过示例指令展示了如何将检测结果输出到指定的文本文件中。
|
2月前
|
测试技术 UED
软件测试的艺术:从代码到品质的探索之旅
在数字时代的浪潮中,软件已成为我们生活和工作不可或缺的一部分。然而,高质量的软件背后隐藏着一门鲜为人知的艺术——软件测试。本文将带你走进这门艺术的世界,从基础理论到实践应用,一起探索如何通过软件测试保障产品质量,提升用户体验,并最终实现从代码到品质的华丽转变。
|
2月前
|
敏捷开发 安全 测试技术
软件测试的艺术:从代码到用户体验的全方位解析
本文将深入探讨软件测试的重要性和实施策略,通过分析不同类型的测试方法和工具,展示如何有效地提升软件质量和用户满意度。我们将从单元测试、集成测试到性能测试等多个角度出发,详细解释每种测试方法的实施步骤和最佳实践。此外,文章还将讨论如何通过持续集成和自动化测试来优化测试流程,以及如何建立有效的测试团队来应对快速变化的市场需求。通过实际案例的分析,本文旨在为读者提供一套系统而实用的软件测试策略,帮助读者在软件开发过程中做出更明智的决策。
|
2月前
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
71 6
|
1月前
|
算法 Java 测试技术
数据结构 —— Java自定义代码实现顺序表,包含测试用例以及ArrayList的使用以及相关算法题
文章详细介绍了如何用Java自定义实现一个顺序表类,包括插入、删除、获取数据元素、求数据个数等功能,并对顺序表进行了测试,最后还提及了Java中自带的顺序表实现类ArrayList。
21 0
|
3月前
|
JSON Dubbo 测试技术
单元测试问题之增加JCode5插件生成的测试代码的可信度如何解决
单元测试问题之增加JCode5插件生成的测试代码的可信度如何解决
58 2
单元测试问题之增加JCode5插件生成的测试代码的可信度如何解决