测试基础

第1章 检查产品说明书

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

1.1 黑盒测试和白盒测试

软件测试员用于描述测试方式的两个术语是黑盒测试(black-box testing)和白盒测试(white-box testing)

黑盒测试:软件测试员只需知道软件要做什么,不用关心内部如何运行,又称功能测试或行为测试
白盒测试:软件测试员可以访问程序代码,并通过检查代码的线索来协助测试-可以看到盒子里面

1.2 静态测试和动态测试

软件测试的另外两个术语是静态测试和动态测试

静态测试: 是指测试不运行的部分——只是检查和审查 。
动态测试: 是指通常意义上的测试——使用和运行软件 。

1.3 静态黑盒测试——测试产品说明书

测试产品说明书属于静态黑盒测试。产品说明书是书面文档,而不是可执行程序,因此是静态 。

测试产品说明书第一步不是马上招bug,而是站在一个高度上进行审查 :

    1. 假装自己是客户 :站在客户的角度去查看
    2. 研究现有的标准和规范 : 公司惯用语和约定、行业要求、政府标准等
    3. 审查和测试类似软件 : 了解软件的最终结果的最佳方法是研究类似软件,如竞争对手的产品 。

1.4 产品说明书的底层次测试技术

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

1. 产品说明书属性检查清单:
    完整 :是否有遗漏和丢失? 完全吗?
    准确 : 既定解决方案正确吗? 目标定义明确吗? 有没有错误?
    精确、不含糊、清晰 :描述是否一清二楚? 是否有单独解释?
    一致 :产品功能描述是否自相矛盾,与其他功能有无冲突?
    贴切 :描述功能的陈述是否必要? 有没有多余信息?
    合理 :在规定的预算和进度下,以现在的人力、工具和资源能否实现?
    代码无关 :产品说明书是否坚持定义产品,而不是定位其软件设计、架构和代码?
    可测试性 :功能能否测试? 给测试员提供的建立验证操作的信息是否足够?
2. 产品说明书用语检查清单
    产品说明书后面可能会阐明或者掩饰,也可能含糊其词——无论哪一种情况,都可视为软件缺陷

    总是、每一种、所有、没有、从不 :如果看到此类绝对或者肯定的描述,需要确认是这样的。软件测试员要考虑违反这些情况的用例。
    当然、因此、明显、显然、必然 :这些话意图说服你接受假定情况,不要中了圈套。
    某些、有时、常常、通常、惯常、经常、大多、几乎 :这些话太过模糊。
    等等、诸如此类、以此类推、例如 : 以这样的词结束的功能清单无法测试。功能清单要绝对或者解释明确。
    良好、迅速、廉价、高效、小、稳定 :这些事无法量化的用语,它们无法测试。
    处理、进行、拒绝、跳过、排除 :这些用语可能会隐藏大量需要说明的功能。
    如果......那么.......(没有否则) :找出有“如果——那么”,而缺少配套的“否则”结构。 如果没有发生会怎样。

第2章 带上眼罩测试软件

2.1 动态黑盒测试: 带上眼罩测试软件

动态黑盒测试:不深入代码细节测试软件的方法称为动态黑盒测试。 它是动态,因为在运行;同时,它是黑盒,因为检测不知道程序如何工作。

测试用例:是指进行软件测试时使用的特定的输入,以及测试软件的步骤。

2.2 通过性测试和实效性测试

测试软件有两种基本方法:通过性测试和实效性测试。

    通过性测试:实际上是确认软件至少能做什么,而不会考验其能力。
    失效性测试:纯粹为了破坏软件而设计和执行的测试用例。

2.3 等价类划分

选择测试用例是软件测试员最重要的任务。选择测试用例的方法是“等价类划分”。

    等价类划分:是指分步骤地把海量的测试用例集缩减得很小,但过程同样有效。

如何寻找等价类划分?

    在寻找等价划分时,考虑把软件中具有相似输入、相似输出、相似操作的分在一组。

2.4 边界条件

软件是很极端的——要么对要么不对。

1. 边界条件类型

    边界条件是指软件运行在计划操作界限的边界的情况。

    如果软件测试问题包含确定的边界,那么可以看看一下的数据类型:

        数值 速度 字符 地点 位置 尺寸 数量

    同时,考虑这些类型的下述特征:

        第一个 |  最后一个  最小值 | 最大值   开始   |  完成     超过  | 在内
        空     |  满       最短  | 最长      最慢   |  最快     最早  | 最迟
        最大   |  最小     最高  | 最低      相邻   |  最远

2. 测试边界

    如果建立两个等价类划分就可以找到更多软件缺陷:

        第一个划分应该包含认为正确的数值——在边界内部最后一两个合法的数据点
        第二个划分包含认为可能出现错误的数据——边界之外——一到两个非法的数据点

    提出边界条件时,一定要测试靠近边界的有效数据,即测试最后一个可能有效的数据,同时测试刚超过边界的无效数据。

    越界测试的做法通常是简单地对于最大值加一或者很小的数,例如:
        第一个减1 | 最后一个加1, 开始减1 | 完成加1, 空了再减  | 满了再加 等

3. 默认、空白、空值、零值和无

    在测试的时候,一定要考虑建立处理默认值、空白、空值、零值或者无输入等条件的等价划分。

2.5 状态测试

软件状态是指软件当前所处的条件或者模式。

状态测试要测哪些东西?

    竞争条件和时序错落:

        两个不同 的程序同时保存和打开同一个文档。
        共享同一台打印机、通信端口或者其他外围设备
        同时关闭或者启动软件的多个实例
        ......

    重复、压迫和重负:

        重复测试:不断执行同样的操作。主要查看内存泄露。
        压迫测试:是软件在不够理想的条件下运行 ——内存小、磁盘空间小等
        重负测试:是尽量提供条件任其发挥,让软件处理尽可能大的数据文件。
        ......

2.6 其他黑盒测试技术

像笨拙的用户那样做: 用户会做出各种不可思议的操作

在已经找到软件缺陷的地方再找找: 缺陷一般都会聚集在一块,因为一个错误,与它关联的也会有错误

向黑客一样考虑问题: 测试不要太绅士,黑客不会绅士。

凭借经验、直觉和预约: 经验是很宝贵的。

Last updated

Was this helpful?