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

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

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

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

1.代码走读:

通读代码,确保明白代码的实现和自己预设的一致。

读什么?

A.代码逻辑:这个脚本用来做什么,主要分为多少步,分别做了什么事情?

用于检查是否有遗漏逻辑,或有悖于需求。

B.具体语法,变量,判断语句

语法方面的东西,变量是否定义,判断语句逻辑是否正确,是否考虑各种异常,错误是否退出,返回正确状态值等。

2.语法检测:

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

命令格式: sh -n ***.sh

若是没有异常输出,证明脚本没有明显的语法问题。

3.运行跟踪:

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

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

命令格式: sh -vx ***.sh

得到效果如下:

我们可以看到

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

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

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

4.覆盖分支:

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

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

5.其他:

A.关于bashdb:

可以尝试下,但是感觉投入产出比不高

B.关于单元测试:

实际工作中,由于项目压力比较大,单元测试的成本还是相当高的,所以目前为止没有。

6.有没有更好的方式?

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

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

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

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

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

效果图对比:

处理后:(对错误,关键信息进行颜色标记,在linux终端可以显示)

脚本是用python实现的,位置:

https://github.com/wklken/pytools/tree/master/shell

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

欢迎一起优化,使之功能更完善
---------------------
原文:https://blog.csdn.net/wklken/article/details/7983054

[shell]如何测试shell脚本,保证正确的更多相关文章

  1. Shell水平测试-想学习Shell的童鞋必选必看文章

    [SHELL水平测试] [OVERVIEW 篇] 有很多种 shell, 你熟悉几种? 各个 shell 的 home page 在那里? 为什么说 zsh 是目前为止功能最为强大的 shell. 为 ...

  2. shell编写一个判断脚本

                                                              shell编写一个判断脚本 4.1问题 本例要求在虚拟机server0上创建/roo ...

  3. Shell文件权限和脚本执行

    一.预备知识 1.shell的作用   2.常识 (1)Tab键自动补全   使用Terminal时,输入命令的前几个字母,敲tab会自动补全命令或文件名.目录等. 好处:操作速度更快:不容易出错: ...

  4. shell编程之服务脚本编写,文件锁以及信号捕获

    shell脚本编程是linux运维工程师必备的技能,也是非常重要的一个技能,所以把shell编程学好,只有好处.基础语法我也就不讲了,学过C语言这些语言的,稍微看一下就能明白shell编程的基础,所以 ...

  5. Linux shell编写端口扫描脚本

    Linux shell编写端口扫描脚本 需求: 扫描特定主机 扫描特定主机的特定端口 扫描特定网段 扫描特定网段中哪些主机开放了特定的端口 源码如下: #/bin/bash #该脚本用于对特定目标主机 ...

  6. Linux shell简单创建用户脚本

    前面介绍简单的shell编写规则. 现在开始编写一个简单的shell脚本. Linux shell介绍 编写shell脚本    1.创建脚本文件    2.根据需求,编写脚本    3.测试执行脚本 ...

  7. shell条件测试语句实例-测试apache是否开启

    终于理解了shell条件测试语句"!="和"-n"的用法区别,于是有了如下的shell脚本,做为练习. 第一种方法:测试apache是否开启?字符串测试 #!/ ...

  8. shell条件测试test

    shell条件测试可以通过以下两种方式: test   参数    测试内容 [ 参数  测试内容 ] 一.测试文件类型: test  -e   文件名          (测试文件是否存在) [ - ...

  9. shell中引用其他脚本的方法

    在Shell中引用其他脚本的方法是source   filename.sh 或    .    filename.sh 注意:      .   和   filename.sh之间必须有空格

随机推荐

  1. 01背包变种 第k解问题 hdu 2639

    先说说普通01包的状态问题吧 普通的01背包,在状态转移的过程中为了求出最优解,一定是遍历了所有的情况 然后再求的最优解.那么对于第k最优解问题,我们只需要再加一个维度,用来记录每一个状态k优解的状态 ...

  2. 在论坛中出现的比较难的sql问题:3(row_number函数 分组查询)

    原文:在论坛中出现的比较难的sql问题:3(row_number函数 分组查询) 最近,在论坛中,遇到了不少比较难的sql问题,虽然自己都能解决,但发现过几天后,就记不起来了,也忘记解决的方法了. 所 ...

  3. iframe滚动条充当浏览器滚动条

    在做博客项目的时候,使用了iframe,方便根据选择的文章类别切换显示的内容,但是文章一般都有很多,通过bootstrap的媒体列表的方式显示的话,iframe是一定会出现滚动条的,特别是我添加了一个 ...

  4. SAP官方提供的人脸识别API

    https://api.sap.com/api/face_detection_api/resource 准备一张克里斯蒂亚诺 - 罗纳尔多的图片: 点击Choose File按钮,加载这些图片,然后点 ...

  5. ASTA存在的问题

    1.客户端执行一个查询,提示xx字段不存在.跟踪代码,原来服务端ADOQuery设置BCD返回,客户端AstaClientDataSet在设计期加了字段是ftFloat类型,这两个类型不同产生的错误. ...

  6. 【OGG 故障处理】 丢失归档恢复

    OGG 有两天由于某种原因没有启动,而这段时间的备份文件缺失了一部分归档.恢复过程记录如下: GGSCI (xxxx) > info all Program Status Group Lag a ...

  7. myeclipse 添加反编译插件

    文件下载地址: 链接: https://pan.baidu.com/s/1th2goaA2aS45kO84dX1Bdg 密码: g1fu 先关闭myeclipse1.下载jad1.5.8g 下载后解压 ...

  8. Proxy ARP

    翻译自:https://ccieblog.co.uk/arp/proxy-arp Proxy ARP在一些路由器上是默认开启的.其思想是使两个不同子网上的主机,在没有配置默认网关的情况下,实现彼此通信 ...

  9. Linux学习笔记(十一)shell基础:管道符、通配符和其他特殊符号

    一.多命令顺序执行 && || 相当于其他高级语言中的 ? : 二.管道符 [命令1] | [命令2] 命令1的正确输出作为命令2的操作对象 分屏显示结果 netstat -an 命令 ...

  10. vs2010 glfw glew glad glm 配置

    OpenGL: Configuring GLFW and GLEW in Visual C++ Express Posted by Dimitri | Aug 14th, 2013 | Filed u ...