软件测试的定义(为了发现程序中的错误而执行程序的过程)
1.为了发现程序员在开发中存在的代码以及逻辑错误
2.审核产品的完成是否符合用户的需求
3.提高客户的体验
4.交付更高质量的产品
软件测试的过程阶段(1.计划 2.设计 3执行 4评估 5验收)
1.计划测试:编写测试计划,参考需要规格说明书 项目总体计划 测试范围 进度安排 人力物力的分配 整体测试的制定 风险评估指定 一般由测试主管编写
2.设计阶段:编写测试用例 参考需求分析 概要设计 详细设计等文档
3.执行阶段:先搭建测试环境,执行预测,判断当前版本是否可以测试,如果测试通过正式进入系统测试,遇到问题提交BUG,对BUG进行跟踪,具体测试轮次由开发质量和版本复杂程度决定。
4.评估阶段:出测试报告,对整体过程做总结,对当前版本质量评估。
5.验收阶段:出用户手册,操作指引,公司严格评审流程,保证每一步输出的有效。
V模型的优缺点:
优点:
1 每一个阶段都清晰明了,便于控制开发的每一个过程。
2 既包含单元测试又包含系统测试。
缺点:
1 测试介入的比较晚,对于前期的一些缺陷无从发现和修改。
2 测试和开发串行。
1.需要分析:明确客户需要是什么,需要软件做成什么样子,有什么功能。
2.概要设计:主要是架构的实现,搭建架构,表述个模块功能、模块接口连接和数据传递的实现等项事物。
3.详细设计:各个模块进行深入分析,对各模块组合进行分析分,这阶段需要伪代码级别,已经把程序的具体实现功能,现象等描叙出来。其中需要包含数据库设计说明。
4.编码:按照详细设计好的模块功能表,编程人员编写出实际代码。
5.单位测试:软件中的最小可测试单元进行检查和验证(一般开发完成)
6.集成测试:在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。
7.系统测试:把软件系统搭建起来,按照软件规格说明书中所需求,测试软件性能功能等是否符合用户需求,在系统中运行是否存在漏洞。(测试用例来进行测试)
8.验收测试:用户根据需要说明书来做相应测试,以确实软件达到效果。(需要谁提出来就是谁验收)
验收测试分类:1.(alpha)测试:一种前期的用户测试(内部测试)
2.(beta)测试:后期用户测试,(大型游戏公测)
优点
1 测试伴随着软件的整个生命周期,例如,在需求分析结束后就可以进行需求分析测试。
2 测试于开发是并行独立进行的。
缺点
1 对有些项目,开发过程中根本没有文档产生,故W模型无法使用。
2 对于需求和设计的测试技术要求很高,实践起来很困难。
敏捷开发和测试
敏捷开发
敏捷开发是针对传统的瀑布开发模式的弊端而产生的一种新的开发模式,目标是提高开发效率和响应能力。敏捷开发以用户的需求进化为核心,采用迭代、循序渐进的方法进行软件开发。
由于版本节奏比较快,开发与测试几乎并行,一个版本周期内会有两版在推动,也就是上图中提到的波次发布,波次发布用于尝试新加入的功能,做小范围快速的开发,验证和发布,为下个大版本的功能做实验和调研。快速发版的需求要求测试快速响应,敏捷测试模式适应项目需求。
模型优势:
工作任务划分清晰,工作效率较高
与开发和产品沟通紧密,团队协作性强
测试介入到整个项目的所有会议中,对整体版本信息情况把控全面
迅速占有市场,添加新的功能,吸引更多用户使用,提升用户体验度
模型的缺陷:
模块提交较快,测试时较有压迫感