软件测试基础

从软件BUG的巨大损失和影响来认识软件测试

1、一个BUG引发证券业400亿损失
2000年日本一个证券公司(瑞穗证券)的一个交易员以不合理的价格进行交易,操作时出现错误,1日元售出了61万股,发现时无法取消,导致整个股市动荡。这个证券公司的损失超过400亿。

这是一个开发时的Bug,非常不起眼,而且在特定组合条件下才会出来,在多次组合条件下才会出现,因此多次测试、验收中都没有人发现。

扩展阅读:400亿天价的BUG

2、1900年AT&T公司断网,损失超过7500万
在软件升级中出了一行有Bug的代码,导致114台交换机每六秒宕机重启一次,所有长途电话服务暂停9个小时。造成7500万的电话通话中断,20万张机票没法按时预定。

3、著名的“千年虫”
“千年虫”问题的根源始于60年代。当时计算机存储器的成本很高,如果用四位数字表示年份,就要多占用存储器空间,就会使成本增加,因此为了节省存储空间,计算机系统的编程人员采用两位数字表示年份。
因此当系统进行(或涉及到)跨世纪的日期处理运 算时(如多个日期之间的计算或比较等),就会出现错误的结果,进而引发各种各样的系统功 能紊乱甚至崩溃。

扩展阅读:千年虫(计算机2000年问题)

软件测试学什么?

  • 软件测试的定义
  • 测试遵行的准则
  • 软件测试的分类及适用场景
  • 什么时候开始测试?测试方案如何设计
  • 测试流程是怎么样?怎么样提Bug?
  • 为什么要做自动测试?怎么做?
什么是软件测试?

软件测试是对程序能够按预期运行建立起的一种信心。
—– Bill Hetzel, 1973 (早期定义)

测试中为发现错误而执行程序的过程。
—– Myers, 1979 (经典定义)

使用人工或自动的手段来运行或测量软件系统的过程,以检验软件系统是否满足规定的要求,并找出与预期结果之间的差异。
—– IEEE定义(ISO/IEC/IEEE 29119)

软件测试所遵循的原则
  • 测试显示缺陷的存在,但不能证明系统不存在缺陷
  • 穷尽测试不是可能的,应设定及时终止的条件
  • 软件测试应该尽早进行
  • 软件缺陷具备集群特性
  • 测试的杀虫剂悖论
    采用同样的测试用例,测试方法多次重复测试某一个模块,就不能发现新的BUG,所以测试用例和测试方法,要不定期评审,定期增加。
  • 测试的二八原则
    测试时间和资源总是有限的,测试总是存在风险,重点测试软件中20%的重点模块。
  • 测试活动依赖于测试背景
    如金融行业软件对安全性测试要求高,电信行业对并发性要求高。
软件测试的分类

按测试阶段分类:单元测试,系统测试,集成测试,验收测试

(未完待续)

谢谢阅读,感谢支持~