Fuzzer 0.3.2

Fuzzer 0.3.2

测试已测试
Lang语言 Obj-CObjective C
许可证 MIT
发布最后发布2018 年 3 月

AlexDenisov 维护。



Fuzzer 0.3.2

Carthage compatible Cocoapods compatible

Fuzzer

当您的服务器撒谎时不要崩溃

这是什么呢?

我们都知道 API 有规范。我们都会编写测试来覆盖“高兴路径”和覆盖“不幸路径”,当我们操作 API 时。

似乎如果我们有测试并且遵循规范,我们就已经很安全了。实际上并非如此。通常在理论上运行良好,但在实践中并不真正有效。

我们可以编写大量的测试来覆盖所有边缘情况,但这既费时又容易出错。最佳选择是自动化此过程。

来源 使用 Fuzzer 创建零崩溃代码

示例

- (void)test {
  NSDictionary *sample = @{
    @“name” : @“John Doe”,
    @“age” : @42
  };

  UserDeserializer *deserializer = [UserDeserializer new];

  FZRRunner *runner = [FZRRunner runnerWithBuiltinMutationsForSample:sample];

  NSArray *reports = [runner enumerateMutantsUsingBlock:^(NSDictionary *mutant) {
    [deserializer deserializeUser:mutant];
  }];

  XCTAssertEqual(reports.count, 0);
}

安装

维护者所使用的组件

获取Fuzzer的最新.make文件

CocoaPods

pod 'Fuzzer', '0.3.0'

Carthage

将以下行添加到您的Cartfile中,以获取Fuzzer的最新版本。

github "AlexDenisov/Fuzzer"

如果您想要安装Fuzzer的特定版本或进行任何高级设置,请参阅Carthage文档

Note : Carthage support has been introduded in v0.3.1 
So older versions of Fuzzer cannot be installd with Carthage.

从源码构建

通常情况下,您不需要这样做。但如果需要,从源码构建的一种推荐方法是使用子项目

您可以根据需要使用以下任何一个项目目标

  • Fuzzer-lib-ios-static - 用于旧项目(至iOS 6
  • Fuzzer-iOS-dynamic - 用于swift和现代项目

即插即用

内建变异

删除节点变异

从字典中随机删除一个键/值对

替换节点变异

随机选取字典中的键并使用节点替换提供的值替换其值

内建替换

  • 整型替换:将值替换为“随机”整型
  • 浮点替换:将值替换为“随机”浮点数
  • 字符串替换:将值替换为“随机”字符串
  • 布尔替换:将值替换为“随机”布尔值
  • 数组替换:将值替换为“随机”数组
  • 字典替换:将值替换为“随机”字典
  • null替换:将值替换为 [NSNull null]
  • nil替换:将值替换为 nil(导致从字典中删除键/值)

许可证

MIT,详细信息请参阅LICENSE