测试管理中可能存在的问题及分析
本文结合实践,主要探讨了在中小型软件企业中,在测试资源不是很充足的情况下的软件测试管理。文中前两部分简要介绍了软件测试管理及测试的范围,方法及重要性,之后对当前
  摘要:本文结合实践,主要探讨了在中小型软件企业中,在测试资源不是很充足的情况下的软件测试管理。文中前两部分简要介绍了软件测试管理及测试的范围,方法及重要性,之后对当前国内中小型软件企业在测试及测试管理中可能存在的问题进行了简单的介绍与分析,最后介绍了一些较好的解决方法。
  关键词:软件测试;测试管理;测试问题;管理体系
  1、引言
随着IT技术的迅速发展,计算机在各行各业日益广泛的应用,软件产品的不断推出,计算机软件已经越来越深人到人们的生活中,人们对计算机软件质量的要求也就越来越高。如果软件存在故障,将可能造成人力、物力和财力的巨大浪费;如果软件的质量不高,其维护费用不仅将大大超过其开发费用,而且会使维护变得很困难,甚至将可能造成不可弥补的损失。
软件测试是软件质量保证的关键步骤。美国质量保证研究所对软件测试的研究结果表明:越早发现软件中存在的问题,开发费用就越低;在编码后修改软件缺陷的成本是编码前的10倍,在产品交付后修改软件缺陷的成本是交付前的10倍;软件质量越高,软件发布后的维护费用越低。另外,根据对国际著名IT企业的统计,它们的软件测试费用占整个软件工程所有研发费用的50%以上。由此可见,为了保证软件产品的质量,必须对计算机软件进行测试。
  随着计算机硬件成本的不断下降,软件在整个计算机系统的成本中占有越来越高的比例,如何提高软件质量是整个计算机软件行业的重大课题。软件测试作为软件开发的一个重要环节,日益受到人们的重视。为了尽可能多地出程序中的错误,生产出高质量的软件产品,加强对测试工作的组织和管理就显得尤为重要。
  由于软件测试至今仍令人捉摸不定,为确保测试工作的顺利进行,就要对其进行有效地管理。软件测试管理是一种活动,可以对各阶段的测试计划、测试案例、测试流程进行整理、跟踪、记录其结果,并将其结果反馈给系统的开发者和管理者。同时将测试人员发现的错误立刻记录下来,生成问题报告并对之迸行管理。所以采用软件测试管理方法可以为软件企业提供一个多阶段、逐步递进的实施方案。通过此管理方法,软件企业还可以用有限的时间和成木完成软件开发确保软件产品的质最,进一步提高计算机软件在市场上的竞争能力。
  一般应用过程方法和系统方法来建立软件测试管理体系,也就是把测试管理作为一个系统,对组成这个系统的各个过程加以识别和管理,以实现设定的系统目标。同时要使这些过程协同作用、互相促进,从而使它们的总体作用大于各过程作用之和。其主要目标是在设定的条件限制下,尽可能发现和排除软件缺陷。
  但是当前,中国软件企业在软件测试方面与国际水准仍存在较大差距。首先,在认识上重开发、轻测试,没有认识到软件项目的如期完成不仅取决于开发人员,更取决于测试人员;其次,在管理上随意、简单,没有建立有效、规范的软件测试管理体系;另外,缺少自动化工具的支持,大多数企业在软件测试时并没有采用软件测试管理系统。所以对国内软件企业来说,不仅要提高对软件测试的认识,同时要建立起完善的软件测试管理体系。
  2、软件测试及测试管理的范围
  2.1 测试的范围
  下面主要就测试的参与者,测试要素,测试开始时应确定的工作,测试过程简要介绍软件测试的工作范围。
  参与者
  1)用户方代表
  2)软件最终使用者
  3)软件开发人员
  4)软件测试人员
  5)高层经理的支持
  6)过程保证人员(SQA)
  测试要素
  1)正确性:数据输入,过程处理和输出的正确性(IPO)。
  2)文件完整性:文件被正确使用,恢复和存储的数据正确。
  3)授权:特殊的授权可以执行一个特殊的操作。
  4)进程追踪:当进程运行中,程序有能力证实进程在正常工作。
  5)系统运行的连续性:当有非致命性问题发生后,系统有能力继续运行关键的任务。
  6)服务水平:系统有紧急情况发生时,要求程序的输出结果不经或进行简单的处理后就可以直接使用。
  7)权限控制:防止系统被误用(意外或者有意的)。
  8)一致性:确保最终设计和用户需求完全一致。
