一、什么是软件测试?
软件测试即使用人工和自动手段来运行或测试某个系统的过程
二、软件测试的目的是什么?
软件测试的目的在于检验他是否满足规定的需求或是弄清预期结果与实际结果之间的差距
三、为什么要做软件测试?
- 一个糟糕的测试程序可能导致任务的失败,影响操作的性能和可靠性,导致维护阶段的成本提高
- 一个好的测试程序可以降低项目的主要成本
- 一个好的测试程序可以极大地帮助你定义需求和设计
- 一个好的测试可以迫使你在工作时必须面对和处理问题,使得修改缺陷成本降低
- 一个好的测试不能弥补一个糟糕的软件项目,但是的确有助于发现许多问题并且至少使得你尽早知道你处在问题当中
四、软件测试的基础知识?
软件的生命周期:
需求分析–产品设计–编码–测试–部署到服务器–交付给客户
软件测试的基本原则:
- 测试是上下文相关的
- 穷尽测试是不可能的
- 测试要尽早介入
- 杀虫剂驳论
- 缺陷群集性
- 测试证明存在缺陷
- 无措谬论
软件开发的模型包括:
- 边做边改型
- 瀑布型
- 快速原型
- 增量模型
- 敏捷模型
- 其他模型
软件测试的模型包括:
- V模型
优点:既包括底层测试又包括了高层测试,底层测试是为了源代码的正确性,高层测试是为了使整个系统满足用户的需求。
局限性:把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段,不能体现“尽早地和不断地进行软件测试”的原则。 - W模型
优点:
1.如果测试文档能尽早提交,那么就有了更多的检查和检阅的时间,这些文档还可用于评估开发文档。
2.测试还可以尽可能早的找出缺陷所在,从而帮助改进项目内部的质量。
3.分阶段工作,方便项目整体管理。
局限性:无法支持迭代、自发性以及变更调整。 - H模型
优点:软件测试不仅仅指测试的执行,还包括很多其他的活动;软件测试完全独立,贯穿整个生命周期,且与其他流程并发进行;软件测试活动可以尽早准备、尽早执行,具有很强的灵活性;软件测试可以根据被测物的不同而分层次、分阶段、分次序的执行,同时也是可以被迭代的。
不同层次的测试活动可以是按照某个次序先后进行的,但也可能是反复的。
缺点:管理型要求高:由于模型很灵活,必须要定义清晰的规则和管理制度,否则测试过程将非常难以管理和控制;技能要求高:H模型要求能够很好的定义每个迭代的规模,不能太大也不能太小;测试就绪点分析困难:测试很多时候,你并不知道测试准备到什么时候是合适的,就绪点在哪里,就绪点的标准是什么,这就对后续的测试执行的启动带来很大困难;对于整个项目组的人员要求非常高:在很好的规范制度下,大家都能高效的工作,否则容易混乱。 - X模型
五、软件测试阶段
按测试阶段划分:
1.单元测试
2.集成测试
3.系统测试
是否覆盖源代码:
1.白盒测试
2.黑盒测试:
1.功能测试:
1、逻辑功能测试
2、界面测试
3、易用性测试
4、安装测试
5、兼容性测试
2.性能测试:
1、一般性能测试
2、稳定性测试
3、负载测试
4、压力测试
是否运行:
1.静态测试
2.动态测试
其他:
1.回归测试
2.冒烟测试
3.随机测试
4.验收测试:
1、α测试
2、β测试
3、γ测试
是否自动化:
1.人工测试
2.自动测试
软件测试阶段:
需求测试–单元测试–集成测试–确认测试