zoukankan      html  css  js  c++  java
  • 如何进行shell脚本正确性测试

    在实际工作中,需要对shell脚本进行正确性测试。

    如何用最快最有效的方式进行测试?

    很多开发的习惯是,二话不说,写完/拿到,就跑一把,看看输入,输出,想要的操作是否完成,也就过了。

    其实这是十分不严谨的,若是未经过QA,风险还是相当大的。

    以下即shell脚本测试流程,仅供参考

    1.代码走读:

    写完,或者拿到一个shell脚本,不必急于运行,虽然实践是检验整理的唯一标准,但是,在读代码这个过程中,可以规避很多低级的bug.

    读什么?

    A.代码逻辑,这个脚本用来做什么,主要分为多少步,分别做了什么事情?
      用于检查是否有遗漏逻辑,或有悖于需求。
    B.具体语法,变量,判断语句
      语法方面的东西,变量是否定义,判断语句逻辑是否正确,是否考虑各种异常,错误是否退出,返回正确状态值等。
    

    2.语法检测:

    shell的语法还是相当让人无语的,很多很容易疏忽遗漏的地方

    命令格式:

    sh -n ***.sh

    3.运行跟踪:

    实践是检验整理的唯一标准,跑一把。

    不过,可不是直接运行然后去看最终结果,这样会遗漏掉很多中间过程。

    命令格式:

    sh -vx ***.sh

    得到效果如下:

    我们可以看到

    每行代码原始命令(无+的):[这是-v的效果]

    代码执行时的情况(带+),包括运算结果,逻辑判断结果,变量赋值等等[-x的效果]

    而我们所要关注的就是这些信息,主要是变量值和逻辑判断结果。

    4.覆盖分支:

    直接跑,只能覆盖到主体流程,对于其他控制流分支的代码是无法覆盖到的。

    对于关键性的,重点的逻辑,我们需要制造条件,使运行脚本可以进入对应分支

    5.其他:

    A.关于bashdb:
      可以尝试下,但是感觉投入产出比不高
    B.关于单元测试:
      实际工作中,由于项目压力比较大,单元测试的成本还是相当高的,所以目前为止没有。
    

    6.有没有更好的方式?

    好吧,单步跟踪,脚本短的还好,日志信息不会太多,要是多了,存在调用其他脚本等等.....

    日志量达到几千行,这是很轻易的事情。

    跟踪过的童鞋有同感,展现不够友好,惨白惨白一片,一千行下来,看的眼花。

    很容易遗漏(LZ被坑了好多回,你看,或不看......错误信息明明就在那里,就是视而不见)

    So.进行了一层优化,对日志进行处理,使用正则,标注我关心的信息

    效果图对比:

    脚本是用python实现的,位置:https://github.com/wklken/pytools/tree/master/shell

    思想是:执行,抓到所有日志,用正则进行匹配,打上颜色,然后输出

    好了,就这些

    工具的实现是为了提高效率,节约时间。

    The end!

  • 相关阅读:
    【网络游戏同步技术】帧同步的一致性
    【C++】STL常用容器总结之五:双端队列deque
    使 egg-multipart 同时支持 stream 和 file
    react + 图灵api 实现模拟客服
    egg 扩展上传文件白名单
    input[type=file] 样式美化,input上传按钮美化
    react-lazyload 实现图片懒加载
    useEffect 模拟 react 生命周期
    egg 实现下载数据,并保存成excel文件
    egg 实现上传excel,并解析保存到数据库
  • 原文地址:https://www.cnblogs.com/kangleweb/p/10999309.html
Copyright © 2011-2022 走看看