9)可靠性:在规定的时间内都可以正常运转。 10)易于使用:多数人均感觉易于使用。 11)可维护性:可以很容易的定位问题,并且进行修改。 12)可移植性:
  9)可靠性:在规定的时间内都可以正常运转。
  10)易于使用:多数人均感觉易于使用。
  11)可维护性:可以很容易的定位问题,并且进行修改。
  12)可移植性:数据或者程序易于移至到其它系统上。
  13)耦合性:系统中的组件可以很容易的联接。
  14)性能:系统资源的占用率,响应时间,并发处理。
  15) 操作性:易于操作(Operator)。
  测试开始时应确定的工作
  1)需求阶段
  --确定测试策略
  --确定收集了足够的需求
  --产生功能性的测试用例
  2)设计阶段
  --确定设计和需求之间的联系
  --确定进行了足够的设计
  --产生结构和功能的测试用例
  3) 编码阶段
软件测试流程  确定和设计之间的联系
  确定拥有执行的足够条件
  产生结构和功能的测试用例
  4)测试阶段
  确定设计了足够的测试用例
  测试应用系统已经完成
  关键资源已经到位
  5)安装阶段
  将测试完成的系统变为产品
  6)维护阶段
  修改和重新测试
  软件的测试过程
  7)估算:对软件工作量的估算;对软件系统的状况的评估。
  测试计划:详细的描述怎样能成功的完成测试工作,其中应包含必须的资源和实施计划。
  需求测试:在软件开发的所有阶段进行测试,测试应该尽早,在需求和设计阶段发现的缺陷修正的花费最小。
  设计测试:给测试要素打分;分析测试要素;对设计进行评审;检查修改的部分。
  编码测试:编码是否按照既有的标准进行,过程是否易于实践;是否编制了足够的文档。
  测试总结:表示出目前项目的实际状况;明确测试所做的工作,给出系统的操作性能的评价,
明确什么时候系统可以进行产品化的工作。
  安装,交付测试:检验检查表和产品的正确性;使用测试标准去检验发生的问题。
  维护阶段的测试:开发一些测试用例,预先发现一些问题;对用户进行培训
  2.2 测试管理的范围
  软件测试管理要解决的课题是如何确保软件测试技术能在软件项目在软件生命内得到顺利实施,并产生预期的效果。按照管理的对象不同,软件测试管理大致分为软件测试团队组织管理、软件测试计划管理、软件缺陷(错误)跟踪管理以及软件测试件管理四大部分。
  软件测试团队组织管理通俗的讲就是测试团队应该如何组建以及测试人员管理。在实际项目开发中,我们常常看到有些单位忽视测试团队存在的意义,当要实施测试时,往往临时几个程序员充当测试人员;也有些单位尽管认识到了组建测试团队的重要性,但在具体落实的时候往往安排一些毫无开发经验的行业新手去做测试工作,这常常导致测试效率的低下,测试人员对测试工作索然无味。一个好的测试团队首先要有好的带头人,他必须具有极为丰富的开发经验,对开发过程中常见的缺陷或错误了然于胸,此外,他还应具有亲和力和人格魅
