如何在客户端和服务器上找到边界

测试人员通常如何在野外寻找边界?如果TK中存在限制,则它将对其进行测试。如果不是的话?下部边框使所有内容都清晰可见-它是一个空白字段。如何找到头一个?插入大行并查看保存了多少个字符。仅此而已...



但是,如果我们有一个客户端服务器应用程序,则开发人员可以在每个链接上设置边界!







测试人员必须全部检查。为什么?因为当我们在不同的地方多次重复相同的值时,很可能会出错。同时,客户端上的边框很容易删除。如果用户绕过客户端边界怎么办?他会大行打破我们的网站吗?



在本文中,我将向您展示如何在Web表单中查找字段的边框。以用户编辑表单为例免费的用户系统



内容





1.客户的边界



最长长度



客户端上的行长度限制在该字段的maxlength参数中指定。



要找到它,您需要:



  1. 打开显影器面板,按f12键
  2. 按下最左边的按钮,然后将光标移到页面上的某个元素上。


瞧!对于字段“ name1”,我们限制为10个字符。







另请参阅:

测试人员对开发人员面板需要了解的内容



检查限制-尝试输入10个以上的字符。但是恰好引入了10个,不再给出更多。您在键盘上键入,系统完全不响应:







这是边框!边界在客户上,我们找到了,万岁。



但这并不意味着您需要为此冷静下来。客户端上的边界可以很容易地删除,因此检查服务器也很重要。作为测试人员,我们应该检查服务器上是否有保护。



因此,我们删除边框。为此,就在DOM模型中(这是我们用检查器搜索的页面结构),我们用参数更正了该行。是的,它正在改变。双击maxlength参数并更改值。瞧!现在可以输入比以前更多的字符!







请注意-无需刷新页面即可立即输入字符。此外,如果刷新页面,更改将丢失。毕竟,刷新页面时,会从服务器请求HTML代码,并且在那里没有所做的更改。因此,您可以随心所欲地玩耍,不要害怕破坏某些东西=)



原则上,要检查服务器上的边界,您可以先将值从10更改为1000。但是,如果要精确查找技术边界,则最好选择较大的值。或完全删除参数。选择并删除!







在检查器中找到项目时,可以看到maxlength以外的数字。例如,“ data-max”“ data-jsmax”或其他。可以将它们视为界限吗?仅当您可以阅读代码并在其中找到其含义时。



开发人员可以按自己喜欢的方式编写HTML。他可以使用任何名称为标签指定任何属性。这根本不是边界。



它可以是“旧版”元素,也就是根本不进行处理或使用。只是忘记删除了。或者它可以用于CSS-“如果有这样一个值,那么我们就用白色书写,如果那样,那么就用黑色书写。”



这里是最大长度是标准属性。并且如果设置了它,那么它将限制用户-用户在输入字段中输入的字符数不能超过maxlength中指定的字符数这就是边界。



还有其他所有内容-有必要检查它是否以某种方式限制了我们。怎么检查?打开控制台!







JS控制台中的错误



测试网络时,请确保启用控制台:

F12→控制台




看着她在我的眼角。否则,您可以跳过该错误!



碰巧系统没有以任何方式显示问题-接口本身没有任何变化。在字段中输入数据?红色均未突出显示,但控制台中出现错误。我们在按按钮吗?报告正在加载,一切似乎都很好,但是控制台中有错误。



如果控制台中出现错误,则不正常。这必须加以解决。该错误可能会延迟产生效果,或者您可能只是没有注意到它的表现。例如,加载报表时,一个单元格的计数不正确,因为它无法加载我写到控制台的数据。同时,该报告已加载,并且似乎里面有数据,看起来不错。但是有一个错误。



因此,打开控制台并开始填写用户字段。例如,我们将数据驱动到“仓鼠”字段中。我们删除了客户端的边框(最大长度)并打印。然后我们注意到控制台中出现了一个错误!







事实证明,开发人员已经在现场提供了额外的保护。除了maxlength之外,我还在代码中写了一个限制。可能应该在界面中显示此消息,以便用户可以看到有问题,但是开发人员搞砸了并将其输出到控制台。



