|
http://www.51testing.com/html/10/n-234010.html
作者: 孙萌
从学校毕业后,我开始了一个全新的行业―软件测试。我所学的测试知识只有软件工程教材中的一个章节,刚接触这个行业,对软件测试一无所知,既不知道该测试什么,也不知道该如何开始测试。下面是我学习软件测试两个月的一点体会,与大家一起分享!
一、从事软件测试需要的知识
首先,要具备软件工程的基本知识,理解软件生命周期过程中各阶段需要做的工作,及需要达到的目标。其次,需要具备一定的编程经验或者是参与开发项目的经验.然后,需要掌握软件测试方面的知识,包括测试的定义、对象、目的、测试的方法、测试过程等。前两方面我在上学期间均有过接触,因此,就直接进入到了测试工作中。
二、测试要解决的问题是什么
一般来说,大家都会认为程序员按照软件的需求说明书编写好了可以实现需求中定义功能的程序,那么这个软件就可以投入使用了.但是,在用户应用的过程中,会发现一系列的错误,给用户带来很多麻烦.那么如何最大程度地减少软件给用户带来的麻烦,这时软件测试就发挥了很大的作用.因此,软件测试要解决的问题就是寻找软件中未发现的隐藏的缺陷.
三、何时开始测试
按照软件测试的H模型,我们可知,测试是一个独立的过程,它贯穿于软件生命周期的整个过程中,于软件生命周期中的各流程并发进行。因此,我们可以说在软件的整个生命周期中,越早开始测试越好。
四、如何开展测试
这一步可以说是测试工作的重点,关于如何开展测试,我总结了如下的步骤。我认为软件测试基本可以分为测试需求分析,测试计划制定、测试用例设计、测试执行、测试评价这五个步骤,根据测试类型的不同,选择各步骤开始的时间。如果是同一公司中的开发部门与测试部门共同完成的软件项目,那么测试的各步骤需要与开发的各步骤并发执行,如果是作为第三方测试机构,那么上述测试的各步骤开始就要在软件已经成形之后了。
软件测试的第一步是识别测试需求。测试需求即了解测试的规模、测试的内容、复杂程度以及存在的风险。经过测试需求分析,我们可以得出测试要点,这里的测试要点可以包括系统功能方面的测试要点,比如验证系统的某项功能是否符合客户的要求;也可以包括非功能方面的,如验证系统的易用性、可靠性等。
接下来是测试计划的制定。可以分为如下几步:首先,按照测试类型依据的标准确定需要测试的特性,如登记测试需要考虑用户文档、常规要求、功能性、可靠性、易用性这五个特性。其次,确定需要测试的子特性,如功能性需要考虑可安装性、适合性、正确性、一致性这四项。然后,选择相应的测试策略,即对需要测试的几大特性该如何测试。如需要检查用户文档是否完整,需要验证功能是否正确等。再次,需要配置测试的环境,确定测试需要的硬件和软件设备是否准备齐全。最后,需要确定测试的人员及日程安排,为及时高质量的完成测试工作作准备。这个过程需要形成测试计划文档。
再下面就是测试用例的设计,这一部分是测试工作的核心,如何设计出用最小的测试用例集找出软件中尽可能多的缺陷的测试用例,是一个很值得研究的问题。这里有一个通用的测试策略,但对具体的问题不一定是最好的,可以供大家参考:
(1)在任何情况下,都应该使用边界值分析法,经验表明,这种方法发现错误的能力最强。
(2)必要时用等价类划分法补充测试用例。
(3)必要时采用错误推测法补充测试用例。
(4)如果有输入条件的组合,就从输入条件及其组合开始测试。
这个过程中需要形成测试用例文档,该文档要包括测试需要输入的数据、该数据要验证的软件特性及输入该数据软件的预期输出。
测试执行过程需要依据前面形成的测试用例文档,实际执行相应的测试用例,需要记录下实际的输入与预期的输出是否一致,如果出现不一致,需要考虑是软件的错误,还是测试用例设计的问题。如果是测试用例设计的问题,需要调整测试用例。这个过程中要形成测试记录文档,该文档需要记录测试用例文档中每个例子的实际输出与测试中发现问题的描述。
测试评价,根据软件的质量体系分为质量特性、子特性、度量这三个方面,我们可以定义评价可以按照度量项目评价、子特性评价、特性评价这三个步骤依次开展。最后给出软件总体方面的评价,即形成测试报告。
五、测试完成之后的总结
测试完成以后需要形成问题报告和测试报告两个文档。问题报告主要是记录测试过程中发现的问题,此时需要对每个问题说明其严重程度,以确定是否需要开发人员进行修改。测试报告的书写可以说是测试人员成果的体现,这一步同样也非常的重要。测试报告即是对整个测试过程的总结,主要是测试评价中的内容。
附注:
明白了上述测试的基本流程之后,我们还需要把握测试过程中,时刻需要劳记的几条原则:
1. 文档书写要严格:文档可以记录测试过程中的每一步,良好的文档可以促进测试工作更加高效高质量的完成。
2. 测试要尽早执行:研究表明,软件缺陷发现的越晚,需要的成本越高。
3. 测试是不完全的:当前,国内的软件测试行业几乎看不到准确的客户需求说明书,同时客户的需求经常发生变更,因此,追求完美的测试是不可能的,我们只能找一个折中的办法,让开发和测试人员都能接受,来更好的促进软件项目的开展。另一方面,从测试用例设计的角度来出发,我们不可能穷尽所有的数据。如一个登陆模块,需要用户输入用户名和密码,那么用户名和密码可以说有无穷多符合条件的数据,因此,我们这时就去要采用等价类划分,边界值分析等方法来寻找满足条件的最小的测试用例集,来提高测试的效率。
4.测试工作要细致、全面,但是测试也不能过度,不能使目标偏离了产品的价值.测试的目的是寻找未发现的软件缺陷,但是这里的缺陷应该说是发现有价值的缺陷,比如测试过程中发现一个用户几乎不可能遇到的缺陷,那么我们可以说这个测试工作可能就是投入大于产出了,就有点过度了。
后记:
本人现在可以说是还处于测试人员中的起步阶段,对测试的了解也处在非常肤浅的层次。软件测试是一门自成体系的学问,因此我还需要进一步努力,来提高自己的水平。 |
|