一、软件测试概念
什么是软件测试?百度百科上,软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
其实说直白一点,就是找bug。
二、软件测试目的
软件测试的目的,就是基于概念而言的。其目的大概分为以下几种:
1.发现软件的缺陷
2.提高软件质量
3.软件开发,测试过程改进
4.评估软件质量
5.降低公司对软件的维护成本
6.降低软件发布后,对公司负面影响的风险
三、软件测试模型
常见的软件测试模型包括V模型、W模型、H模型、X模型和前置模型。这里暂且介绍常用的V模型及W模型。
1.V模型
V模型是最具有代表意义的测试模型。V模型是软件开发瀑布模型的变种,它反映了测试活动与分析和设计的关系 。
用户需求 验收测试 需求分析和系统设计 确认测试和系统测试 概要设计 集成测试 详细设计 单元测试 编码
1)从左到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系 。
2)左边依次下降的是开发过程各阶段,与此相对应的是右边依次上升的部分,即各测试过程的各个阶段。
优点:V模型的价值在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。
缺点:仅仅把作为在、及编码之后的一个阶段;忽视了测试对,的验证,一直到后期的才被发现。
2.W模型
W模型由Evolutif公司公司提出,相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,明确表示出了测试与开发的并行关系。
W模型中测试与开发对应关系如下:
开发:需求分析、概要设计、 详细设计、 编码、 软件集成、系统集成、部署
↑ ↑ ↑ ↑ ↑ ↑ ↑测试:需求评审、概要设计评审、详细设计评审、单元测试、集成测试、系统测试、验收测试优点:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。
例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。
局限性:在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。
四、软件测试基本流程
根据上述的W模型,软件测试基本流程包括如下:
1.测试需求分析
2.测试计划
3.测试设计(测试策略、测试用例)
4.测试执行(手工测试、测试工具)
5.缺陷跟踪
6.回归测试
7.编写测试报告
这里要注意,一般产品有需求之后,会有需求评审会,测试会一并参加,并需要在会议上积极发言,提出自己不清楚或有疑问的需求点。这样更有利于后期测试用例的编写。
测试流程是这样,但是,还是要真正动手测试,才能更加深刻的理解软件测试流程中的每个阶段含义。
五、软件测试的基本方法
1.测试技术原理
1)黑盒测试,主要有等价类划分法、场景法等
2)灰盒测试
3)白盒测试,主要有静态测试、动态测试
4)探索性测试
2.测试策略
测试策略大概分为以下几种:
数据和数据库完整性测试、接口测试、集成测试(业务流程测试)、功能测试、用户界面测试(用户友好性测试)、性能测试、浏览器兼容性测试、负载测试、强度测试、安全性和访问控制测试、故障转移和恢复测试、配置测试、安装测试。
我们要根据测试处于开发、测试的对应阶段,分析测试需求,合理的去应用测试技术原理和测试策略。要具体情况具体分析。
六、软件测试工具
1.功能测试工具
1)WinRunner(Mercury公司)
2)Robot、XDE tester(IBM公司)
3)TestComplete
4)Ruby+watir(开源)
2.单元测试工具
1)DUnit(Delphi)
2)JTest、Junit(java)
3)NUnit(.NET)
3.性能测试工具
1)LoadRunner(Mercury公司)
2)Apache Jmeter(开源)
3)Siege(开源)
4)Robot(IBM公司)
5)eHealth
4.缺陷跟踪管理工具(开源)
1)Bugzilla
2)禅道
3)redmine
4)Bugfree
5)Mantis
5.用例管理工具
1)TestLink
2)TestManager(Rational测试解决方案中,推荐的测试用例管理工具)
3)禅道
6.自动化测试工具(app)
1)monkeyrunner
2)appium
3)Robotium
4)UI Automator