专栏首页sylan215 的软件测试技术学习一种基于沙箱的动态测试的设想

一种基于沙箱的动态测试的设想

说到全流程测试,就不得不提很多人关心的「单元测试」,而说到单元测试,我又自然的想到了在我浏览器中长期占据一个 tab 页的文章《为什么大多数单元测试是浪费》(后台回复「浪费」获取 URL 地址)。

为什么长期占据我浏览器的一个 tab 页?主要是我作为实用派,一直对单元测试的投入产出比存在疑问,但是自己又没有实际做过单元测试,所以很想知道别人反驳的理由,顺便结合自己的项目,做个取舍。

整篇文章读下来,作者并没有全盘否定单元测试,只是建议只做必要的单元测试,主要反驳的是实际项目中,单元测试至上的思想,至于不做单元测试的部分,作者建议用断言、系统测试以及开发同学的意识来替代。

我很赞成这种想法,但实际落地的可行性仍然存在疑问,之前的单元测试,要么是具备很好质量意识的开发来做,要么是具备很好代码能力的测试来做,现在等于完全倾向于具备很好质量意识的开发了,而国内开发人员的现状,离这个程度还是有一定差距的(开发同学别怼我)。

那我的建议是什么呢?

目前在编码阶段就介入进行质量保证里面比较实用的做法,一个是自动化静态代码检查,一个是人工静态代码 Review。

自动化静态代码检查,可以发现那些比较固定的、有明确检查条件的问题。

人工静态代码 Review,如果碰到负责任的开发,不仅可以发现业务实现上的逻辑问题,还可以发现一些潜在的技术问题。

但是这两种方法都有一个共同的缺点,就是很难发现一些动态执行过程中的问题,比如内存泄露,就是很难确认分配内存和释放内存的匹配操作。那有没有解决方案呢?

也算有吧,一种是针对性代码插桩,对症下药,就是麻烦,一种是安装一些插件,代码编译时自动实现了插桩,但是需要带着插桩的代码进行测试,也是个问题。

所以我突然想到了一种借助沙箱进行动态测试的方案。

所谓沙箱,就是一个完全独立隔离的可执行环境,目前主要应用于安全领域。

说起它的演进过程也挺有意思,很久之前杀软识别病毒都是靠静态特征码(类似我们的静态代码扫描逻辑),后来病毒进化了,没有显著的可以识别的静态特征了,或者有些敏感特征正常软件也会用到,所以杀软就发展出一种行为检测的方法,就是通过检测病毒/木马干了啥来判断是否恶意,而判断木马干了啥,一种方式是等木马干活时抓现行(滞后、被动),另一种则是把木马丢到沙箱里面主动运行起来,这是目前一种非常有效的识别手段。

同理,对于我们静态扫描没法判断的检查点,是不是也可以利用沙箱 + 代码执行 + 行为监控点的方式,去发现那些需要动态执行,并且黑盒测试又不方便验证的点呢?

以上,我好费劲的从敏捷测试引到了沙箱动态检测,不知道你看明白了没有?目前,这个方法还只是个猜想,如果大家有其他的方式,请多赐教,如果针对上面的方案有任何问题和建议,欢迎留言一起讨论。

本文分享自微信公众号 - sylan215(sylan2158),作者:sylan215

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-02-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Git 中常用的 4 个命令

    使用 Git 进行版本管理时,肯定不只做提交,有时候也会需要回退修改,并且在回退的基础上进行重新提交,这时候有几个常用的命令就需要用到了,下面分别做介绍。

    sylan215
  • 彻底搞懂 Python 编码

    因为中文的特殊编码,导致 Python2 和 Python3 使用过程中的各种编码问题,如果不清楚其中的关联关系,那么这就一直是个大坑,不是懵逼就还是懵逼,所以...

    sylan215
  • Python2 和 Python3 中默认编码的差异

    最近在使用 Python3.4 做一些脚本实现,发现对于编码的处理上和 Python2.6 有很大的不同,就此机会把相关知识做个梳理,方便需要的时候查阅。

    sylan215
  • 在VS2010下进行单元测试 C#

    在VS2010中,单元测试的功能很强大,使得建立单元测试和编写单元测试代码,以及管理和运行单元测试都变得简单起来,通过私有访问器可以对私有方法也能进行单元测试,...

    Isaac Zhang
  • 单元测试两三问

    单元测试(英语:UnitTesting)又称为模块测试,是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在过程化...

    腾讯移动品质中心TMQ
  • WinAMS--软件单元测试/集成测试工具

    [Coverage master winAMS]是以嵌入式软件的函数为单位,实施模块单元测试以及C0/C1/MCDC覆盖率测试(coverage test)的嵌...

    用户7695084
  • 单元测试高效之路——持续集成

    互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成(Continuous integration,简称CI)。

    京东技术
  • 重新思考单元测试

    摘要: 单元测试应该是程序员的必备技能,而真正的编程高手应该善于把握单元测试的粒度。

    Fundebug
  • 【Dev Club 分享】安卓单元测试:What, Why and How

    Dev Club 是一个交流移动开发技术,结交朋友,扩展人脉的社群,成员都是经过审核的移动开发工程师。每周都会举行嘉宾分享,话题讨论等活动。 本期,我们邀请了蘑...

    腾讯Bugly
  • 一枚程序员眼中的单元测试

    如今程序员群体赶上了中国最庞大的农民群体,大街上随便抓一把,十有八九是程序员,还一个刚从某国企离职报名参加软件培训班。我想码农的称号或许就是这么来的吧。

    袁慎建@ThoughtWorks

扫码关注云+社区

领取腾讯云代金券