编辑: 夸张的诗人 | 2019-08-31 |
70 年代一个叫 Dave 的程序员,负责本公司的工资系统. 他使用的计算机存储空间很小,迫使它尽量节省每一个字节.Dave 自豪地将自己的程序压 缩的比其他人小.他使用的其中一个方法是把
4 位数日期缩减为
2 位,例如
1973 年为 73. 因为工资系统极度依赖数据处理,Dava 节省了可观的存储空间.Dava 并没有想到这是个很 大的问题,他认为只有在
2000 年时程序计算
00 或01 这样的年份时才会出现错误.他知道 那时会出问题, 但是在
25 年之内程序肯定会更改或升级, 而且眼前的任务比未来更加重要. 这一天毕竟是要来的.1995 年,Dava 的程序仍然在使用,而Dava 退休了,谁也不会想到 进入程序检查
2000 年的兼容性问题,更不用说去修改了. 关于 Y2K 问题的说法不一,但根本的问题是用
2 位表示年份的问题.这是一个十分典 型的软件设计缺陷.Y2K 问题涉及四个方面:硬件、操作系统、应用软件及数据. 有关千年的例子很多, 给计算机产业带来一次震惊和恐慌. 许多国家和大的计算机公司 都动用了大量的人力和物力,解决千年虫问题,尤其是解决关系到国家安全、国家支柱产业 正常运转和与百姓生活息息相关领域的计算机系统的千年虫问题. 微软作为全球最大的软件供应商,其产品涵盖了操作系统、应用软件及数据等领域,而在PC 平台上形成最为广泛的应用.关于这一问题微软对其产品进行了全面的兼容性测试. 微软自
1996 年起开始涉及有关 Y2K 问题的研究, 对此, 微软采取的是完全对外公开的 软件测试魏永强编写.doc
3 策略,其中包括产品及其他任何有关 Y2K 的信息.作为一家既面向企业用户也针对广大个 人用户的软件产品供应商,微软认为解决 Y2K 的首要问题是对产品进行全面深入的
2000 年兼容性测试. 首先,需要找到一种统一的方法来对不同的产品进行
2000 年兼容性测试;
同时,由于 微软的产品在全球得到了极为广泛的应用,因此要对产品进行不同语言的测试.至1999 年底,微软共测试了
4052 种产品,这可谓迄今为止历史上最大的软件测试工程之一;
其中, 97%达到
2000 年兼容,3%不兼容.而不兼容的产品基本都是老产品,像DOS 版本的 WORD5.0.同时,整个测试过程中,并未做任何推断性测试,即不能在未对某种语言进行 实际性测试的前提下, 而从其他语言的同种产品的测试结果进行推断 (如假设简体中文的测 试结果没问题,则简单推断韩文也不存在任何问题) .英文及其他欧洲语言中只有 5%,而20%以上的双字节语言(如大多数亚洲国家的语言)采用 UNICODE;
同时,世界各地不同 的民族采用不同的历法, 这些都是测试需要考虑的问题. 测试时尽力确保最新产品和最大量 使用的产品以及采用关键技术,如ODBC 的产品的
2000 年兼容测试,然后再来测试客户有 特别需求的,采用某项专有技术的产品. 从上面的两个例子中, 我们可以看出软件缺陷是造成软件故障的主要问题, 也是软件测 试的主要对象. 那么什么是软件缺陷故障?什么是软件故障?软件测试定义为何?它们之间 的关系为何?下面给出一组有关软件测试的相关术语, 明确它们之间的关系, 进而给出软件 测试的概念. 缺陷(bug) 偏差(variance) 老化(age) 缺点(defect) 失败 (failure) 问题(problem) 矛盾(inconsistency) 错误(error) 事故(incident) 异常(anomaly) 谬误(fault) 在上述名词中,有一些含义相近,属于一个范畴.第一类是缺陷、缺点和偏差,它们是 一类意义相近的概念,我们不妨把它们统称为缺陷(bug) .它们都是软件开发过程潜在的隐 患, 这些缺陷可能在软件投入运行后出现, 使得软件的性能和可靠性等方面与系统的设计要 求不符;