力。其次,测试团队还应有具备一技之长的成员,如对某些自动化测试工具运用娴熟或能轻而易举地编写自动化测试脚本。另外,测试团队还应有兼职成员。如验证测试实施过程中,同行评审是最常使用的一种形式,这些同行专家就属于兼职测试团队成员的范畴。测试团队里往往不乏缺乏开发经验软件新手,这部分人可以安排去从事交付验证或黑盒测试之类的工作。
  软件测试计划管理通俗地讲就是安排好测试流程。这部分内容具体涵盖软件测试策划、软件测试技术剪裁、测试进度管理、成本管理等几个部分。其中测试策划工作主要是指具体测试活动实施之前做好策划工作,如起草测试大纲以及测试计划;软件测试技术剪裁工作主要是指测试团队应根据软件项目的具体实际剪裁出所要实施的测试技术;测试进度管理工作主要是指排出各项测试的时间进度及人员安排,如有变动时应做相应调整;测试成本管理工作的内容即开列出测试活动中会涉及到的资源需求。
  软件缺陷(错误)跟踪管理通俗地讲就是确保发现的缺陷(错误)已经被开发团队纠正或处理过并且没有引入新的缺陷(错误)。具体来讲,当测试团队通过各种途径发现了文档或代码中的缺陷或错误以后,并不是交一份测试报告就草草了事,而是在递交报告以后继续督促开发团
队及时关闭已知缺陷或错误(当然,如有必要应对这些缺陷、错误做严重程度排序,以便开发团队能视轻重缓急安排处理顺序)。当开发团队关闭了测试报告中的缺陷(错误)以后,测试团队还需验证开发团队在关闭过程中有没有引入新的错误。通常,这个过程称为回归测试。回归测试如发现问题,继续报开发团组,按上述流程循环,直至回归测试最终通过。
软件测试件管理通俗地讲就是指努力建设好测试团队的财富库并对测试团队成员进行技能培训以帮助他们能使用好这个财富库。这里,财富库是指软件测试
  软件测试件管理通俗地讲就是指努力建设好测试团队的财富库并对测试团队成员进行技能培训以帮助他们能使用好这个财富库。这里,财富库是指软件测试件。测试件(Testware,指测试工作形成的产品)是一个不常见到的词汇,它包括是测试团队在长期实践过程中逐步积累起来的经验教训、测试技巧、测试工具、规格文档以及一些经过少量修改能推广至通用的测试脚本程序。测试件管理工作做得越好,测试团队在实际测试过程中就能越少走弯路,测试团队内部的知识交流和传递就越充分,测试脚本或规格文档的重复开发工作也就能被有效地避免。软件测试件管理工作包括两部分,一是建设,另一个是培训。建设工作大抵是收集各类测试外文档、测试工具、测试脚本,也包括收集整理测试人员的会议发言、总结报告、技
术心得等等。培训工作大抵是通过技术讲座、正式或非正式团队会议、印发学习资料等形式进行。
  2.3 软件测试管理内容
  具体的测试管理内容有:
  1)测试方案管理:单元测试、集成测试和产品测试的测试计划的录入、修改、删除、查询和打印。
  2)测试案例管理
  测试案例的增、删、改、拷贝和查询;
  测试案例测试情况的管理,如测试状态包括:未测试、测试中、已测试;
  测试结果分为:通过、未实现、存在问题等;
  测试案例输人、编号和归档。
  3)测试流程管理:测试进度管理;测试流程标识;测试日志及状态报告。
  4)问题报告管理:问题报告处理流程(问题报告、整改报告)、实现问题报告与测试案例的关联。
  5)测试报告管理:生成单元测试、集成测试和产品测试的测试报告。
  除了以上这些,在侧试管理过程中还应对人员和环境资源进行管理。
  3、测试及测试管理中的问题及分析
  通过以上的简单总结与分析,可以看到软件测试及测试管理的重要性,及其复杂、广泛的组织管理工作,所以在实施起来,难免与理论有些出入。另外,国内的软件企业大多起步晚,技术基础薄弱,应用与管理经验缺乏,在测试上更是如此。于是国内的一些中小型的软件企业,在软件测试方面存在诸多问题,不仅与理论要求相差甚远,与实际的应用需求也相差很多。下面将简要介绍与分析当前国内中小型软件企业在测试及测试管理中存在的问题和问题原因,并在之后提出一些解决办法。