软件测试概念以及目的
软件测试概念
在规定的条件下对程序进行操作,以发现错误,对软件质量进行评估。
测试的目的<br>
发现bug、提高质量、降低成本
软件测试的对象<br>
1.根据软件的定义,软件包括程序、数据、文档,<br>所以软件测试并不仅仅是程序测试。软件测试贯穿于整个软件生命<br>周期中。<br>
2.由于在整个软件生命周期中,各阶段有不同的测试对象,形成了不<br>同开发阶段的不同类型的测试。需求分析、概要设计、详细设计以及<br>程序编码等各阶段产生的文档,包括需求规格说明、概要设计规格说<br>明、详细设计规格说明以及源程序,都应作为“软件测试”的对象。<br>
软件测试原则
1.所有的软件测试都应追溯到用户需求<br>2.应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭<br>3.完全测试是不可能的,测试需要终止<br>4.测试无法显示软件潜在的缺陷<br>5.充分注意测试中的群集现象<br>6.测试工程师应避免执行自己写的测试用例<br>7.尽量避免测试的随意性<br>
软件测试分类
按阶段划分<br>
单元测试:单元测试又称为模块测试(unit testing),是针对代码中函数或者方法的测试。<br>(在实际中,单元测试工作基本上都是开发人员在做)
集成测试:集成测试又称为接口测试,是针对程序接口的一种测试。<br>接口:模块与模块之间的耦合<br>(在实际中,单元测试工作基本上都是开发人员在做<br>)
一次性集成
把所有模块组合成一个整体后进行测试
<b>可能会产生的问题:</b><br>容易出现混乱,因为测试时可能发现一大堆<br>问题,但每个故障的定位和纠正问题很难。<br>
系统测试<br>
什么是系统测试(System Testing)<br>
1.将已经确认的软件、计算机硬件、外设、<br>网络等其他元素结合在一起,进行信息系<br>统的各种组装测试和确认测试.<br><br>2.系统测试是针对整个产品系统进行的测试<br>,目的是检查系统是否满足了需求规格的<br>定义,找出与需求规格不符或与之矛盾的<br>地方,从而提出更加完善的方案。<br><br>3.对象不仅仅包括需测试的软件,还要包含<br>软件所依赖的硬件、外设甚至包括某些数<br>据、某些支持软件及其接口等。<br>
系统测试范围<br>
功能、性能、界面(UI)、兼容性、配置、安装、卸载、数据库等<br>
子主题
验收测试<br>
按是否运行程序划分<br>
按是否查看代码划分<br>
黑盒测试
把 软件看成一个黑盒子,不管内部逻辑和内部特性,只依据规格说明书检查程序的功能是否符合功能说明
白盒测试
又称为结构测试。着重于程序内部结构和算法,不关心功能和性能指标。<br>
灰盒测试
介于白盒和黑盒测试之间,基于程序运行时刻的外部表现同时又结合程序内部逻辑结构来设计用例,执行程<br>序并采集程序路径执行信息和外部用户接口结果的测试技术。<br>
其他划分<br>
回归测试<br>
对软件的新版本测试时,重复执行上一个版本测试时使用的测试用例(有效用例)。防止出现“以前没有问题的地方现在出<br>问题了” 。<br>
冒烟测试(BVT测试(Build Verification Test ))<br>
冒烟测试的对象是每一个新编译需要正式测试的版本,目的是确认软件基本功<br>能正常,可以进行后续的正式测试工作。<br>
随机测试(又名猴子测试)<br>
测试数据是随机产生的,在测试用例之外。只能作为一个测试的补充。
敏捷测试(敏捷开发引发)<br>
首先敏捷测试(Agile testing)是测试的一种,原有测试定义中通过执行被测系统发现问题,通过测试这<br>种活动能够提供对被测系统提供度量等概念还是适用的。<br>
TDD(测试驱动开发)<br>
测试驱动开发的基本思想就是在开发功能代码之前,先编写测试代码。也就是说在明确要开发某个功能后,<br>首先思考如何对这个功能进行测试,并完成测试代码的编写,然后编写相关的代码满足这些测试用例。然后<br>循环进行添加其他功能,直到完全部功能的开发。<br>
软件测试风险
风险界定
软件测试中的软件风险分析是根据预测软件将出现的风险,<br>制定软件测试计划并排列优先等级,风险分析是对软件中潜<br>在的问题进行识别、估计和评价的过程。<br>
风险内容
进度风险
质量风险
人员风险
变更风险
成本风险
优秀的软件测试工程师应具备的技能<br>
1.计算机相关知识,能够熟练使用常用的管理工具<br>2.开发语言:C/C++,Java,Shell。<br>3.数据库:Oracle,MySQL等数据库知识<br>4.操作系统:UNIX,Linux等<br>5.测试工具,能够熟练使用至少一种自动化/性能测试<br>6.网络基本知识,能够独立完成测试环境的搭建。<br>7.软件基础知识:软件工程,软件生命周期,测试理论和测试方式有较深的理解。<br>8.软件测试技术,方法,流程,测试文档编写,能独立设计和执行测试用例,提交完整的bug, 编写测试报告。<br>9.质量管理知识,如CMMI以及ISO 9001等。
测试工程师的职责<br>
1.依据需求文档及设计文档,编写测试用例;
2.完成产品的系统测试;
3.依据测试用例执行手工/自动化/性能/兼容性等测试,反馈跟踪产品BUG;
4.测试工具/系统的研究和应用;
5.更新测试用例内容
6.验证修正的缺陷
7.编写测试报告
8.完成测试相关的其它任务(1写联机帮助2培训客户3编写测试总结)<br>