一、认识软件测试
软件工程中,软件测试就是在软件正事投入行业使用前,对软件的需求分许、系统设计和程序源代码进行最后的复查检测,是确保软件质量的关键。是为了发现软件错误而执行程序的过程。是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至可以根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。
软件测试在软件生存期中有两个主要的阶段:一个是在编写出每一个模块之后就对其进行测试,亦可称为单元测试或者模块测试。这一阶段主要是对某模块的程序段进行测试或者对其体现的单一功能进行测试。第二个阶段是对软件系统进行的各种综合测试。
二、软件测试的对象
软件测试并不是简单的程序测试,测试程序能不能运行是不够的。软件测试应该贯穿于软件定义与开发的整个期间。所以,软件的需求分析、系统设计、程序编码以及各阶段产生的说明文档,如规格说明、概要设计等都应列入软件测试的对象。另外由于程序的各个开发阶段是相互衔接的,前一阶段的工作如果出现的问题不及时解决的话很自然的会影响到下一阶段的。为了把握好没一阶段的正确性,我们需要进行各种确认和验证的工作。
确认包括需求规格说明的确认和程序的确认,而程序包括静态和动态的确认,静态的确认一般经过人工的分析,动态的确认主要是通过动态分析和程序测试来检查程序的执行情况。
验证就是要想办法证明该软件在软件生存期各个阶段中的逻辑协调性、完备性和正确性。例如测试用户的要求和程序运行的结果是否相符、测试用户的需求与系统分析员的报告是否准确、测试需求说明书和设计说明书是否匹配、设计说明书和源程序是否吻合。
三、软件测试的目的及应把握的原则
在说此问题之前我们先来认识下基于不同的立场时存在的两种测试目的,一个是用户角度,一个是软件开发者角度。从用户角度出发,用户总是希望通过软件的测试尽可能的发现软件中的隐蔽错误和缺陷,以此作为是否接受该软件的度量。另外以软件开发者角度来测试,他们则希望测试那些成为在软件产品中没有错误的过程,验证该软件已正确地实现了用户的要求,增强用户对软件质量的认可。所以他们多会选择一些导致程序失效概率小的测试模块,回避那些容易暴露程序错误的测试用例。也不会刻意去检查排除程序中可能存在的副作用语句。可见这样的测试对于软件的质量来说是毫无意义的。因为在程序中会存在着许多预料不到的问题,而这些问题往往要在特定的环境下才能体现出来。如果不把重心放在力求找出这种错误的基础上,便会把这些错误遗留到运行阶段中。所以软件测试时要多站在用户的角度思考,把目标确定为揭露程序中存在的错误。要力求以最少的时间和人力找出软件中隐藏的各种错误和缺陷。
根据上述的软件测试目的在软件测试中我们要把握以下几个原则:
1、把“尽早和不断的进行软件测试”牢记于心
由于软件开发各个阶段工作的多样性,以及人员的配伍关系等因素,使得每个环节都有可能产生错误,所以要把软件测试贯穿到每一个软件开发的环节中去,端正态度认真的完成各个阶段的技术审核,这样才能尽早的发现和预防错误,把出现的错误掐死在萌芽阶段没从而提高软件质量。
2、测试用例要包含输入数据和与输入数据相对应的预期输出结果
测试前要根据测试的要求选择适合该程序段使用的测试用例,这种测试用例主要用来检验程序员编制的程序是否有误。所以采用输入数据和与输入数据相对应的预期输出结果作为测试用例能更快捷的指出程序片段是否有误。
3、程序员应避免测试自己的程序
测试工作需要客观的态度和冷静的情绪,人们通常不愿意否定自己的劳动成果。正是因为出于此种心理影响,如果程序员检查自己的程序时难免会对软件规格说明的理解产生偏差。因此由其他程序员来检查应该会更客观,更有效果。当然在此我们不能把测试程序和调试程序相混淆。
4、设计测试用例时不可忽略不合理的输入条件
合理的输入条件是指能验证程序正确性的条件,而不合理的输入条件则包含输入异常、临界或者容易引起异变的条件。人们在进行测试时往往过多的考虑正常的条件而忽视不太合理的输入条件。在软件的正常使用中,人们常会应为操作的失误而对该程序输入各种不合理的输入比如打错键盘或非法输入等。这种错误轻则导致错误的运算,严重会导致软件的失效。因此不合理的输入条件不可忽略。
5、注意测试中的群集现象
测试时如果某些程序段出现的错误较多,则应加大力度对该程序段进行详细认真的检查,因为据经验表明测试后的程序残存错误与该程序段中已发现的错误的数目成正比。
6、认真执行测试,杜绝测试的随意性
指定详细的测试计划。计划应包括:软件的功能,输入和输出,各功能测试的进度安排,测试用例的选择等等,还需多查阅相关文献力求全面。
7、妥善的保管测试计划、测试用例、出错统计和分析报告等,为日后的软件维护提供便捷的服务
总之,在软件开发工程中软件测试是一个必不可少的工作环节,如果没有此环节的支撑,开发出来的软件产品注定会很快被淘汰。所以为了对用户负责,对国家和人民负责软件开发者特别是大中型软件的开发项目必须要严格的的对软件开发的一系列活动进行妥善的软件测试,这样才能更好的确保软件的质量,提高软件的健壮性和可移植性。
----------------------------------------------------------------------------------------------------------------------------