广义的软件测试:
1.确认:评估将要开发的软件产品是否准确无误,是否可行和有价值
2.验证:检测软件开发的每个阶段、每个步骤的结果是否准确无误
3.测试:是指它与狭隘的测试概念统一,主要体现在编码阶段和测试阶段
软件测试的目的:是利用有限的资源找出对用户影响最深的缺陷(BUG)
测试的目的决定了如何去组织测试
(1)软件测试是为了发现错误而执行程序的过程
(2)测试是为了证明程序有错,而不是证明程序无错误
(3)一个好的测试用例在于它能发现至今未发现的错误
(4)一个成功的测试是发现了至今未发现的错误的测试
软件测试的原则
1.所有的软件测试都应追溯到用户需求
2.应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭
3.完全测试是不可能的,测试需要终止
4.测试无法显示软件潜在的缺陷
5.充分注意测试汇总的群集现象
6.程序员应避免检查自己的程序
7.尽量避免测试的随意性
软件测试的复杂性与经济性分析
1.完全测试是不现实的(穷举测试)
穷举测试:
1.输入量太大
2.输出结果太多
3.软件执行的路径太多
4.说明书存在主观性
2.软件测试是有风险的
3.杀虫剂现象:
同一种测试工具或方法测试同一类软件越多,则被测软件对测试的免疫力就越强
4.缺陷的不确定性
总结:
1.软件测试就是为发现缺陷而运行程序的过程
2.软件测试的目的就是为了尽早发现软件系统中的缺陷
1.从需求角度
1.静态测试:静态观察代码是否有误 (人工测试)
2.动态测试:运行被测软件,检查是否报错
2.从针对的对象角度
1.黑盒测试:又称功能测试或数据驱动测试(不考虑内部结构和内部特性)
2.白盒测试:又称为结构测试或逻辑驱动测试(不考虑其功能)
方法有:逻辑驱动、基路测试(主要用于软件验证)
3.从测试策略和过程的角度
1.单元测试:(又称模块测试),是针对最小单元
2.集成测试:(又称组装测试),在单元测试基础上将所有的程序有序、递增的测试
3.系统测试:将软件看作系统的一个元素,联合硬件、外设等一起测试
4.验收测试:主要由用户测试,开发和QA人员通常会在场
4.从实施组织角度
1.开发方测试(Alpha测试)
2.用户测试(Beta测试)
3.第三方测试(也称独立测试)
常见的软件测试类型
1.冒烟测试:快速测试,检测系统是否会频繁报错
2.回归测试:用自动测试工具比较适合
3.性能测试:测试软件的运行性能,常与压力测试结合进行
4.负载测试
5.压力测试
6.可用性测试
7.安装卸载测试
8.接受测试
9.恢复测试
10.安全测试
11.兼容测试
12.Alpha测试
13.Beta测试
软件测试过程模型
V模型:
测试是开发之后的一个阶段
测试的对象是软件本身
测试中容易到最后才发现严重的错误
W模型:
测试伴随整个软件开发周期
整个流程是串行的,保持一种线性的前后关系
无法迭代开发
H模型:
贯穿整个开发周期
某个阶段准备完毕即可开始测试
X模型:
前置模型
开发和测试相结合
对每一个交付内容进行测试
测试和开发结合在一起
让验收测试和开发结合在一起