对于用户而言,开发人员没有混淆任何事情,他不得不根据TK =)在控制台中显示这样的消息)因为我们的任务只是显示界面中一切正常但控制台中有错误的情况。



但是边界在哪里?根据错误消息“最大-10”来判断。因此边框是10个字符。是?不是无花果!边界是当我们在一个系统行为之前(没有错误)以及在另一个系统行为之后。







请记住,错误消息也是代码。这也需要测试。开发人员可能会犯错误并错误地编写消息。因此,让我们检查一下系统对输入的响应将在哪里更改。



我们开始缓慢地输入字符,观察控制台:



  • 10-没有错误
  • 11-没有错误
  • 12是个错误!


是的,这意味着根据JS的边框不是10个字符,而是11个字符!直到11点,一切都很好,然后错误开始涌入。错误消息竟然是在说谎。因此,“信任但验证” =)



这也是客户端的边界。因此,仓鼠字段在客户端上有两个边界:



  1. 最大长度= 10个字符
  2. js = 11个字符


但是在“名称1”字段中,客户端上有一个边框:maxlength = 10个字符。输入字符时,控制台中没有错误。







行为改变



我想再次强调,边界不仅是在控制台中注入了错误。这也可能是用户可见的系统行为的变化。



例如,分析人员认为名称至少应包含3个字母。因此,当用户将光标放在带有名称的字段上时,其周围会出现一个红色框,并且标题“名称不得少于3个字母”出现在底部。我输入了1-2个字母-没有任何变化。输入3-带有签名的框架消失。或框架已从红色变为绿色。





用户中没有这样的边界,所以我只是从互联网上拍摄了一张照片=)



这是根据TOR确定的下边界。并取得客户。同样,您可以排列上边框-输入的字符数是否超过10个?字段周围会出现一个红色边框。所以这也是一个边界。







客户端上的总边框



客户端上的边框是字符输入字段中“ maxlength”属性的值您输入的值不能超过此值,系统根本不允许您这样做。





此限制可以通过开发人员面板轻松删除- 如何从所有表单字段中删除maxlength



这可能不是唯一的边界。开发人员还可以将边框写入代码中。为了找到它,我们遵循系统。如果她改变了自己的行为,我们发现了边界:



  • 您输入符号,该字段具有红色边框和签名“太长”-边框!除了“最大长度”外,开发人员还添加了一项检查
  • 您输入字符,错误出现在控制台中-也是边框!






2.服务器边界



服务器边界是我们可以在系统中存储多少个字符。从理论上讲,它应该与客户端上的边界重合=)但是任何事情都可能发生。当我们需要在不同位置编写一个值时,总是有机会犯错。



由于客户端的边界很容易绕开,因此我们绝对需要在测试期间执行此操作。并查看服务器上是否有边界。如果是这样,哪个。



让我们从“ name1”字段中删除“用户”中的maxlength = 10限制,在其中输入一个长字符串并尝试保存。保存时,系统会提示错误:







这是服务器上的边框。客户端将请求发送到服务器,服务器对该请求进行处理并返回反馈。



仍然需要了解边界在哪里。当然,错误消息可以帮助我们:“实际:37,最大:9”... 从理论上讲,服务器最多可包含9个字符。但是我们已经知道应该对此进行检查!



我们检查:



  • 输入9个字符,保存-保存!
  • 输入10个字符-已保存。
  • 输入11个字符-保存时出错。


这意味着服务器上的实际边框为10个字符。匹配客户端上的边框,这很好。



现在,让我们检查仓鼠字段。







啊哈,这里的边界不一样。在消息19中,但我们记得它在说谎。我们检查-边框是20个字符。在客户端,最大长度为10!因此界限是不同的。



通常,这是发布错误的原因,因为边界必须匹配。没错,它可以作为“不会修复”来关闭,好了,多保存了一点,还可以。如果开发者以另一种方式犯错,那就更糟了:



  • 服务器-10个字符
  • 客户端-20个字符


结果,您可以在客户端上输入20个字符,但是保存时会出现错误。不好!



在“适当”范围内检查上边界之后,值得寻找技术边界。我们取消了对客户端的限制,引入了数百万个字符。这很容易做到。我们从文章“ 如何生成大字符串,工具 ”中获取任何工具,进行替换,保存。



