接口测试平台代码实现40:修改bug

简介: 我们的这个系列已经进行了长达12章成品预览和40章纯开发章节,但是基本还没做过完全一点的测试修复bug章节,每次新开发的功能也仅仅停留在单元/函数层面上的自测。

 经过了最近几十名小伙伴的反馈后,凑够了一些bug,对于一个复杂一点的工具化平台来说,尤其是我们一个测试单枪匹马负责研发且缺少测试环节的情况下,有几个bug太正常了,大家不要灰心。

   其他的教程中可能从头到尾都是最正确的代码,一个bug都没有,我们跟着学完之后,难免会觉得这些太简单了,太顺利了,然后等到自己实际工作中敲起来,出现了bug后接受不了,开始悲观自暴自弃甚至放弃,自我否定。实际上,这就是为什么我不直接把已经完成的平台正确可靠的代码一章一章的复制粘贴出来,而是亲自实际带着大家从0开始 搭建一套新的平台的原因,这样可以让大家感受一下,实际经历一下最真实的开发过程:

   有bug就修复,设计出错后面补,调试用的代码数据忘记删除,ide命令行报错,浏览器的console报错 等等等等。这些经历实打实的是一段开发经历,而非跟着书上的教程敲一遍那样顺畅。这也是你在任何培训/书本/公众号。博客/视频 上都无法得到的真实经历和体验。经受过这个教程后你才算是一个铁骨铮铮,摸爬滚打,身经百战出来的汉子,而不是一个温室培养出来纸上谈兵的书生。

   其实在开发过程中,我故意留下了一些小bug或者比较有话题的bug,当然也有确实疏忽掉的,幸运的是真的好多粉丝都在实际写着代码跟着,反馈了很多。

   那么本节课,就让我们来对这些bug依次进行修复吧。

   bug-1:

描述:删除项目后,这个项目内的接口并没有被删除,依然停留在数据库,并且通过后台删除会报错,变成了实打实的脏数据。

解决:这就是所谓的联级删除了。

首先找到我们的删除项目的函数:delete_project

微信图片_20220619115928.png


发现我们之前写这个函数的时候,还没有去开发接口概念,所以没有写接口删除的代码,那么现在就该加上了。(之后项目内的用例模块也需要到时候进行删除),增加代码后如下图:

微信图片_20220619115945.png

这样就可以实现删除项目id为待删除项目的id的 所有接口了


bug-2:

描述:接口保存后,再打开发现数据没有显示成功。


解决:这个问题是最近的一个bug,我去后台看了一下,其实数据都保存成功了,那么问题就出在显示上了。

这里要给大家解释一下,在我们前端的ts_show函数中,目前只有 清空初始化调试弹层+显示弹层和接口id/接口name。还并没有开始写显示接口真实内容的代码,所以下一节才是要做这个显示,因为当中涉及到编码格式的显示/子页面的切换/下拉框的选择等等,所以还是比较复杂的。

目前的ts_show()函数:

微信图片_20220619115951.png

bug-3:

描述:好几个页面的console中都出现了这个404报错,也不知道什么意思也不知道怎么修复

微信图片_20220619115957.png

解决: 大家可以看到这个红色报错,404代表这个资源没有找到,这个资源的后缀是.ico,也就是一个图标,之所以一直懒得管这个bug,就是因为仅仅是个小图标而已,但是天天这么红实在碍眼,所以就修复一下吧:

首先要明白这个.ico到底是什么,为什么我明明没引用,但是每个页面都会报错找不到。其实他就是我们的icon图标,也就是这个网页的小图标

微信图片_20220619120004.png

而html默认都会去寻找这个小标志,我们没有设置过,自然会报错了,这里我们可以用俩种方式解决,一是不让它找了,二是给它弄个漂亮的小icon。无论哪种,我们都只需要在welcome.html中改动即可在所有页面模块内生效。

打开welcome.html:

在head中加入这样一句代码:

<link rel="shortcut icon" href="#">

不过很多小伙伴会觉得灰心,我们真的想弄一个自己的图标呢?

所以我们其实可以制作一个.ico的图片放在/static目录下,然后这句代码的href属性就要为这个图片的相对路径了:

