软件测试
什么是软件测试: 在规定条件下对产品或程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。 硬件测试,软件测试,嵌入式测试,我们主攻软件测试方面, 举例: 嵌入式测试:遥控灯,(需要嵌入产品,控制开关)。 硬件测试:生产手机,(屏幕,触碰,温度)。 软件测试:在规定情况下对一个产品、应用程序进行操作,(有一个条件:功能测试,需求文档,)。 软件测试职业发展: 按照年限划分: 初级:1-3年 中级:3-5年 高级:5年以上 软件缺陷产生的原因:
- 需求解释有错误
- 用户需求定义错误
- 需求记录错误
- 设计说明有误
- 编码说明有误
- 程序代码有误
- 测试错误
- 问题修改不正确
- 不正确的结果是由于其他的缺陷而产生的。
缺陷发现的越早,修复这个缺陷的代价就越小。 软件测试环境: 测试环境=硬件+软件+网络; 硬件:笔记本,服务器(硬件测试); 软件:不同操作系统; 针对web端的:不同浏览器:ie,火狐,谷歌 网络:局域网、互联网。 **
测试流程:
** 1.1 {详细概要设计->编写代码->自测->提测} 1.立项->产品说明书->需求文档->需求文档评审->{ ->}2.搭建测试环境 1.2{编写测试计划->编写测试用例->测试用例的评审->} ->}搭建测试环境->冒烟测试->功能测试->bug管理(禅道)->回归测试->验收->上线
立项:公司领导层确认我们要生产什么产品,开立项会; 如果有产品人员:会出一个产品说明书(prd); 如果有需求人员:需求人员编写需求文档;(有产品就出产品说明书,有需求人员就编写需求文档) 需求文档评审:需求人员下发,谁编写的需求文档就组织(开发、测试、需求人员、项目经理都会参加会议)评审需求,判断需求文档中的东西符不符合用户使用; 1.1详细概要设计:设置表、字段; 编码:在公司的开发环境下进行编码;(实现功能) 自测:开发人员自测代码; 提测:提交给测试人员进行测试; 1.2 编写测试计划:指定谁来测试,在哪一天测什么东西,在那个环境上测试东西; 编写测试用例:注册或别的什么功能的测试用例; 测试用例的评审:参加需求评审的人都要参加测试用例的评审;(测试人员组织) 搭建测试环境:(如果公司有测试环境就不需要搭建,如没有,就自己打环境)把项目部署在环境上,进行测试; 冒烟测试:先测主功能能否实现; 功能测试:测试功能; bug管理:如果测试有问题,就把问题提交到对应的bug管理工具里,指派给对应的开发修改,修改完进行测试; 回归测试:这个版本中的bug有没有修改,修改完之后是否有引发了新的bug;(如果按照测试用例测试过后没有问题,就进行验收) 验收:(公司里会有验收环境;参加验收人员:负责对应需求的开发人员、测试人员自己、本项目经理、甲方公司客户),功能测试实现完毕才能进行上线; 上线:项目上线。
软件测试分类
按阶段划分:单元测试、集成测试、系统测试、验收测试; 单元测试、集成测试、系统测试、验收测试 单元测试:测试最小的一个函数; 集成测试:模块与模块之间组成的接口,做接口测试; 系统测试:对应项目功能进行测试; 验收测试:功能测试完毕之后进行回归,回归之后进行验收; 按是否运行程序划分:静态测试、动态测试; 静态测试:不是实际运行被测试软件,而只是静态的查看程序代码、文档、界面中存在的错误的过程; 动态测试:实际运行被测程序,输入相应的测试数据,查看得到的数据与期望数据是否相符; 按是否查看源代码划分:白盒测试、黑盒测试; 黑盒测试包含功能测试、性能测试; 功能测试可以细分为易用性测试、安装测试、兼容性测试、逻辑功能测试、界面测试; 性能测试可以分为一般性能测试、稳定性测试、负载测试、压力测试; 黑盒白盒测试 黑盒测试:测试这个软件,不管内部是如何是实现的,只需要给一个结果,要拿到一个预期的结果;不需要关注代码是如何实现的; 白盒测试:需要观察内部代码块具体的逻辑是如何设计的,看代码块能否实现; 按其他分类:回归测试、冒烟测试、随机测试。 回归测试:开发修改bug之后,查看这个版本中的bug是否被修改完毕,是否又产生了新的bug; 冒烟测试:主功能测试,先验证软件的基本功能是否实现,是否具备可测性; 随机测试:所有输入数据都是随即生成的。
软件开发模式 线性模式、渐进式模式; 迭代和增量; 迭代:反复求精的过程; 增量:逐快增加; 迭代:第一次迭代时,模块已经写好了,只不过内容没有填充,第二次迭代,只填充模块里具体实现的方法,第三次迭代时,填写第二次迭代时候没有实现的方法; 增量:模块实现后,只实现对应的功能,下次迭代时,直接把这个模块写上去,然后增加模块的功能。
软件生命周期 V模型,W模型,螺旋模型,瀑布型生命周期,迭代模型,快速原型模型 边做边改模型:没有规格说明,没有设计,只是跟着客户的需求一次次进行修改,知道满意为止; 瀑布型生命周期:一步步实现,先分析,设计,编码,测试,一套流程; 优点: 为项目提供了阶段划分的检查点; 当前阶段完成后,只需要关注后续阶段; 缺点: 每一步都必须保证上一步已经实现了。 原型模式:听取用户意见–>建造修改原型–>测试运用原型。 V模型: V模型的左边下降是开发过程各阶段,左边上升是测试过程的各阶段 V模型的优点在于它非常明确的标明了测试过程中存在的不同级别,并且清楚的描述了这些测试阶段和开发各阶段的对应关系。
优点:
- 每个阶段都清晰明了,便于控制开发的每个过程;
- 既包含单元测试又包含系统测试;
缺点:
- 开发在前,测试在后,如果前期出现问题,可能发现不了;
- 测试和开发串行。
W模型: V模型的发展,而且测试对象不只是程序,需求、功能和设计也要测试。开发和测试同时进行,有利于尽早发现问题;
优点:
- 测试伴随软件的整个生命周期,在求分析结束之后,就可以进行需求分析测试了;
- 测试与开发时并行独立进行的;
缺点:
- 有些项目,开发过程中没有文档的产生,所以没办法使用W模型;
- 对于需求和设计的测试技术要求很高,实践很难。
|