各种测试方法的问题

在 Exploratory Software Testig 一书中, James Whittaker在第二章中, 提到各种测试方法的不足:
Defect Preventation
从开发人员的角度来说, 他们希望藉由 design review, code review, static analysis tool, 和 unit test, 来增加软件的质量.
但是作者觉得这些方法都有些根本的问题:
(1) 开发人员通常不是个好的测试人员
- 开发人员想的是"如何才能实现这个功能", 而测试人员则是从"如何才能攻破这个功能" 来思考.
- 因此开发人员会有盲点, 需要有另一组人从不同观点来思考
- 但是不代表开发人员不用作测试, 像是 formatting, data validation 和 error handling 等等都需要及时处理和验证. 等到测试人员发现, 时间会花得很长, 也修正的代价也很高
(2) 静止状态的程序不能完全代表真的测试目标
- 有很多错误是和执行环境有关系, 通常在开发环境这些错误不会发生的
(3) 缺乏客户真正数据
- 有些错误是和客户真实的数据有关, 或者需要实行一段时间后, 累积效果出现后才会有问题
- 可是开发人员通常没有这些数据, 并且也没有这么长的测试时间, 所以无法找出这类型的错误
Defect Detection
通常分成手动测试和自动化测试两种:
自动化测试
- 测试人员不一定会是好的开发人员, 有些人可以, 有些人可能不行.
- 测试程序也是会有 bug, 一旦出现后, 测试人员需要更多时间来除错, 维护它的正确性和强固性. 所以你要花在测试的时间多, 还是应该花在维护测试程序的时间多?
- 此外测试程序所在的执行环境, 以及所用的测试数据, 不是客户的数据, 所以效果还是有限. 并且客户可能也没有勇气, 让你在他的 production 执行.
- Oracle Problem 的问题是最难处理的, 也就是当你执行完测试时, 你无法确认是否真的实行正确. 像是 install 完毕, 甚么叫做 install 成功, 是所有 service 都启动, 是所有档案都复制完毕, 还是所有 registry 写正确. 你可能无法列的出来, spec 也不会写甚么叫做功能运作正确.
手动测试
- 也是由人来进行测试, 需要充分发聪明才智, 设计出真实客户环境的数据和使用状况. 尤其是有关 business logic 更是需要人脑介入.
- 手动测试比自动化测试强的地方, 是因为现实状况有太多不确定的因素, 有太多 scenario, 会导致测试程序员小的情况太多, 错误时都需要人脑介入, 一一来跟踪.
- 可是手动测试很慢, 无法反复使用, 测试步骤可能不一定有规律, 也不一定都能重复.

本文转自:http://www.spasvo.com

?

?

时间: 2024-10-07 05:16:18

各种测试方法的问题的相关文章

MCU的测试方法

请介绍一下MCU的测试方法 MCU从生产出来到封装出货的每个不同的阶段会有不同的测试方法,其中主要会有两种:中测和成测. 所谓中测即是WAFER的测试,它会包含产品的功能验证及AC.DC的测试.项目相当繁多,以HOLTEK产品为例最主要的几项如下: l         接续性测试:检测每一根I/OPIN内接的保护用二极管是否功能无误. l         功能测试:以产品设计者所提供测试资料(TEST PATTERN)灌入IC,检查其结果是否与当时SIMULATION时状态一样. l      

web测试方法总结

一.输入框 1.字符型输入框: (1)字符型输入框:英文全角.英文半角.数字.空或者空格.特殊字符"~!@#¥%--&*?[]{}"特别要注意单引号和&符号.禁止直接输入特殊字符时,使用"粘贴.拷贝"功能尝试输入. (2)长度检查:最小长度.最大长度.最小长度-1.最大长度+1.输入超工字符比如把整个文章拷贝过去. (3)空格检查:输入的字符间有空格.字符前有空格.字符后有空格.字符前后有空格 (4)多行文本框输入:允许回车换行.保存后再显示能够保存

[有码有真相]python unittest2 源码解读及各类运行测试方法示例

一.注意环境: python2.7 unittest2 [定制修改] 参见本人博客 python unittest 深入failfast及实际应用[示例] windows10 二.代码自说话: # coding:utf-8 ''' Created on 2015年9月10日 @author: laughlast ''' import os import sys import copy import unittest2 import HTMLTestRunner def is_prime(numb

《软件测试方法和技术》 读书笔记

