GO语言(二十九):模糊测试(下)-

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GO语言(二十九):模糊测试(下)-相关的知识,希望对你有一定的参考价值。

参考技术A

语料库文件以特殊格式编码。这是种子语料库和生成语料库的相同格式。

下面是一个语料库文件的例子:

第一行用于通知模糊引擎文件的编码版本。虽然目前没有计划未来版本的编码格式,但设计必须支持这种可能性。

下面的每一行都是构成语料库条目的值,如果需要,可以直接复制到 Go 代码中。

在上面的示例中,我们在 a []byte后跟一个int64。这些类型必须按顺序与模糊测试参数完全匹配。这些类型的模糊目标如下所示:

指定您自己的种子语料库值的最简单方法是使用该 (*testing.F).Add方法。在上面的示例中,它看起来像这样:

但是,您可能有较大的二进制文件,您不希望将其作为代码复制到您的测试中,而是作为单独的种子语料库条目保留在 testdata/fuzz/FuzzTestName 目录中。golang.org/x/tools/cmd/file2fuzz 上的file2fuzz工具可用于将这些二进制文件转换为为[]byte.

要使用此工具:


语料库条目:语料库 中的一个输入,可以在模糊测试时使用。这可以是特殊格式的文件,也可以是对 (*testing.F).Add。

覆盖指导: 一种模糊测试方法,它使用代码覆盖范围的扩展来确定哪些语料库条目值得保留以备将来使用。

失败的输入:失败的输入是一个语料库条目,当针对 模糊目标运行时会导致错误或恐慌。

fuzz target: 模糊测试的目标功能,在模糊测试时对语料库条目和生成的值执行。它通过将函数传递给 (*testing.F).Fuzz实现。

fuzz test: 测试文件中的一个被命名为func FuzzXxx(*testing.F)的函数,可用于模糊测试。

fuzzing: 一种自动化测试,它不断地操纵程序的输入,以发现代码可能容易受到的错误或漏洞等问题。

fuzzing arguments: 将传递给 模糊测试目标的参数,并由mutator进行变异。

fuzzing engine: 一个管理fuzzing的工具,包括维护语料库、调用mutator、识别新的覆盖率和报告失败。

生成的语料库: 由模糊引擎随时间维护的语料库,同时模糊测试以跟踪进度。它存储在$GOCACHE/fuzz 中。这些条目仅在模糊测试时使用。

mutator: 一种在模糊测试时使用的工具,它在将语料库条目传递给模糊目标之前随机操作它们。

package: 同一目录下编译在一起的源文件的集合。

种子语料库: 用户提供的用于模糊测试的语料库,可用于指导模糊引擎。它由 f.Add 在模糊测试中调用提供的语料库条目以及包内 testdata/fuzz/FuzzTestName 目录中的文件组成。这些条目默认使用go test运行,无论是否进行模糊测试。

测试文件: 格式为 xxx_test.go 的文件,可能包含测试、基准、示例和模糊测试。

漏洞: 代码中的安全敏感漏洞,可以被攻击者利用。

性能测试二十九:Dubbo框架测试脚本编写

 

 

 

 

测试脚本编写

 

新建一个folder命名为lib,用于存放依赖包

 

把以下jar全部拷进lib下,并build path

 

找开发要 真正要测试的以jar包形式存在的代码的类,

 

打开看一下

放到lib并build

所以说,要测试Dubbo框架下的接口,lib下要导入Dubbo框架的jar,还有需要测试的接口的jar包

 

导入配置文件

 

修改配置项,ip,接口

 

 到这,准备工作就做好了,开始写代码访问

 

 

 

package cn.test.dubbo;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.li.domain.Product;
import com.li.service.ProductService;

public class MyDubboTest {

public static void main(String[] args) {
//1、首先启动Dubbo框架,并且加载applicationContext.xml配置文件
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");

//2、直接获取远程接口的对象(由框架自动完成)
//后面那个productService为配置文件中zookeeper获取的远程接口对象的实例(id=“···”)
ProductService productService = (ProductService) context.getBean("productService");

//3、调用接口对象的方法
Product product = productService.getProductByPid(1);
if (product == null){
System.out.println("事物失败");
}else{
System.out.println("事物成功");
System.out.println(product);
}
}
}

 

以上是关于GO语言(二十九):模糊测试(下)-的主要内容,如果未能解决你的问题,请参考以下文章

一种针对JavaScript引擎JIT编译器的模糊测试方法

性能测试二十九:Dubbo框架测试脚本编写

网络安全-好用的模糊测试器汇总与思考

Go语言开发(二十)GoStub测试框架

Go语言开发(二十一)GoMock测试框架

Go Fuzzing已经进入Beta测试阶段