# 编译器的测试

# 目录

[TOC]

# 1.回归测试

  1. 识别出软件中被修改的部分
  2. 从原基线 (opens new window)测试用例库“T”中,排除所有不再适用的测试用例,确定对新版本依然有效的测试用例,创建新的基线测试用例库“TN”
  3. 依据一定的策略从TN中选择测试用例测试被修改的软件
  4. 如果必要,生成新的测试用例集“T1”,用于测试TN无法充分测试的软件部分
  5. 用T1执行修改后的软件
  6. 第2和第3步测试验证修改是否破坏了现有的功能,第4和第5步测试验证修改工作本身

# 2.super-test

  • 原理和csmith类似,但是公司有的会将他集成到CD/CI

# 3.csmith压力测试

Csmith是一个测试用例生成工具。它可以生成静态和动态符合 C99 标准的随机 C 程序。

它用于对编译器、静态分析器和其他处理 C 代码的工具进行压力测试

它是由犹他大学的研究人员开发的免费、开源、许可的 C 编译器模糊测试程序。以前称为Randprog

# 3.1.csmith(2011年paper出现)

  • 仅仅只能生成随机的C语言程序
  • CSmith vs YARPGen

关于csmith的读音

  • 我拆分为c何smith
  • smith,n.史密斯,铁匠,金属工匠
    • 我的谐音读作:思miss

# 3.2.YARPGen(2020年)

# 3.3.Randprog

  • Csmith (2011) only for C compiler • YarpGen (2020) for C and C++ compiler. • Predecessor: Randprog (1600 lines long, 2007)