首先我们要知道这个图片应该非常非常非常小才行,太大的会很卡。最好我们找个在线制作的网站做一个:http://www.bitbug.net/

比如上面这个,百度搜索的第一个。

微信图片_20220619120012.png

点击生成后就会自动下载这个.ico图标了,切记一点,图片一定要小!越小越好,低于500k,并且图案要简洁大方,不然缩小之后看着花花绿绿的是什么都看不出来。你看看百度等大网站的icon就简简单单一个字...微信图片_20220619120018.png

然后把这个文件粘贴到static目录下:微信图片_20220619120026.png

在welcome.html中的这句代码改成如下:

微信图片_20220619120034.png

让我们再次刷新页面看看效果吧:


微信图片_20220619120042.png

图片已经缩小展示了,而且console也不报错了。大家可以用自己公司的ico来作为内部平台也可以,跟设计部门要就行。


bug-4:

描述:在接口库中,左侧菜单展开后,隐藏按钮不见了?

微信图片_20220619120048.png

解决:其实并不是不见了,只是因为隐藏按钮被这个接口库顶部菜单给遮挡了。虽然我们可以通过调整层级来让这个按钮显示出来,但是我总觉得这个按钮设计的并不好,所以我们这次干脆给这个显示隐藏按钮 给重新设计,当然逻辑不变,只是位置和文案都变了。

打开welcome.html:找到旧的这个按钮:

微信图片_20220619120054.png


我们修改成如下:

微信图片_20220619121545.png

style进行了大变动,且文案变成了小于号,并且用span 大号包裹住:

然后修改下面的它关联的函数:display_menu()

微信图片_20220619120142.png

注意细微差别,style.margileft改成了style.left。避免大家出错,请直接复制以下代码:

<button id="menu_btn" onclick="display_menu()" style="
position: absolute;left: 188px;top: 48%;z-index: 999;height: 35px;
background-color: #353c48;color: white;border: 0;font-size: x-large"><</button>
<script>
    function display_menu() {
        menu = document.getElementById('navbar');
        btn = document.getElementById('menu_btn');
        if( btn.innerText == '<' ){
            menu.style.display = 'none';
            btn.style.left = '0px';
            btn.innerText = '>';
        }else{
            menu.style.display = 'block';
            btn.style.left = '188px';
            btn.innerText = '<';
        }
    }
</script>

好,刷新页面看看效果:


微信图片_20220619120151.png微信图片_20220619120203.png

但是经过这次改动后,右上角的 回到主页和退出按钮 的位置就乱了:

微信图片_20220619120211.png微信图片_20220619120218.png

这种情况我们正好也可以重新设计这俩个按钮:同样他们也只在welcome.html中显示,所以我们如下设计。找到这俩个按钮:微信图片_20220619120227.png

然后,记住他们的超链接 一个是/home/ 一个是/logout/ ,好,删掉~

记住这些功劳按钮,他们都是为了当时我们学习更多的css才制作的如此难看的,如今我们要设计更好看 符合审美常识的按钮来替换掉它们了。

新增如下按钮组,简洁大方。微信图片_20220619120235.png

<div style="font-size: large;position: absolute;top: 0px;right: 0px;box-shadow: 4px 4px 8px grey;
            padding-left: 5px;padding-right: 5px">
    <a href="/home/" style="color: black;text-decoration: none"> 主页 </a>
    <a href="/logout/"  style="color: black;text-decoration: none"> 退出 </a>
</div>

看看效果:

微信图片_20220619120246.png

然后我们发现 ,每个子页面貌似都向上移动了一大块距离,使得我们原本的布局不好看了起来:

微信图片_20220619120257.png微信图片_20220619120319.png

太顶了,那是因为这个主页/退出按钮组 以前在文档流中可以当作一行来占位,现在脱离文档流了,所以所有子页面都顺势上滑。我们可以在原位置用过br标签换行符来撑开:微信图片_20220619120327.png


然后各个页面效果就恢复了之前的:

微信图片_20220619120412.png

bug-5:

描述:接口名称目前貌似没法修改,用户不能登陆后台去修改接口名称吧?微信图片_20220619120420.png

解决:这个是我们疏忽的一点,之前的确忘记了接口名称了。所以用户新增的接口名称都是None,而且没法改。这属于设计缺失,那么我们本节最后就搞定这个问题吧:

