软件测试笔记(四)- 静态黑盒测试

了解描述软件测试方式的术语,包括黑盒测试、白盒测试,以及静态测试和动态测试的区别。了解如何测试产品说明书,一边在编写程序之前找出缺陷。

一、开始测试

产品说明书通常是利用文字和图形描述产品的书面文档。

程序员对于产品外观、功能和使用方式的见解可能与测试员想的完全不一样。确保最终产品符合客户要求以及正确测试投入的唯一方法是在产品说明书中完整描述产品。

  • 黑盒测试和白盒测试
  1. 黑盒测试(balck-box testing) :软件测试员只需要知道软件要做什么——而无法看到盒子里的软件是如何运行的。只需要进行一些输入,就能得到某种输出结果。他不知到软件是如何运行,怎么会这样,只知道程序做了什么。
  2. 白盒测试(white-box testing) :软件测试员可以访问程序员的代码,并通过检查代码的线索来协助测试——可以看到盒子里面。软件测试员根据代码检查结果判断或多或少可能出错的数目,并据此定制测试。

注意:进行白盒测试要冒一些风险。因为要以适应代码操作来定制测试,所以很容易形成偏见而无法形成客观测试。

  • 静态测试和动态测试
  1. 静态测试(static testing) :是指测试不运行部分——只是检查和审核。
  2. 动态测试(dynamic testing) :是指通常意义上的测试——使用和运行软件。
  • 静态黑盒测试

检测产品说明书属于静态黑盒测试。产品说明书是书面文档,而不是可执行程序。因此是静态的。它是利用各种资源而获得的数据——诸如易用性研究、焦点人群、销售收入等建立的。

注意:无论产品说明书的格式是如何,都可以利用静态黑盒测试技术测试。通过询问软件的设计者和编制者甚至可以测试没有写出来的软件产品说明书。

二、对产品说明书进行高级审查

产品说明书必须处理许多不可预料的情况,接受众多变化的输入,并设法把这些汇集在一个描述新产品文档中。审查产品说明书是为了找出根本性的问题、缺陷和遗漏之处。

  • 假设自己是客户

当软件测试员第一次拿到需要审查的产品说明书是,最容易做的是就是把自己当作客户。

  1. 研究一下客户会是什么人;和市场人员或销售人员聊一下,了解他们对最终用户的认识;如果产品是一个内部使用的软件项目,找到使用它的人谈谈。
  2. 熟悉软件应用领域的相关知识有很大的帮助。
  3. 如果审查产品说明书的某一部分是不理解,不要假定它是对的而把它放掉。

注意:在假设自己是客户是不要忘记了软件的安全性。客户也许会假设软件是安全的,但软件测试元不能假定程序员会正确处理安全问题。、

  • 研究现有的标准和规范

标准和规范的差别在于程度不同,标准比规范更加严格。

  1. 标准:应该严格遵守。
  2. 规范:是可选的,但应该遵守。

以下为部分例子:

  1. 公司惯用语和约定。
  2. 行业要求。医药、工业和金融行业的英语软件按尤其必须遵守的标准。
  3. 政府标准。政府——特别是军队系统有严格的标准。
  4. 图形用户界面(GUI):如果软件运行在Microsoft Windows或者Apple Macintosh操作系统下,关于软件外观和用户感受具有公开的标准。
  5. 安全标准。软件及其界面和协议可能需要满足一定的安全标准或级别。

软件测试员要做的是观察,“检查”采用的标准是否正确、有无遗漏。在对软件进行确认和验收时,还要注意是否与标准和规范相抵触,把标准和规范视为产品说明书的一部分。

  • 审查和测试类似软件

了解软件最终结果的最佳方法是研究类似软件,例如竞争对手的产品或者小组开发的类似产品。软件通常不会完全一样,但是类似软件有助于设计测试条件和测试方法,还可能暴漏意想不到的潜在的额问题。

研究类似竞争产品时要注意的问题:

  1. 规模
  2. 复杂性
  3. 测试性
  4. 质量和可靠性
  5. 安全性。

技巧:记住要阅读关于竞争对手软件的评价方面的联机或印刷方面的文章。这对安全方面的问题特别有帮助,因为软件测试员偶尔使用软件不一定能发现安全方面的缺陷。然而在出版物中,这些问题会特别引起关注。

三、产品说明书的低层次测试技术

完成产品说明书的高级审查之后,就可以很好地了解产品以及影响设计的外部因素。有了这些信息,就可以在更低的层次测试产品说明说了。

  • 产品说明书属性检查清单

优秀产品说明书应该具有的8个重要属性:

  1. 完整。是否遗漏和丢失?完全吗?单独使用时是否包含所有内容?
  2. 准确。既定解决方案正确吗?目标定义明确吗?有没有错误?
  3. 精确、不含糊、清晰。描述是否一清二楚?是否有单独的解释?容易看懂和理解?
  4. 一致。产品功能描述是否自相矛盾,或与其它功能有无冲突?
  5. 贴切。描述功能的陈述是否必要?有没有多余的信息?功能是否符合原来的客户要求?
  6. 合理。在规定的预算和进度下,以现有人力、工具和资源能否实现?
  7. 代码无关。产品说明书是否坚持定义产品,而不是定义其软件设计、架构和代码?
  8. 可测试性。功能能否测试?给测试员提供的建立验证操作的信息是否足够?
  • 产品说明书术语检查清单

过于掩饰或含糊其辞的表达:

  1. 总是、每一种、所有、没有、从不。
    如果看到此类绝对或肯定的描述,需要确认确实如此。要考虑违反这些情况的用例。
  2. 当然、因此、明显、显然、必然。
    这些话意图说服你接受假定情况,不要中了圈套。
  3. 某些、有时、常常、通常、惯常、经常、几乎、大多。
    太过模糊。“有时”发生作用的功能无法测试。
  4. 等等、诸如此类、 依此类推、例如。
    以这样的词结束的功能无法测试。功能清单要绝对或者解释明确,以免让人产生迷惑。
  5. 良好、迅速、廉价、高效、小、稳定。
    这些是无法量化的词语,无法测试。如果说明书出现这些用语,需要经一部准确定义其含义。
  6. 处理、进行、拒绝、跳过、排除。
    这些用语可能隐藏大量需要说明的功能。
  7. 如果…那么…(没有否则)。
    缺少配套的“否则”结构的陈述,“想一想”没有发生会怎样。

参考文献

  1. 《软件测试(原书第2版)》
  2. 《软件测试的艺术(原书第3 版)》

你可能感兴趣的:(软件测试基础)