如果系统给出与以前完全相同的错误,则大约为。这意味着没有技术边界。好吧,那很好。最主要的是我们试图搜索=)



为什么我们需要这样做?因为系统不仅可以保存数据,还可以进行某种预处理。根据条件或其他检查。然后系统将掌握一条小线,但不再是一条大线。



也可以看看:

法人实体提示中的技术边界 -如果输入1000个字符,则什么也不会发生,但如果发生“战争与和平”,则不会...







3.数据库中的边框



数据库中的边框是数据库中可以容纳多少个字符。在创建基础时,我们指示每个字段的尺寸。这是乡亲们一个例子



  • 姓-VARCHAR(255)
  • 名称-VARCHAR(100)
  • 城市-VARCHAR(20)


这意味着在“姓氏”字段中,我们可以存储255个字符,在名称100中,并且在城市中-20。当尝试在其中推送较大的字符串时,系统会从“ ORA-06502:PL / SQL:数字或值错误”系列中生成错误:字符串缓冲区太小“



重要的是要理解,只有在服务器上没有边界时,我们才会看到数据库边界。边框的搜索路径不会更改:



  1. 删除客户端上的边框
  2. 塞满大线
  3. 试图保存






因此,如果开发人员在服务器上设置了边界,那么我们将看到一个已处理的错误-精美地(或并非如此)呈现,并带有相当有意义的文本。因为开发人员写的是关于我们的应用程序的。







如果服务器上没有边界,那么我们将看到未处理的错误。可能是类似“ ORA-06502:..”的错误,也可能是代码流跟踪-一堆普通用户难以理解的字符。







当然,可能还有另一种情况-服务器上的边界大于数据库中的边界:



  • 服务器-20个字符
  • DB-10个字符


然后事实证明这是一个有趣的情况。是的,我们保护自己免受插入“战争与和平”。输入25个字符或2500万个字符-您将得到一个有意义的错误。但是,如果您输入11个字符,那么哦!全屏显示大而可怕的堆栈。



因此,在测试黑匣子时,请勿尝试一次找出很多字符。首先尝试有意义的含义。而且,如果您取消了对客户端的限制,则值得尝试为其设置边界值。maxlength = 10吗?尝试输入11个字符。然后是5500万,然后是5500万。







总计:查找边界的清单



在客户端服务器应用程序中,边界可以位于每个链接上。理想情况下,它们应该匹配。但是我们必须检查一下!







可能会有更多的界限。在客户端上,开发人员可以一次强加几个界限:maxlength和跨越特定行时的行为都会改变(js代码)。



边界可能更少。在“让用户不要输入愚蠢”系列中,因此,对客户端和服务器没有任何限制。但是数据库中字段的维度仍然保留。



如何查找边界:



1.检查字段是否具有maxlength-这是客户端上最明显的边界。



2. 取消此限制



3.启用JS控制台(如果没有它我们可以去哪里?)。



4.开始驱动字符,每个字段大约50-100个字符。跟进:



  • — ?
  • — ?


如果系统行为发生变化,或者控制台中出现错误,则这也是客户端的边界。但是另一个是在js代码中。



5.尝试保存这50-100个字符。这就是我们在服务器和/或数据库中寻找边界的方式。



如果系统生成有意义的错误,例如“字段太长”,则这是服务器上的错误。如果未解决该错误,则很可能服务器上没有边界,并且您在数据库中找到了边界。



您可以使用二等分法找到边界的确切值。好吧,或者使用错误消息的日志/文本。



6.引入1亿个符号(工具),并尝试保存它们以查找技术前沿。



在本文的过程中,我们使用此清单检查了“用户”系统中的“ name1”和“ hamster”字段。结果:



Name1字段:



  • 最大长度-10个字符
  • 服务器-10个字符


仓鼠场:



  • 最大长度-10个字符
  • js-11个字符
  • 服务器-20个字符


一切都对名字有利,界限重合。但是,在检查“仓鼠”时,我们立即发现了两个问题-客户端-服务器边界之间的差异(10和20)以及控制台中的错误。您可以发布错误!



All Articles