打开P_apis.html,找到这个调试弹层中的这个small标签,就是放接口名的:微信图片_20220619120427.png

我们的解决方案是,把这个small标签变成一个输入框,用来显示接口名,并且内容会和接口的其他数据一样,传递给后端保存函数用来保存。


首先给它改成input如下所示,并且h3改成h4,不然太大了,注意颜色为绿色,不然和背景白色靠色了。

微信图片_20220619120436.png

效果如下:

微信图片_20220619120456.png

然后我们去修改ts_show()函数,把它的innertext改成value:

微信图片_20220619120509.png

刷新页面,发现可以成功显示接口名称了。

微信图片_20220619120523.png

然后是清空函数clear_ts_api()中,增加这个id和name的清空,这是我们上一节课漏掉的部分:微信图片_20220619120536.png然后就是保存函数ts_save()中加入这个api_name吧:

微信图片_20220619120542.png

最后我们要把这个函数的返回处理部分改动一下,从关闭调试弹层 改成 直接刷新页面。这样可以保证我们新改动的数据能直接生效显示:

微信图片_20220619120548.png

好,我们这里前端html的基本弄完了,现在去改后台保存函数Api_save():微信图片_20220619120555.png

搞完之后,我们重启服务,刷新页面。测试:

现在叫这个:微信图片_20220619120600.png

改了之后:微信图片_20220619120607.png

相关文章
|
1月前
|
数据采集 机器学习/深度学习 大数据
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
这篇文章详细介绍了C3D架构在行为检测领域的应用,包括训练和测试步骤,使用UCF101数据集进行演示。
40 1
行为检测代码(一):超详细介绍C3D架构训练+测试步骤
|
1月前
|
机器学习/深度学习 人工智能 监控
提升软件质量的关键路径:高效测试策略与实践在软件开发的宇宙中,每一行代码都如同星辰般璀璨,而将这些星辰编织成星系的过程,则依赖于严谨而高效的测试策略。本文将引领读者探索软件测试的奥秘,揭示如何通过精心设计的测试方案,不仅提升软件的性能与稳定性,还能加速产品上市的步伐,最终实现质量与效率的双重飞跃。
在软件工程的浩瀚星海中,测试不仅是发现缺陷的放大镜,更是保障软件质量的坚固防线。本文旨在探讨一种高效且创新的软件测试策略框架,它融合了传统方法的精髓与现代技术的突破,旨在为软件开发团队提供一套系统化、可执行性强的测试指引。我们将从测试规划的起点出发,沿着测试设计、执行、反馈再到持续优化的轨迹,逐步展开论述。每一步都强调实用性与前瞻性相结合,确保测试活动能够紧跟软件开发的步伐,及时适应变化,有效应对各种挑战。
|
7天前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
36 3
|
11天前
|
监控 安全 测试技术
构建高效的精准测试平台:设计与实现指南
在软件开发过程中,精准测试是确保产品质量和性能的关键环节。一个精准的测试平台能够自动化测试流程,提高测试效率,缩短测试周期,并提供准确的测试结果。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
47 1
|
29天前
|
人工智能 监控 测试技术
云应用开发平台测试
云应用开发平台测试
46 2
|
11天前
|
监控 安全 测试技术
构建高效精准测试平台:设计与实现全攻略
在软件开发过程中,精准测试是确保产品质量的关键环节。一个高效、精准的测试平台能够自动化测试流程,提高测试覆盖率,缩短测试周期。本文将分享如何设计和实现一个精准测试平台,从需求分析到技术选型,再到具体的实现步骤。
33 0
|
1月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
59 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
1月前
|
JavaScript 前端开发 API
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
vue尚品汇商城项目-day02【9.Home组件拆分+10.postman测试接口】
40 0
|
1月前
|
算法 Java 测试技术
数据结构 —— Java自定义代码实现顺序表,包含测试用例以及ArrayList的使用以及相关算法题
文章详细介绍了如何用Java自定义实现一个顺序表类,包括插入、删除、获取数据元素、求数据个数等功能,并对顺序表进行了测试,最后还提及了Java中自带的顺序表实现类ArrayList。
19 0
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
239 7
Jmeter实现WebSocket协议的接口测试方法