首页 > 其他分享 >测试中发现的一个有趣的小问题!

测试中发现的一个有趣的小问题!

时间:2023-08-03 15:36:39浏览次数:27  
标签:1410065407 发现 提交 10 int 32 报错 测试 有趣

测试中发现的一个小问题,感觉挺有趣记录一下!

问题描述:

在业务测试过程中,我们在mysql使用的一个字段值类型为int类型,然后再测试极值的情况下,我输入10个9发现可以正常提交数据并保存成功,然而当再次进入配置的时候发现保存的值并非10个9而是变为了1410065407。然后自己通过抓包发现在输入10个9保存提交的时候,接口传参是正常的而且接口也没有返回错误的信息,但是当进入数据库查看发现数据落库的时候并非10个9而是1410065407。

然后自己又输入了一个超出int类型范围的一个值:2147483648,发现提交的时候系统直接报错无法提交。那么为啥10个9可以提交成功而比它小的2147483648确提交失败呢?

有兴趣的大家可以先自己考虑一下是什么原因导致的,然后看是否和我确认的一样。

问题原因:
首先我们需要了解在MySQL中,INT是一种整数数据类型,它占用4个字节(32位)的存储空间。这意味着,INT数据类型可以表示32位的整数,其范围为-2,147,483,648到2,147,483,647。
当我们在输入2147483648 这个会报错 是因为4个字节内超过int32,不符合int32规范,所有点击保存提交数据的时候就直接报错了。
当我们输入10个9系统未报错,是因为10个9的值的后四个字节数同1410065407相同属于int合法范围内,所以可以配置成功(这种属于精度丢失)。
10个9换成二进制如下:
        1001010100000010111110001111111111,int占用4个字节,每个字节是8位也就是32位,我们取32位数即:10 01010100 00001011 11100011 11111111

 1410065407换成二进制如下:

        1010100000010111110001111111111,取32位即:1010100 00001011 11100011 11111111,最后一个缺以为补0也就是:01010100 00001011 11100011 11111111,同上面的取值相同

所以当我输入10个9未保存的原因是该值超过了int类型位数,导致精度丢失,但是该值的后32未确和int类型中 1410065407值一致且没有超出int类型范围,所以程序认为该值是合法的。
View Code

 

标签:1410065407,发现,提交,10,int,32,报错,测试,有趣
From: https://www.cnblogs.com/beginner-boy/p/17603455.html

相关文章

  • 黑马测试学习记录(1)
    *主流技能:功能测试、自动化测试、接口测试(用postman,对模块/系统之间的数据请求地址来测试)、性能测试(模拟多人、找服务器的缺陷)*测试分类:按阶段(单元、集成、系统、验收);代码可见度(黑盒-功能、白盒-代码/单元、灰盒-接口/集成);自动化测试更偏功能测试;性能测试更偏接口*测试策略:......
  • 黑马测试学习记录(2)
    *Python的unittest框架TestCaseimportunittestclassTestDemo(unittest.TestCase):deftest_method1(self):print('测试方法1')deftest_method2(self):print('测试方法2')TestSuiteTestRunnerimportunittest#实例......
  • radius 测试
    目前使用radclient来测试模拟计费报文模拟计费请求start报文radclient127.0.0.1autotesting123-facct_start.txtacct_start.txtUser-Name='[email protected]'Calling-Station-Id="00-1C-B3-AA-AA-AA"Packet-Type=4Packet-Dst-Port=1813NAS-Port=1782619......
  • kali渗透测试之三操作系统识别-nmap
    识别操作系统:    在确定目标主机在线后,应当识别他们使用的操作系统,这个阶段的工作称为识别操作系统(也称为操作系统指纹识别),识别操作系统的的方式分为两种:主动式和被动式。主动式识别工具向目标机器发送数据包,并根据目标的响应确定其使用的操作系统,这种方式的优点在于探测......
  • 【测试】SAS 编程技巧 - PROC SQL(二)
    上一节中,我们介绍了如何使用SQL创建、删除数据集、修改数据集结构,以及如何新增、删除和更新数据集的观测,所涉及到的内容都是对数据集的增、删、改的操作,从本节开始,我们将对SQL中最常见,也最灵活的查询操作进行详细的介绍。查询语句SQL的查询操作是通过SELECT语句实现的。S......
  • 【测试】SAS 编程技巧 - PROC SQL(一)
    SQL全称StrucuredQueryLanguage,即结构化查询语言,广泛应用于关系型数据库中。SASBase使用PROCSQL提供了对SQL的实现。PROCSQL过程可以帮助我们完成以下任务:创建数据集、视图和索引删除数据集、视图和索引修改数据集的结构更新数据集的观测从数据集或视图中获取......
  • web渗透测试(14):文件上传漏洞
    在本节中,我们将介绍如何使用文件上载功能来获取代码。 在Web应用程序(尤其是使用文件系统来确定应运行哪些代码的应用程序)中,如果您设法上传具有正确文件名的文件(通常取决于扩展名),则可以在服务器上执行代码。在本节中,我们将看到这些类型的攻击的基础知识。 首先,由于我们正在开......
  • web渗透测试(15):XML攻击
    在本节中,将详细介绍与XML相关的攻击。这些类型的攻击在Web服务和使用XPath从XML文件中检索配置设置的应用程序中很常见(例如,根据提供的组织名称了解他们需要使用哪些后端来验证用户)。 Example1<?phprequire_once("../header.php");?>Hello<?php$xml=simplexml_load_......
  • 《软件测试的艺术》原书第三版 - 第二章
    第二章软件测试的心理学和经济学即使一个看起来非常简单的程序,其可能的输入与输出组合可达到数百种甚至数千种,对所有的可能情况都设计测试用例是不切合实际的。软件测试的心理学“软件测试就是证明软件不存在错误的过程。”“软件测试的目的在于证明软件能够正确完成其预......
  • web渗透测试(13):LDAP 攻击
    在本节中,我们将介绍LDAP攻击。LDAP通常用作身份验证的后端,尤其是在单点登录(SSO)解决方案中。LDAP有自己的语法,我们将在以下示例中更详细地看到。 如有不懂什么是LDAP请查看 Example1在第一个示例中,使用您的用户名和密码连接到LDAP服务器。在这种情况下,LDAP服务器不会对您进......