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

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

其实这是十分不严谨的,若是未经过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. HTTP协议探究(六):H2帧详解和HTTP优化

    一 复习与目标 1 复习 HTTP1.1存在的问题 HTTP2.0要兼容HTTP1.1 HTTP2.0的重要概念 分帧层 二进制:流 消息 帧 流的状态.优先级和并发 流量控制 服务器推送 首部压缩 ...

  2. python打印表格式数据-星号或注释

    python打印表格式数据,留出正确的空格,格式化打出 代码如下: def printPicnic(itemsDict,leftWidth,rightWidth): print('PICNIC ITE ...

  3. JAVA基于PDF box将PDF转为图片

    在一项目中用到,本身我是.NET的,团队中有用到JAVA,故此我处理这个功能,记录以下备用. 1.引用:fontbox-2.0.16.jar.pdfbox-app-2.0.16.jar 版本一定要正确 ...

  4. tcp关闭连接:挥手讨论

    讨论焦点: 如果client发送FIN后,服务器端未返回完成的数据(缓存区中)还执行返回吗? 参考文档:https://download.csdn.net/download/u013547552/10 ...

  5. kbmMW 5.10.01试用报告

    1.FileClient.SameFile 调用这个方法,当本地文件不存在时,会一直等待.跟踪代码,发现: function TkbmMWCustomFileClient.SameFileEx(Loc ...

  6. DNSMaper 一款子域名枚举与地图标记工具

    DNSMaper DNSMaper拥有与众多子域名枚举工具相似的功能,诸如域传送漏洞检测,子域名枚举,IP地址获取 文件说明├── dnsmaper.py(核心代码)├── dnsmapper.png ...

  7. Mysql中的锁机制-转载

    原文:http://blog.csdn.net/soonfly/article/details/70238902 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的 计算资源(如 ...

  8. 剑指Offer编程题(python)——链表

    1.从尾到头打印链表 #输入一个链表,按链表值从尾到头的顺序返回一个ArrayList.class ListNode: def __init__(self, x): self.val = x self ...

  9. linux上构建ftp服务器

    linux上构建ftp服务器 服务器搭建 https://help.aliyun.com/knowledge_detail/60152.html,可以参考这篇博文. 配置文件详解 进入/etc/vsf ...

  10. hibernate的详解

    一,环境的搭建 1)创建maven项目 2)导入依赖的jar包.pom.xml和创建实体类User <?xml version="1.0" encoding="UT ...