[发布] 一个测试 WebService 和数据库连接的工具 - DBTest v1.0 ...

打印 上一主题 下一主题

主题 641|帖子 641|积分 1923

今天我将发布一个可以用来测试 WebService (后端接口),简单测试数据库连接(一些数据库需要额外安装驱动)的测试工具。它的名字最初叫做 DBTest,因为最初我只是像先写一个测试数据库连接是否正常的小程序,但是慢慢的随着我的想法的逐渐变化,这个程序最终成了一个“三合一”的程序,也就是说,它可以展现出三种外观(视图),就像是把三个分别独立的程序合为一个程序。这个灵感是来自于 《007 大战海底城》里的邦德使用的水陆两栖座驾车,当这辆车从陆地开到水里的时候,它的仪表盘和外观都进行了相应的变化,变成了类似一个潜水艇的模样。所以这个程序也是类似的,当在 【视图】菜单中切换到不同的视图时,整个程序的工具栏,状态栏,客户区都会发生相应的变更,每个视图在程序内部都独自维持着自己的工具栏,状态栏的信息。这个程序最初是在 2016 年开发,后来的这些年中,一直都是我用来测试 webservice 接口的一个重要工具,也因此随着我一边使用,我也一边的发现问题,并改进问题,并最终在 2022 年我又对它进行了一段时间的集中加强,使得它在某些我会经常常用的功能的地方,会更加好用。到今天为止,他虽然还不是非常完善,我还有很多想法想要继续把它加强。但我还是想先把它的现在的版本和成果发布出来,希望也能让其他人和我一样愿意使用它。
 
这个程序有三个视图:分别是(1)数据库连接测试(建议只测试读取数据库,不要做其他危险操作),(2)WebService 接口测试,(3)一个 socket 客户端。其中第三个因为是给专门的后台服务而开发,所以它不是通用的,所以(3)在日常中是用不到的,不过等我有精力的时候,我考虑把(3)改进成一个 BBS 客户端(虽然 BBS 已经没落了) ,甚至是 SSH 客户端,当然这只能作为业余的兴趣去做了。我自己使用最多的就是第二项,即,测试 WebService。所以我将主要简单介绍下测试 WebService 的用法。
 
主程序名字是 DBTest.exe ,其他可执行程序是挂在主程序的工具窗口下面的辅助程序。打开主程序以后,通过【视图】菜单切换到不同的视图。
下图是测试数据库连接的视图:

点击工具栏上的【执行】按钮执行查询数据库或者发起请求的任务。操作是非常直观的,下方的查询结果会根据结果的字段内容长度,自动调整每列的宽度。
 
下图,是测试 webservice 的视图:

 
在这个里面,我将主要介绍它的一些重要功能,或者说不同于其他的常用测试工具的一些特点。
(1)支持添加多个文件到文件列表中,这些文件可以用宏的形式插入到 Data (request payload)中,例如当需要把图片的 base64 编码嵌入到 Data 中作为 Data 的一部分的时候,或者需要上传多个文件的时候,这个功能将非常的好用。
方法是首先点击【添加文件】按钮,选择文件,文件将出现在文件列表中,在文件列表中右键点击某个文件,就会弹出上下文菜单,然后可以选择插入文件的例如 base64 编码到 data 中,那么它在 data 文本框里将以宏的形式出现。在发起请求的时候,程序会自动把这些宏替换成实际的数据。因此,你完全可以把普通的字符串和这些宏组合在一起。
(2)支持设置代理服务器,用户可以选择 1) 不使用代理,2) 使用系统设置的代理服务器,或者 3) 使用用户自己设置的代理服务器。在工具栏上点击【代理】按钮即可弹出设置代理服务器的对话框,下面的对话框是一个高度灵活的对话框,但选择手工配置代理时,右键单击代理服务器列表,可以进行新增,删除,编辑代理服务器的操作。用户也可以直接双击 listview 的某一个单元格,进行就地编辑。如果用户有多个代理服务器,在这里进行切换是非常简洁的。
 

 
(3)由于 webservice 的响应有很多是 json 格式,且服务器返回的 json 通常是紧凑型,不利于人眼观察,所以程序针对 json 类型的响应数据,可以进行 json 自动格式化和代码着色,点击工具栏上的 【json 美化】即可完成。特别的是,我增加了对 JSON 中比较短的数组不换行的选项,这样可以使得格式化后的 JSON 数据行数更少,更美观。目前暂时还没有增加配色方案设置的选项,配色目前是写死的。这是一个非常重要的功能增强,是因为我经常测试的 webservice 接口大部分返回的是 JSON 数据,而为了分析数据方便,以前我经常要把他们拷贝到用于格式化 JSON 的网站上去格式化,因此很不方便。所以我特别为响应数据是 JSON 格式的增加了美化功能。但因为精力有限,对其他格式例如 xml 等格式的数据,暂时还没有代码格式化和代码着色的功能。同时如果 JSON 数据中有 "\uXXXX" 形式的内容,也会被就地翻译成对应的 unicode 字符。
用户可以设定 json 美化的选项,如下图所示:
 

 
 
