Shell脚本测试参数
2016-06-22 17:37
281 查看
在实际工作中,需要对shell脚本进行正确性测试。如何用最快最有效的方式进行测试?很多开发的习惯是,二话不说,写完/拿到,就跑一把,看看输入,输出,想要的操作是否完成,也就过了。其实这是十分不严谨的,若是未经过QA,风险还是相当大的。以下即shell脚本测试流程,仅供参考1.代码走读:写完,或者拿到一个shell脚本,不必急于运行,虽然实践是检验整理的唯一标准,但是,在读代码这个过程中,可以规避很多低级的bug.读什么?
3.运行跟踪:实践是检验整理的唯一标准,跑一把。不过,可不是直接运行然后去看最终结果,这样会遗漏掉很多中间过程。命令格式:
我们可以看到每行代码原始命令(无+的):[这是-v的效果]代码执行时的情况(带+),包括运算结果,逻辑判断结果,变量赋值等等[-x的效果]而我们所要关注的就是这些信息,主要是变量值和逻辑判断结果。4.覆盖分支:直接跑,只能覆盖到主体流程,对于其他控制流分支的代码是无法覆盖到的。对于关键性的,重点的逻辑,我们需要制造条件,使运行脚本可以进入对应分支5.其他:
A.代码逻辑,这个脚本用来做什么,主要分为多少步,分别做了什么事情? 用于检查是否有遗漏逻辑,或有悖于需求。 B.具体语法,变量,判断语句 语法方面的东西,变量是否定义,判断语句逻辑是否正确,是否考虑各种异常,错误是否退出,返回正确状态值等。2.语法检测:shell的语法还是相当让人无语的,很多很容易疏忽遗漏的地方命令格式:
sh -n ***.sh若是没有异常输出,证明脚本没有明显的语法问题。
3.运行跟踪:实践是检验整理的唯一标准,跑一把。不过,可不是直接运行然后去看最终结果,这样会遗漏掉很多中间过程。命令格式:
sh -vx ***.sh得到效果如下:
我们可以看到每行代码原始命令(无+的):[这是-v的效果]代码执行时的情况(带+),包括运算结果,逻辑判断结果,变量赋值等等[-x的效果]而我们所要关注的就是这些信息,主要是变量值和逻辑判断结果。4.覆盖分支:直接跑,只能覆盖到主体流程,对于其他控制流分支的代码是无法覆盖到的。对于关键性的,重点的逻辑,我们需要制造条件,使运行脚本可以进入对应分支5.其他:
A.关于bashdb: 可以尝试下,但是感觉投入产出比不高 B.关于单元测试: 实际工作中,由于项目压力比较大,单元测试的成本还是相当高的,所以目前为止没有。6.有没有更好的方式?好吧,单步跟踪,脚本短的还好,日志信息不会太多,要是多了,存在调用其他脚本等等.....日志量达到几千行,这是很轻易的事情。跟踪过的童鞋有同感,展现不够友好,惨白惨白一片,一千行下来,看的眼花。很容易遗漏(LZ被坑了好多回,你看,或不看......错误信息明明就在那里,就是视而不见)So.进行了一层优化,对日志进行处理,使用正则,标注我关心的信息效果图对比:
相关文章推荐
- 如何成为一名专家级的开发人员
- gitinspector+jenkins 开发代码统计CI
- Delphi实现检测并枚举系统安装的打印机的方法
- 详解SQL死锁检测的方法
- C#检测pc光驱里是否插入了光盘的方法
- C#检测远程计算机端口是否打开的方法
- C#实现回文检测的方法
- C#检测DataSet是否为空的方法
- UTF-8 编码中BOM的检测与删除
- C#检测是否有u盘插入的方法
- Lua检测数组(tabble)中是否包含某个值
- PHP检测用户语言的方法
- C#检测是否有危险字符的SQL字符串过滤方法
- .NET微信公众号开发之公众号消息处理
- C#检测上传文件真正类型的方法
- asp检测是否为中文字符函数
- Node.js开发者必须了解的4个JS要点
- 使用nodejs开发cli项目实例
- 谷歌Chrome浏览器扩展程序开发小记
- 浏览器缩放检测的js代码