软件质量已成为开发商和用户共同关注的焦点。没有质量保证的软件产品,没有市场竞争力。软件测试是否充分、有效,直接影响到软件产品的质量。西安软件工程技术研究中心作为第三方软件评测机构,按照相关标准,为软件开发企业和软件用户提供软件评测技术服务。现以西安协同数码股份有限公司开发的SynchroFlow工作流管理系统的辅助开发工具FormDesigner3.0为例介绍西安软件工程技术研究中心的测试流程。

  缘于软件生产的特性,软件测试是软件生产的一个重点和难点。软件测试具有四个层次的作用:找错、确认、组装和评估,其中确认和评估的意义与难度在规模化的软件生产中远远大于找错和组装。软件生产迫切需要脱离手工作坊方式的软件调试,在规范化软件测试的基础上实现规模化软件测试,达到提高软件产品质量、降低软件生产成本。软件测试的方法学和软件测试的管理学应是软件测试工作者关注的重点。

  只有正确、迅速、准确地处理这些缺陷,才能消除软件缺陷,保证在要发布的软件中满足软件需求。西安软件工程技术研究中心制订了科学规范的测试流程,通过规范的软件测试服务,为软件企业和软件用户提供高质量软件评测服务。我们把软件测试项目中的活动一般分为测试计划、测试设计、测试开发、测试执行和测试评估这五个步骤来组织的。

  一、任务委托

  收到软件开发企业或软件用户的测试需要后,我中心派出测试工程师与用户进行测试需求沟通与交流、商讨并签订《软件测试技术合同》、《软件委托测试合同》和《保密合同》。用户将根据合同工作内容,填写《软件测试登记表》,提交《软件规格说明书》和《软件使用手册》。

  二、测试计划

  测试计划中我们主要确定四方面内容:

  1、必须进行那些测试?

  2、测试在何时开始,希望何时通过以及测试日程安排;

  3、测试在哪里进行?换句话说,是测试将在何种软、硬件配置的环境下运行?

  4、确定测试方法和测试工具;

  以上这些内容确定后便可以着手定义测试输入条件,确定测试策略和划分测试功能点、设计测试用例规划。在此过程中还要考虑测试用例的属性和该测试是否进行迭代测试。

  在 FormDesigner3.0项目测试过程中,用户要求我们对FormDesigner3.0 进行功能测试。根据FormDesigner3.0的功能点、参照其用户手册、以及用户要求进行回归测试的特性,我们在制定测试计划时,需要考虑测试用例的可复用性。我们将FormDesigner3.0划分为12个模块,准备开发的测试用例,将全部覆盖FormDesigner3.0所有功能点。

  在组织FormDesigner3.0的测试过程中我们用Rational TestManager来管理测试过程,通过使用Rational TestManage工具自动跟踪整个项目的质量和需求状态来分析所造成的针对测试用例的影响,并能获得基特定角度的测试结构数据, 并且利用这些数据对于测试工作进行决策。

  三、测试设计

  测试设计是对每个测试用例进行详细的测试步骤设计,设计时力求覆盖所有功能点。设计的测试步骤,是实施测试时的操作步骤。测试设计还包括选择检查点、设计检查位置、定义测试用例的条件和确定测试通过的标准。对于要求进行回归测试的软件用例的设计要考虑测试用例的复用性和扩展性。

  对于FormDesigner3.0,测试用例设计这一环节中我们采取点面结合的方式进行测试,所谓“面”是软件系统的业务流程要完整,而“点”是所测系统的所有功能点要全面,同时测试设计时还要考虑到要进行回归测试,根据计划和测试用例的可执行性、可扩展性以及可迭代性我们将 FormDesigner3.0划分成12个模块来设计用例,共计设计了272个测试用例,所设计测试用例严格遵照《FormDesigner3.0需求规格说明书》和《FormDesigner3.0用户手册》并覆盖了FormDesigner3.0所有的功能点。

  四、测试实现

  测试实现是根据测试用例设计的测试步骤进行具体的测试准备,即通过对被测程序的操作,利用测试工具录制自动执行测试的脚本并修改脚本增强脚本的健壮性。对于不适合自动化测试的功能点我们采用编写手工测试用例进行补充。经过软件测试用例设计过程中被测软件中的部分缺陷可能被发现。对于发现的缺陷经过验证确认后,用Rational ClearQuest记录下来进行统一管理。

  考虑到FormDesigner3.0需进行多次迭代,在整个测试实施过程中根据设计好的测试用例,我们利用Rational robot编制了大量的自动化测试脚本总计265个。对录制好的测试脚本为了增强其的健壮性,我们对其进行了多次修改以方便迭代测试的要求。

  五、测试执行

  在测试执行过程中,利用测试工具针对被测软件自动回放测试用例脚本,经过多次回放自动化脚本,测试工具会自动记录测试信息。如果脚本在回放中出现问题,则将测试失败的信息及时记录到缺陷跟踪数据库中,并建立优先级。在执行测试过程中。主要是出现的问题进行验证、查错,从而确定缺陷发生发范围和缺陷发生的环境。

  在经过20多天的第一次测试后,我们把测试结果回馈给委托方,经其验证修改我们又进行了二次迭代测试。利用已编制好的大量自动化测试脚本,迭代测试时极大地提高了我们的测试效率,整个测试过程只用了5天时间。迭代测试时我们发现先前提交的缺陷绝大多数都得到了修正,同时我们又发现了新的缺陷,我们把这些信息及时反馈给委托方,从而帮助委托方对软件的质量状况做出准确地判断和决定。对于发现的缺陷采用缺陷跟踪管理工具ClearQuest进行全程跟踪管理,并分配专人进行验证测试。

  六、测试评估

  测试评估是客户比较关心的地方,它是对整个测试的完成情况进行总结评估,并对整个项目所产生缺陷的趋势进行分析,形成测试报告。测试报告中涉及整个测试活动过程,包括测试的软硬件环境、测试工具、测试人员、测试资源消耗、测试缺陷分类和描述、以及测试缺陷优先级和对被测软件的各模块和总体评价。我们使用 Rational TestManager 和 Rational ClearQuese等工具对整个测试过程进行评估,
利用工具生成各类图表来分析测试脚本执行情况,测试用例覆盖程度,被测系统在不同访问量下的响应时间,缺陷的状态及其分布情况等必要因素,从而得到整个测试的完成情况和被测应用的质量状况。以帮助委托方对软件的质量状况做出准确地判断和决定,以便于对软件系统进一步完善功能和改进软件中存在的质量问题。

  七、结束语

  测试只是一种手段对软件质量状况进行验证和评估的一种有效手段,不管采取什么测试手段和采用什么样的测试工具不可能证明软件没有错、很难做到的覆盖软件,通过测试、通过建立规范的测试流程实现专业化的软件测试,对提高软件产品质量、降低软件生产成本是非常有用的。