(4)用户可以在响应数据中进行“查找”操作,点击工具栏的【放大镜】按钮即可弹出查找对话框,这个功能用于对响应的内容比较长的数据,通过这个功能可以快速定位到用户想要查看的内容。这个功能和我们在 IDE,文本编辑器等程序中的查找功能是几乎一样的,这里就不展示了。
 
此外,关于这个程序的其他特点是:
(1)全部采用 WIN32 API 开发,没有使用任何其他的比较重的框架,例如它里面没有使用任何 MFC 或其他框架,完全是纯 WIN32  API 和一些我自己写的 C++ 类。从而使得它非常的轻量级,运行效率和内存占用方面也都是非常的高效率。因此,在界面方面,我的设计理念是微软所提倡的 -- 简单而强大,因此它的特点是界面简洁,优雅,审美风格保持一致,仅仅在“捐赠”对话框界面上使用了 GDI+ ,其他地方都是使用的传统 GDI。所以整体来说它的界面是质朴,简约,朴素而又美观的。
 
(2)所有配置文件被我统一到 UTF-8 with BOM 编码,这样可以使配置文件对任何程序,任何操作系统环境来说都没有编码方面的歧义。同时所有的配置文件我都采用了文本格式的配置文件,而尽量不采用二进制格式的配置文件(虽然二进制的配置文件的读取和保存,对编码实现来说其实难度要低很多),这是为了方便用户可以在其他文本编辑器中对这些配置文件进行手工编辑。也因此会引入比如处理字符编码,识别和跳过文本文件的 BOM,根据配置文件的格式,可能需要对很多字符进行转义的编码和解码,因此在读取和保存配置文件的时候,需要在编码方面花费更多精力。
 
(3)Webservice 测试界面的状态栏因为有比较多的 parts,所以这些 parts 的可见性是可以自定义的,只要在状态栏上右键点击,即可弹出上下文菜单,用户可以自由的选择显示或者隐藏那些 statusbar part。大部分 part 的宽度是 fixed,但有的 part 的内容因为变化比较大,所以可以根据内容自适应宽度,但是考虑到效率问题,我只对“代理服务器设置”这个 part 开启了宽度自适应,其他的 status part 的宽度目前基本是写死在程序中,用户目前是不能调节他们的宽度的。当用户把鼠标悬浮在任务栏的 statusbar part 上时,有的会显示 tooltip,解释这个 statusbar part 的含义。
 
(4)对于更技术性的细节信息,用户可以使用【命令】-【技术细节选项 ...】打开设置对话框,在这里用户可以设置例如 User-Agent,相关请求的一些选项。这些选项是针对技术领域的专家而提供的,不建议普通用户修改它们,对普通用户,使用默认值即可。
 

 
(5)因为界面上的元素较多,所以为了方便用户把界面上的设置能否重复利用,程序提供了读取和保存“界面设置”信息的功能,点击工具栏上的【打开】和【保存】按钮,用户能够把当前界面上的设置内容保存到一个文本文件,也可以打开已经保存好的文本文件,从而快速的把之前的设置内容加载到界面上。在程序所在文件夹的 UIFiles 文件夹下面,我已经提供了一些界面设置内容的模板,例如测试 SqlServer 数据库等。
 
(6)在程序的主菜单【工具】下面挂载了一些工具,例如“猜测文件编码”,“计算文件 MD5” 等,这些程序也是我自己写的小程序。这个菜单的内容可以有用户自由配置,配置文件是 :程序目录\conf\menu.ini。用户也可以理解了这个配置文件的格式后,自己编辑这个配置文件,挂载更多的自定义工具到这个菜单下面。
 
最后是我先给出这个程序的 x86 的可执行文件的链接,因为 x86 的版本可以适用于目前几乎所有的 windows 操作系统。而 x64 的版本我考虑在未来编译并提供。此外还有一些常用数据库的驱动,例如 mysql 驱动,我也考虑以后会在本文中给出。
 
【下载链接】
(1)适用于操作系统 windows x86:DBTest86_v1.0.zip
 
【其他改进想法】
对这个程序我还有很多其他的改进想法,限于时间和精力的原因,不可能很快的完成。包括提供多语言版,增加 AES 加密解密功能,增加 16 进制 viewer 控件,可以展示二进制数据,对请求的 payload 和响应的 payload 加上数据 filter chain 的功能,对数据加上一个 filter chain,以及对 request payload 进行更灵活的发出请求前处理,以及更好的展示出各种各样的响应数据,例如如果响应的内容是图片的 base64 编码,如何将其展示成图片等。
 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

钜形不锈钢水箱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表