软件测试
罗小米
这个作者很懒,什么都没留下…
展开
-
Angora: Efficient Fuzzing by Principled Search
Angora: Efficient Fuzzing by Principled Search摘要Angora的目标是提高分支覆盖率,不使用符号执行的方法来解决路径约束(听上去很神啊)那么为了解决路径约束,本文引入一些关键技术:可扩展的byte级别的taint跟踪上下文有关的分支计数基于搜索的梯度下降输入长度探索在LAVA-M数据集上,Angora几乎发现了所有的注入bug,而且...翻译 2019-04-05 13:09:07 · 2260 阅读 · 1 评论 -
Regression test selection for TizenRT
摘要RTS:跳过不被代码变更影响的测试用例近期相关工作开发鲁棒的RTS工具,主要面向特定语言,比如JAVA和C#,不能兼容到大型C语言项目,比如TizenRT,一个轻量级的RTOS-based平台本文开发工具Selfection,该工具使用objdump和readelf工具从二进制文件中静态构建依赖图和检测修改的代码元素。实验部分使用TizenRT这个项目最新的150个版本,评价指标选取re...翻译 2019-04-06 17:19:08 · 361 阅读 · 0 评论 -
Steelix: Program-State Based Binary Fuzzing
1 介绍PUT: program under test(待测程序)模糊测试分类方法:根据PUT的结构知识如何应用分类白盒:白盒fuzzers常常使用重量级的程序分析,例如符号执行灰盒黑盒根据测试用例如何生成分类基于生成:一开始没有测试用例,从已有知识构建结构化或符合语法的测试输入(比如:XML)基于变异:从已有的测试用例上根据生成策略生成新的测试用例本文专注于灰...翻译 2019-04-07 09:06:11 · 1159 阅读 · 0 评论 -
初试py-afl-fuzz
github: https://github.com/jwilk/python-afl入门:Taking a look at python-afl by Jussi JudinIntroduction to Fuzzing in Python with AFL by Alex Gaynor需要在/etc/environment中添加export AFL_I_DONT_CARE_ABO...原创 2019-04-07 09:09:09 · 2201 阅读 · 1 评论 -
一篇毫不负责的afl-fuzz源码学习指北
read_testcasesnl_cnt是统计inputs目录下的目录数,然后从这些目录中读取测试用例加入cull_queue这个函数好像也没看懂是啥。。先把队列中的实体favored全置为0然后。。。好像是精简输入数目calculate_score计算得分(对于输入的fuzz次数)run_target执行目标应用,监控timeouts。返回状态信息,调用的程序会...原创 2019-04-07 09:10:01 · 1710 阅读 · 0 评论 -
A systematic review on regression test selection techniques
摘要本文是一篇综述,总结了27篇paper中36个empirical studies,21个实验和15个case studies。评价了共28个RTS技术1. 绪论回归测试用例选择需要权衡重跑测试的开销和遗漏变更导致的风险已有的研究主要包括基于代码变更和规范变更的测试用例选择方法,评价选择技术,变更影响分析和不同应用中的回归测试(数据库应用,GUI应用),测试自动化和测试流程增强回归测...翻译 2019-04-07 16:37:56 · 184 阅读 · 0 评论 -
A Study of Regression Test Selection in Continuous Integration Environments
摘要持续集成(CI)系统负责软件的自动化构建,测试执行和交付。CI提供了软件变更的快速反馈,最小化每次迭代需要的时间和成本。最近的工作主要通过RTS优化回归测试的开销。这些方法目标为CI环境,因为传统的RTS技术常常使用代码插装或十分细粒度的依赖分析,不能够处理快速地变更。本文中深度研究不同开源项目RTS在CI环境中的使用。本文分析了918个开源项目得到以下结论:在什么条件下RTS是必要的...翻译 2019-04-11 13:33:06 · 279 阅读 · 0 评论 -
Effective Regression Test Case Selection: A Systematic Literature Review
摘要本文研究了2007至2015年间47篇实证研究。其中39%的研究采用挖掘和基于学习的回归测试用例选择,18%关于单元级别的测试,26%使用面向对象的环境。只有39%的研究可以根据实验步骤进行复现。这些报告使用了7种不同的开销指标,13种覆盖类型和5种错误检测指标。70%的研究使用开销作为有效性的度量,31%使用故障检测能力作为度量,16%使用覆盖率作为度量。1. 绪论IEEE定义回归测...翻译 2019-04-11 23:19:03 · 390 阅读 · 0 评论 -
Regression testing minimization, selection and prioritization: a survey
摘要有很多方法最大化积累下来的测试用例套件的价值:minimizationselectionprioritizationMinimization:消除冗余的测试用例以减少要跑的测试用例Selection:识别与当前变更相关的测试用例Prioritization:使缺陷尽早被检测到1. 绪论回归测试的目的是保证新引入的变更不会影响到代码已有的,未变更的部分的行为一般来说最直接...翻译 2019-04-09 21:22:31 · 535 阅读 · 0 评论 -
Practical Regression Test Selection With Dynamic File Dependencies
摘要提出一个新的,轻量级的回归测试选择(RTS)方法——EKSTAZI。这个方法跟踪文件相关测试上的动态依赖。在32个开源项目共615个版本上进行测试。结果显示EKSTAZI方法平均减少32%的测试时间,其中长时间运行的测试时间与全部测试相比减少了54%。1. 介绍已有研究表明回归测试可以最多减少80%的测试预算和最多50%的维护成本。一个典型的RTS技术一般分为三个阶段:analys...翻译 2019-04-06 17:17:31 · 240 阅读 · 0 评论 -
PerfFuzz: Automatically Generating Pathological Inputs
1 介绍已有的检测性能问题的研究大多数假设已有一定规模的输入。这些输入来源包括:人工编写的性能测试benchmark在使用过程中常用的输入用户遇到的触发性能问题的输入往往这些输入引发的问题已经发现或修复,不能发现新的性能问题。Pathological inputs:造成最坏算法复杂度的输入本文提出PERFFUZZ,基于反馈导向的变异fuzzing生成输入。实验结果表明在4个C语...翻译 2019-04-06 17:16:53 · 727 阅读 · 0 评论 -
Optimizing Seed Selection for Fuzzing
摘要除了展示fuzzer找到bug外,很少有系统化的工作来理解如何恰当地fuzz。本文就是要系统化地说明:如何选择种子文件来最大化fuzz阶段发现bug的数量。本文设计了6个算法,fuzz了650个CPU天,在8个应用上发现了240个bug,结果显示挑选算法的选择可以很大地增加发现的bug。1 介绍2012年,软件安全市场估值$19.2billion。给定目标应用PPP,一系列的种子输...翻译 2019-04-06 17:16:15 · 1001 阅读 · 1 评论 -
Coverage-based Greybox Fuzzing as Markov Chain
1 介绍现有fuzzer最主要的挑战是:许多fuzz执行少数相同路径。举个栗子,fuzzing一张有效的图片文件,那么变异后的图片有90%的可能性执行拒绝无效图片文件的路径π\piπ。fuzzing一张无效的图片文件,有99.999%的概率变异之后的文件执行相同的路径π\piπ。我们称路径π\piπ为high-frequency路径。所以本文工作提出一些策略来帮助在相同的fuzz次数下探索lo...翻译 2019-04-05 13:16:02 · 2102 阅读 · 1 评论 -
Evaluating Fuzz Testing
1 介绍信息量太大回头再写。。# 一天后更新不想写了差不多就下面这些内容吧。。2 背景2.1 fuzzing流程fuzzing的核心算法initSeedCorpus:初始化新的输入isDone:决定fuzzing是否停止choose:从队列中选择至少一个种子输入进行变异mutate:从至少一个种子输入和观察到的现象中产生新的候选种子eval:评价程序的种子产生观察现象is...翻译 2019-04-05 13:17:03 · 981 阅读 · 0 评论 -
FairFuzz: A Targeted Mutation Strategy for Increasing Greybox Fuzz Testing Coverage
摘要本文提出了FAIRFUZZ,从两个方面改进AFL:自动化识别很少被输入hit的分支提出创新的mutation mask创造算法,使生成的输入能够hit给定的rare branch1 介绍本文的主要贡献:提出一个新颖的mutation mask策略来增加hit rare branch的概率基于AFL,将上述策略集成到AFL上,实现FAIRFUZZ并开源以AFL为baseli...翻译 2019-04-05 13:17:44 · 1265 阅读 · 1 评论 -
Fuzzinator: An Open-Source Modular Random Testing Framework
摘要fuzzing工具一般包含以下几个相似且重要的组件:目标系统的数据生成解决方案unique error检测器自动化的测试用例规约器issue报告工具本文介绍Fuzzinator:一个开源的后测试框架,将上述几个组件模块化,使之相互独立,并串联起来,构成完成的框架。1 介绍模糊测试用于各种目标软件/系统:web引擎操作系统内核编译器解释器用户接口等同时也有很...翻译 2019-04-05 13:18:16 · 170 阅读 · 0 评论 -
Fuzzing - a survey
介绍模糊测试的概念第一次在20世纪90年代提出.多年来的实践中表明传统的模糊测试只能找到程序运行初期的简单的内存冲突bug. 除此之外, 模糊测试的随机性和盲目性导致找bug效率低.传统易损点检测技术静态分析优点: 检测速度块缺点: 有很高的错误率, 存在很多假正例动态分析优点: 精确度高缺点: 1) 动态分析中分析, 运行目标程序的步骤需要人工交互, 导致效率低; 2...翻译 2019-04-05 13:18:47 · 2406 阅读 · 0 评论 -
A Safe,Efficient Algorithm for Regression Test Selection
摘要本文介绍一个safe的rts算法,可以处理所有语言结构和程序修改,并容易自动化。1. 绪论软件维护活动的时间占据软件产品生命周期的2/3。选择方法只有在选择开销小于执行这些测试用例的开销时才有益已有的研究关注结构覆盖指标。覆盖指标提供了一个途径度量测试充分性。...翻译 2019-04-10 15:03:56 · 213 阅读 · 0 评论 -
Fuzz Testing in Practice: Obstacles and Solutions
1 介绍本文主要介绍了作者与两位华为工程师如何将模糊测试的技术应用到libmsg这个信息传输库上。着重描述了在应用这个基础的过程中的主要障碍,和对应的解决方法。解决了所有障碍后,本文使用SAFL进行模糊测试并成功找到9个新的漏洞。2 背景本文采用SAFL作为模糊测试的工具(发现给出的下载地址已经不见了。。。)。SAFL的算法是FairFuzz和AFLFast的结合。FairFuzz解决了种子...翻译 2019-04-06 17:13:28 · 300 阅读 · 0 评论 -
Hybrid Regression Test Selection
摘要回归测试用例选择(Regression Test Selection, RTS)通过选择和重跑受代码变更测试来减少回归测试开销文件级别的RTS(FRTS)相比更细粒度的技术(方法级别),开销更小本文的HyRTS方法结合了方法粒度和文件粒度实验在32个项目的2707个版本,共计124百万行源码上进行实验1. 绪论减少回归测试开销的方法:回归测试用例选择回归测试用例约减回归测试...翻译 2019-04-06 17:14:20 · 486 阅读 · 0 评论 -
TensorFuzz: Debugging Neural Networks with Coverage-Guided Fuzzing
因为老板之后可能要做深度学习框架的模糊测试,所以把之前一直没啃的paper先啃了。。摘要本文开发一个对神经网络的**coverage-guided fuzzing(CGF)**方法。然后讨论应用CGF达到以下目标:找到预训练好的神经网络中的数值型错误,生成神经网络的不一致并找到这些版本的神经网络,发现字符级别语言模型中意想不到的行为。最后开源了这个工具。1. 绪论机器学习模型由于下述原因很...翻译 2019-06-12 16:35:16 · 1983 阅读 · 4 评论