软件测试基础知识

最近听我的导师-小蚂蚁(博客地址:http://www.blogjava.net/lijun_li/)给大家讲的软件测试基础知识,感觉讲的挺好的,把原文贴出来跟大家共享!!!

一、软件测试概念

什么是软件测试?百度百科上,软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

其实说直白一点,就是找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

七、软件测试经验分享

文章中大概介绍了测试理论、测试策略及测试工具等,是比较入门级的,没有深入介绍。这里要说一下,测试理论要结合实际情况,进行正确有效的应用,才能发挥它的作用,因此要多实践,实践出真知。对于测试工具而言,它不是万能的,但是没有工具是万万不能的,所以要学会什么情况下,使用什么样的测试工具,进行什么样的测试,这才是最重要的,不要为了使用工具而使用。

最后,对于测试而言,要善于总结测试工作,从总结中积累自己的测试经验和特长。并且要积极主动,学会提问题,要让别人知道你想问的信息是什么。当对测试工作有了一定的了解之后,就要对自己以后的测试工作进行规划,有计划的朝自己的目标努力。过程虽然比较辛苦,当收获成长的时候,就会非常欣慰,感觉一切都值得。我们一定要趁着年轻,多学习,多积累,不要以后让自己后悔。

好了,今天就啰嗦到这里了,关于测试,永远有说不完的话题。。。未完待续

 

posted @ 2016-10-12 10:06  lynnLi  阅读(1685)  评论(0编辑  收藏  举报