软件测试绪论(一)
一.软件测试的发展历史
1.什么是软件
伴随着1946第一台计算机的产生,软件也随之产生了。
软件现在充斥着我们生活的方方面面。
2.软件测试的产生
(1)20世纪50年代,英国科学家图灵给出了程序测试的原始定义。他认为,测试是证明程序正确性的一种极端实验形式。
(2)直到60-70年代,软件危机出现以后,人们才逐渐意识到测试的意义。
(3)1999年,美国Los Angeles召开的第21届国际软件工程会议,将软件测试作为一个技术专题展开,以改善软件开发过程,提高软件质量。
(4)2001年,我国首次召开的全国测试学术性会议,将软件测试作为一个主要的议题,以推进我国软件测试工作的研究。
3.软件测试产生的根本原因
(1)软件复杂度
①程序规模的爆炸性增长
②软件的算法复杂度提高
(2)市场竞争和行业发展的需要
①同行之间的产品竞争
②用户需求和认知水平的提升
4.软件测试的发展
(1)国内
①处于起步和迅猛发展的阶段
②大中型公司已经开始重视测试,但有很多小公司不太看重测试
③主要以手动测试为主,自动化测试为辅
④流程和规范上还不是非常健全
(2)国外
①处于成熟,规范和革新的阶段
②软件企业普遍非常重视软件测试
③手动测试和自动化测试的地位同等重要
④流程和规范已经形成体系,着眼于过程改进和外包合作
二.软件测试的定义和原则
1.软件测试的定义
(1)在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程 --- 维基百科
(2)使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别 --- IEEE 1983
2.软件测试的原则
(1)测试应该尽早进行,最好在需求阶段就开始介入,因为最严重的错误不外乎是系统不能满足用户的需求。
(2)程序员应该避免检查自己的程序,软件测试应该由第三方来负责。
(3)设计测试用例时应考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况下还要制造极端状态和意外状态,如网络异常中断、电源断电等。
(4)应该充分注意测试中的群集现象。
(5)对错误结果要进行一个确认过程。一般由A测试出来的错误,一定要由B来确认。严重的错误可以召开评审会议进行讨论和分析,对测试结果要进行严格地确认,是否真的存在这个问题以及严重程度等。
(6)制定严格的测试计划。一定要制定测试计划,并且要有指导性。测试时间安排尽量宽松,不要希望在极短的时间内完成一个高水平的测试。
(7)妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。
三.软件测试技术分类
2.按执行过程:手工测试、自动化测试;
3.按内容划分:功能测试、易用性测试、兼容性测试、文档测试等
4.按用例设计:黑盒测试、白盒测试、灰盒测试;
(1)其他:随机测试、冒烟测试、回归测试
四.测试人员的能力要求和职业前景
1.能力要求
(1)他们是探索者
(2)他们是故障排除员
(3)他们不放过任何蛛丝马迹
(4)他们具有创造性
(5)他们是群追求完美者
(6)他们判断准确
(7)他们注重策略和外交
(8)他们善于说服
2.职业前景
四.软件测试的工作流程
1.软件生命周期 --- 软件从诞生到淘汰的全部过程
(1)软件声明周期中的主要阶段
①计划阶段
②需求阶段
③设计阶段
④开发和测试阶段
⑤部署和维护阶段
⑥升级和淘汰阶段
2.软件开发模型 --- 软件开发全部过程、活动和任务的结构框架
--- 软件开发模型用于清晰、直观的表达软件开发的全过程,明确规定要完成的主要活动和任务,用来作为软件项目工作的基础。
(1)瀑布模型
(2)螺旋模型
(3)敏捷开发模型
3.软件测试流程
(1)测试计划阶段
(2)测试设计阶段
(3)测试实施阶段
(4)测试评审阶段