软件测试简介

版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/wei_zhi/article/details/50765774


1、软件测试概念:

软件测试:为了发现软件错误和缺陷(统称bug)而执行程序的一个过程。

软件测试是软件开发过程的重要组成部分,是用来确认一个程序的功能或性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。

 

2、软件测试目的:

1)软件测试是为了发现错误而执行程序的过程。

2)测试是为了证明程序有错,而不是证明程序无错误。 

3)一个好的测试用例是在于它能发现至今未发现的错误。 

4)一个成功的测试是发现了至今未发现的错误的测试。

 

3、软件测试原则:

1)软件开发人员即程序员应当避免测试自己的程序不管是程序员还是开发小组都应当避免测试自己的程序或者本组开发的功能模块。


2)应尽早地和不断地进行软件测试,应当把软件测试贯穿到整个软件开发的过程中,而不应该把软件测试看作是其过程中的一个独立阶段。


3)对测试用例要有正确的态度:

      第一,测试用例应当由测试输入数据和预期输出结果这两部分组成;

      第二,在设计测试用例时,不仅要考虑合理的输入条件,更要注意不合理的输入条件。 因为软件投入实际运行中,往往不遵守正常的使用方法,却进行了一些甚至大量的意外输入导致软件一时半时不能做出适当的反应,就很容易产生一系列的问题,轻则输出错误的结果,重则瘫痪失效!因此常用一些不合理的输入条件来发现更多的鲜为人知的软件缺陷。  


4)人以群分,物以类聚,软件测试也不例外,一定要充分注意软件测试中的群集现象,也可以认为是“80-20原则”。不要以为发现几个错误并解决这些问题之后,就不需要测试了。反而这里是错误群集的地方,对这段程序要重点测试,以提高测试投资的效益。


5)严格执行测试计划(用例),排除测试的随意性,以避免发生疏漏或者重复无效的工作;并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个高水平的测试。 


6)对测试错误结果一定要有一个确认的过程,一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。


7)回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见。


8)妥善保存测试用例、测试计划、测试报告和最终分析报告,以备回归测试及维护之用。

 

4、软件测试内容:

软件测试主要工作内容是验证和确认。

1)验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。(Do the right thing)


2)确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件(Do it right) 

      ①静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性。   

       ②动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。 

  

软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期间各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。

 

5、软件测试方法:

软件测试的方法和技术是多种多样的;对于软件测试技术,可以从不同的角度加以分类:

1)从是否执行程序的角度划分:静态测试、动态测试。

①静态测试:静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。

②动态测试:动态方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果。 


2)从是否关心软件内部结构和具体实现的角度划分:白盒测试、黑盒测试、灰盒测试 。

①黑盒测试:也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。

②白盒测试:也称结构测试或逻辑驱动测试,它是按照程序内部的结构测试程序,通过测试来检测产品内部动作是否按照设计规格说明书的规定正常进行,检验程序中的每条通路是否都能按预定要求正确工作。 这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。

③灰盒测试 :介于白盒测试与黑盒测试之间的,可以这样理解,灰盒测试关注输出对于输入的正确性,同时也关注内部表现,但这种关注不象白盒那样详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态,有时候输出是正确的,但内部其实已经错误了,这种情况非常多,如果每次都通过白盒测试来操作,效率会很低,因此需要采取这样的一种灰盒的方法。


3)从软件开发的过程按阶段划分有:单元测试、集成测试、确认测试、系统测试、验收测试
①单元测试:集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。   

②集成测试:把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。   

③确认测试:检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。   

④系统测试:把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。 

⑥验收测试:系统开发生命周期方法论的一个阶段,这时相关的用户或独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。它是一项确定产品是否能够满足合同或用户所规定需求的测试。

 

6、测试工程师的职责

总的目标是:确保软件的质量。

软件测试是由软件测试工程师来完成的,测试工程师的主要工作内容则是:

(1)寻找软件中的Bug(指缺陷和错误),并且是越早发现越好。

2)确认Bug的可重复性(Repro)以及Bug产生的步骤。

3)确认Bug是否被解决(Fixed)。

4)衡量软件的品质。

5)关注用户的需求。

6)测试方法、测试计划、测试平台、测试代码、测试用例、测试文档、测试报告的确定、编写和执行。

 

 

 

 

 

 

展开阅读全文

没有更多推荐了,返回首页