前言

  软件测试在软件诞生的那开始了,越来越多的公司和组织获得了软件测试的巨大回报,这是提高软件质量有效的方法,也是提高公司产品质量的重要手段。

  曾经一个朋友聊天时说过,一个90年代的程序设计师和一个90年代的测试工程师,那么到了我们现代的这个社会,程序设计师可能不知道如何下手,但是测试工程师还是可以按照他的思路来测试这个产品(对于较简单的非网络软件)。

  起初听到这个事情很不以为然,但是仔细坐下来好好想想,这里面隐藏着一个软件测试方面的巨大的难题。那是我们的软件测试方法一直都没有改变过,曾经很多人提出过这方面的理论和技术,但是很多都是以失败告终了。那么为什么软件测试改进这么难,编程语言在层出不穷的变换着,唯独测试方面停滞不前。仔细想一想,是因为软件的多样性,曾经有学者提出建立像维基百科那样,建立一个测试百科,由世界各地的测试工程师上传自己的测试用例,也提出过携带环境测试等等一些理论。所以我们对软件测试新方法迫不及待。

  第一节 软件失效

  当我们看到这个名词的时候,我相信很多测试工程师都会有同感,在你们的工作过程中发现过很多软件失效,“人类本身是一个麻烦的制造者”,我们不仅扪心自问,“我们是否可以真正以来软件处理这些重要的全球性任务?对于许多灾难“船只抛锚”、“火箭爆炸”、“金钱损失”,甚至于“夺走人类的生命”。人类并不完美,难免会犯错误,任何人。

  第二节 商业中的软件测试

  如今软件测试已经系统化的应用到了商业软件测试中,但是在真正的测试中往往是这样的,当我们测试到一定的程度的时候,bug的数量不在增加了,这个使我们往往很苦恼,从测试用例中一遍一遍的运行,希望发现bug。但是很多的时候我们的测试经理很略了一个很大的方面,那是测试工程师的心理,我们往往在很苦闷的寻找一个东西,往往变现的很是急躁,但是如果我们有了地图,或者有了提示,那么我们再寻找的话,往往会轻松很多。我们暂且称之为测试瓶颈。

  这个时候我们需要转变测试方法,举一个例子,农民在喷洒农药的时候,时间长了,有一些虫子不但不死,反而对其的药性有抵抗力,这是时候农民往往回换一种药。软件测试亦是如此,这个时候我们得换一种测试方面。这是软件测试原理中的第五条:杀虫剂?论。

  第三节 探索性软件测试

  第一次看到这个词语你可能会感到惊讶,从此以上面我们可以看出,那是在探索中测试。

  那么我们从这里在分为:局部探索性软件测试、全局探索性软件测试以及混合探索性软件测试。

  局部探索性软件测试:

  进入这个话题之前,我们先看一个比喻性的招聘广告:

  急需一名软件测试人员,该职位要求根据那些乱七八糟且只有半截的规格说明书(如果还能找到的话)来测试一个高度复杂且基本不带任何文档的软件产品。不要指望当初的开发人员,他们基本不愿也不会帮助你。该产品的使用环境广泛,支持多用户、多平台、多语言和其他很多必须支持的环境。我们不清楚如何定义它们,但是安全性和性能是重要的,而且软件发布后不允许处任何问题,否则我们玩完了。

  我们必须承认上面说的都是反话。但是这里提到情况,我敢打赌他们是不会招聘到人的。

  这个广告告诉我们,测试工程师必须有完整的产品规格说明书,必须清楚产品框架,必须了解产品的使用过程和功能。

  测试是有所改变,有所不变。

  1)你必须判断软件运行的表现是否符合设计的预期?

  2)当用户为了某个功能购买了软件,可是该软件时候实现了这个功能?

  3)软件运行时,是否足够快,足够安全,足够稳定?

  那么在局部探索性软件测试我们可以依赖于以下几种:

  1)合法输入和非法输入

  2)输入筛选器

  3)输入检查

  4)异常处理代码

  5)默认输入或者用户提供的输入?

  6)常规输入还是非常规输入?

  7)使用输出来指导输入选择