【项目学习】background了解

 

目录

1.单元测试

 2.mock使用

3.符号执行(symbolic execution)

4.具体执行(concrete execution)

5.中间表达形式 IR(intermediate representation)

6.LLVM/CLANG/KLEE区别


1.单元测试

一个很详细的单元测试介绍

简单粗暴的百度百科

简单来说,单元测试可以看作脱离出来只针对某个单元进行测试。单元可以是函数、类或者其他块。如果单元内部进行了外部服务的调用,我们就可以用下面介绍的mock进行模拟返回值。

单元测试的优点不赘述,大体就是解耦合,方便测试,降低debug成本等等。

 2.mock使用

简单介绍

vue中使用mock

EasyMock使用

第一个链接讲得挺清楚的。mock一般会用在前端调试中,不过我感觉对于本项目来说,还是用于单元测试会比较多。目前先做个简单了解,具体要用的时候再好好学习一下细节技术。

3.符号执行(symbolic execution)

符号执行

符号执行我的理解更像一种方法,有点设未知数解方程那味了。其实逻辑看下来还是好理解的,只要注意分支路径假定条件要考虑完整,应该没啥大问题。

更详细的介绍

这篇文章讲得更深入一点,有时间把文中提到的论文看一看。

4.具体执行(concrete execution)

和符号执行相对的概念,即给出具体的测试值用例进行测试。

救命......怎么挖着挖着就开始有论文了......

先把论文贴这了,之后看一下

向着concolic testing的最优策略迈进

5.中间表达形式 IR(intermediate representation)

其实就是编译原理中间代码生成。参考下面文章复习一遍就好了。

中间代码生成

6.LLVM/CLANG/KLEE区别

详解三大编译器:gcc、llvm 和 clang - 51CTO.COM

深入浅出让你理解什么是LLVM - 简书 (jianshu.com)

LLVM:low level virtual machine,但其实并不是虚拟机,笑死。

简单来说,LLVM提供了一个统一的IR,这样在需要添加新的语言编译或者需要支持新的硬件设备时候,只需要单独增加一个前端、后端就可以了。

clang是归属在LLVM架构下的一个面向C/C++/Objective-C编译器前端,clang作为前端生成到中间代码后,交给LLVM进行代码优化,并生成可执行程序。

而KLEE是一款开源的自动软件测试工具,基于LLVM编译底层基础,能够自动生成测试样例检测软件缺陷。与junit不同的地方在于,KLEE能对c程序生成字节码.bc文件,并自动生成各类缺陷,不需要再自己编写。

本周的背景知识学习就先到这里吧。感觉还是要通过实践学习来得透彻,好好把klee的几个tutorials看了吧。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值