java.net cidr接口_api 接口 fuzz 测试初探

本文探讨了在API接口测试中运用模糊测试(fuzz testing)技术,以检测异常输入处理,特别是针对Java.net CIDR接口。通过使用PyJFuzz库,创建了一个模板请求并分析其返回的异常情况,揭示了即使已做异常测试,仍有可能遗漏某些边界情况。模糊测试可以作为一种有效的补充手段,帮助发现接口潜在问题。
摘要由CSDN通过智能技术生成

fd56507265ea417df9a24be207fdba33.png

目标

在日常测试工作中,经常会有api接口的测试,除了正向流程的测试之外,我们经常还需要覆盖一些异常情况。

例如:

不合法字符串

字符串超长

应该是数字类型的,传入了字母

参数为空

传入了中文,标点符号等

sql注入等等

事实上,我们组的接口测试demo框架中,在dataprovider中也经常能够看到诸如下面的例子。

@DataProvider(name = "testIllegalName")

public static Object[][] testIllegalName(){

return new Object[][]{

//name

{null, 400, "域名为空或者域名非法"},

{"", 400, "域名为空或者域名非法"},

{"abcdefghijilmnopqrstu", 400, "域名为空或者域名非法"},

{" ", 400, "域名为空或者域名非法"},

{"12", 400, "域名为空或者域名非法"},

{"-12", 400, "域名为空或者域名非法"},

{"0.2", 400, "域名为空或者域名非法"},

{"abcdefghij0123456789abcdefghij0123456789abcdefghij0123456789abcd.com", 400, "域名为空或者域名非法"},

{"zxq.qa.com", 400, "域名为空或者域名非法"},

{"zxq_qa.com", 400, "域名为空或者域名非法"},

};

}

此处是看看接口在传入非期望值的时候,能不能够很好的处理类似请求。

除此以外,还有一些和业务场景强相关的值类型,比如网络测试的时候,我们会关心cidr的格式;计费测试的时候,又特别关注数字的类型。

一方面,给每个接口增加类似的异常接口测试相对比较无趣;另一方面,我们作为人,考虑问题,不管是开发还是测试,都难免挂一漏万,有一些边边角角的case没能考虑到。

既然如此,我们能否统一抽象出来一种接口异常测试的框架,自动 注入各种类型的异常,然后将凡是服务没有捕获的,抛出trace, exception 的,记录下请求的payload,为后续验证覆盖提供支撑。

原理

主要使用了模糊测试技术(fuzz testing, fuzzing)。其核心思想是自动或半自动的生成随机数据输入到一个程序中,并监视程序异常,如崩溃,断言(assertion)失败,以发现可能的程序错误,比如内存泄漏。(摘抄之维基百科)

简单的模糊测试随机输入数据,而更加高效的模糊测试,需要理解对象结构或者协议。通过向数据内容,结构,消息,序列中引入一些异常,来人为的构造聪明的模糊测试。

如果你持续关注文件系统或内核技术,你一定注意过这样一篇文章:Fuzzing filesystem with AFL。Vegard Nossum 和 Quentin Casasnovas 在 2016 年将用户态的 Fuzzing 工具 AFL(American Fuzzing Lop)迁移到内核态,并

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值