<软件测试方法和技术> 读书笔记 2014-07-17 第一章 引论  1.3 什么是软件测试  1.4 软件测试与软件开发的关系第二章 软件测试基本概念  2.1 软件缺陷  2.3 软件测试的分类  2.4 测试阶段  2.5 软件测试的工作范畴第三章 软件测试方法  黑盒测试    边界值测试    等价测试      报表日期      三角形    基于决策表的测试      NextDate函数  白盒测试    语句覆盖    判定覆盖    条件覆盖    判定条件覆盖   

路由器吞吐量测试方法

路由器LAN口设置成192.168.1.1,接在LAN口的PC IP地址是192.168.1.2.WAN口设置成192.168.10.1,接在WAN口的PC IP地址是192.168.10.2. 测试从LAN口到WAN口是直接就可以的,只要把吞吐量测试软件设置成两台PC的地址即可,LAN口发送数据包到WAN口默认是不阻止的. 但是测试从WAN口到LAN的吞吐量,必须设置端口转发,不然路由器不会转发WAN口的请求到LAN口,说的是为了安全起见.为了避免麻烦,可以把LAN口的PC设置成DMZhost

软件测试方法分类

软件测试方法种类繁多,有白盒测试.黑盒测试.静态测试.动态测试.集成测试等等,记忆起来容易混乱,傻傻分不清楚,如果把软件测试方法进行分类, 就会清晰很多.现在小峰把常用的软件测试方法列出来,让大家更容易区分记忆. 1.从是否关心软件内部结构和具体实现的角度划分(按测试分类) 白盒测试.黑盒测试.灰盒测试 (1)白盒测试:又称为结构测试或逻辑驱动测试,是一种按照程序内部逻辑结构和编码结构,设计测试数据并完成测试的一种测试方法. (2)黑盒测试:又称为数据驱动测试,把测试对象当做看不见的黑盒,在完全

软件测试方法汇总

软件测试方法种类繁多,记忆起来混乱, 如果把软件测试方法进行分类, 就会清晰很多. 我参考一些书籍和网上的资料, 把常用的软件测试方法列出来, 让大家对软件测试行业有个总体的看法. 从测试设计方法分类 测试名称 测试内容 Black box黑盒测试 把软件系统当作一个"黑箱",无法了解或使用系统的内部结构及知识.从软件的行为,而不是内部结构出发来设计测试. White box白盒测试 设计者可以看到软件系统的内部结构,并且使用软件的内部知识来指导测试数据及方法的选择. Gray box

Xcode自带iOS测试方法

在说Xcode自带测试方法前先讲下程序在内存中的空间划分, 一般可分为5个部分: #1. BSS段, 存放未初始化的全局变量. BSS是英文Block Started by Symbol的简称.BSS段属于静态内存分配. #2. 数据段, 存放已初始化的全局变量和全局静态变量. 数据段属于静态内存分配 #3. 代码段, 存放程序执行代码 #4. 堆      , 存放进程中被动态分配的内存段. #5. 栈      , 存放函数的参数值和局部变量, 由编译器自动分配和释放. 常说的内存管理是对堆

web应用程序测试方法和测试技术详述

1.界面测试 现在一般人都有使用浏览器浏览网页的经历,用户虽然不是专业人员但是对界面效果的印象是很重要的.如果你注重这方面的测试,那么验证应用程序是否易于使用就非常重要了.很多人认为这是测试中最不重要的部分,但是恰恰相反界面对不懂技术的客户来说那相当关键,慢慢体会你会明白的. 方法上可以根据设计文档,如果够专业的话可以专业美工人员,来确定整体风格页面风格,然后根据这个可以页面人员可以生成静态的HTML,CSS等甚至生成几套不用的方案来讨论,或者交给客户评审,最后形成统一的风格的页面/框架.注意不

Web 常用功能测试方法

功能测试就是对产品的各功能进行验证,根据功能测试用例,逐项测试,检查产品是否达到用户要求的功能.常用的测试方法如下: 1. 页面链接检查:每一个链接是否都有对应的页面,并且页面之间切换正确. 2. 相关性检查:删除/增加一项会不会对其他项产生影响,如果产生影响,这些影响是否都正确. 3. 检查按钮的功能是否正确:如update, cancel, delete, save等功能是否正确. 4. 字符串长度检查: 输入超出需求所说明的字符串长度的内容, 看系统是否检查字符串长度,会不会出错. 5.