软件测试的测试与创新
软件质量是指软件的功能和性能满足用户需求和期望的程度。随着IT技术在各个行业的广泛深入地应用,软件质量成为普遍重视的因素。如何有效地提高软件质量,增强软件产品的竞争力,是软件企业管理和技术人员共同面对的问题。
软件质量重于泰山
软件质量重于泰山,软件质量是核心竞争力之一。现在和未来软件企业的竞争力不仅体现在产品类型的多样性,产品功能的先进性,更多的体现在产品质量的稳定性和可靠性。软件应用的领域不断深入,设计的复杂程度逐步扩大,开发的周期不断缩短,质量的要求水涨船高,软件企业面临着巨大挑战。
用户对软件产品质量的要求不断提高,促使软件企业把提高软件质量作为增强竞争力的策略。提高软件质量要素在哪里 ? 可以通过采用软件设计技术,加强软件过程管理,实施软件测试等方法。从提高软件质量的显著程度、投资回报率和可实施性等方面比较,实施有效的软件测试,提高软件测试的效率,是保证软件质量的最显著方法。
软件测试是通过技术、流程、工具、人员以及管理手段,检测软件文档、软件中间产品和最终产品,查找和报告软件缺陷、错误以及隐患的专业技术。通过跟踪缺陷、错误及隐患的修正过程,确保软件产品、中间产品和文档符合软件工程过程需求和用户的最终需求。
软件测试创新之道
软件测试在国内仍处于起步阶段,各种软件测试的方法、技术和标准都还在探索阶段。国内软件行业普遍规模偏小,缺乏大型软件产品经验,开发过程不够规范,这决定了国内软件质量和测试行业,必须根据国内行业现状,确定软件质量目标和测试策略方法,而不是照搬照抄国外成熟软件企业的测试方法。
1.观念创新
提高软件质量的决定因素不是软件测试技术,而是对软件质量和测试的思想观念。只有把提高软件质量上升到企业战略发展的高度,才能从根本上解决问题。长期以来,国内软件行业对软件质量重视程度不足,对于软件测试的作用认识不够,造成项目因质量问题造成进度推迟甚至失败。
为了彻底改变这种被动现象,企业高层管理人员必须从管理思想、资源支持等方面为软件质量和测试部门提供全力支持。软件项目经理必须坚持软件开发和软件测试并行处理并且互相协调。软件开发人员重视和配合软件测试人员。
观念创新不要仅停留在口头上,而要落实在具体行动上,通过软件质量和测试的有效流程进行推动,通过过程改进进行提高。通过有效组织管理,形成以重视软件质量为荣,以轻视软件质量为耻的工作氛围。
2.流程创新
测试流程决定软件质量。软件测试如同软件开发一样,需要经过收集测试需求、确定测试策略、设计测试、执行测试、分析测试等流程。软件测试不是软件开发的最后阶段,而是贯穿于软件项目的整个生命周期。决定软件测试成败的关键是软件测试需求是否完整、准确,测试策略是否有效和实用,测试设计是否覆盖了测试需求。
软件测试流程既不是僵化的生搬硬套,也不是随机的增添取舍。软件企业的质量管理部门和项目开发团队需要根据公司技术、资源现状,针对项目的特点和客户需求,从保证软件质量、项目进度和测试成本等方面,进行优化设计并且不断改进流程管理。对于项目周期长、应用领域广、对质量要求高的软件,必须制定和遵守严格的测试流程。
测试流程创新的目标是在公司内部制定和执行完善的项目质量管理体系。优化项目生产方式,跟踪和度量生产过程和产品,使得生产过程和各阶段产品处于可控制和可度量状态,保证产品符合客户的功能和进度需求。
3.技术创新
软件测试是一项软件工程领域的专业技术,而不是简单的把软件测试认为随便找个人运行几次软件,就可以发现全部的软件问题。前文已经提到,软件测试需求和测试设计是决定软件测试效果的关键因素,因此,加强测试技术创新的重点是在测试需求和设计的创新。
在软件测试技术创新方面,要避免陷入过渡追求自动化测试技术的误区。自动化测试确实可以在某些方面显著提高测试效率和准确性,但是自动化测试只适合测试软件的某些方面的质量 (例如性能测试,回归测试等),80 % 左右的软件缺陷是靠测试人员手工测试发现的。对于某些特别需要自动化测试的软件特性,需要加强开发软件测试工具,而不是全部依赖市场上的现有测试工具。这是因为商业工具功能繁多,价格昂贵,培训和学习周期很长,选择不当就会造成巨大浪费。
4.管理创新
软件测试管理的目标是实现软件质量、进度、成本之间的最佳平衡。有效的测试管理需要企业管理层、软件开发团队、质量保证与测试团队通力合作,采用计划、组织、领导、控制等手段,组建高效团队,制定完善的测试流程,做好测试设计,有效执行测试,加强过程跟踪,从而顺利完成质量保证和测试任务。
测试管理创新的核心是软件质量和测试的团队建设,软件质量和测试是技术密集型活动,团队的知识结构、创造力和凝聚力是保证测试流程、测试技术充分实施的基础。质量和测试团队建设的重点是设置和培养各类技术和管理人才,进行有效交流,形成良好的评估和促进机制。
测试管理创新的另一个重点是测试管理平台建设。包括构建测试项目管理的集成系统,实现公司产品和项目数据信息的有效管理和顺序控制,使项目数据透明化,技术知识有效传承,项目质量和进度数据化、图形化。可以根据公司的现状,购买软件测试管理的商业工具,也可以内部开发软件测试管理工具。
软件测试技术路线图
如果把软件测试之道称为测试战略,要发挥测试战略的现实意义,需要把测试战略转化为测试战术。测试的“道”与“术”的无缝集成,才能显著地、持续地、逐步地提高软件产品质量。实施软件测试的战术是一系列过程的组合,涉及测试团队建设、流程设计、测试平台、测试管理等多个方面。
1.测试团队建设
测试团队可以是测试部,也可以是测试组。公司规模决定了测试团队的大小和组织形式。测试团队建设需要执行两个原则:第一,测试团队必须独立于开发团队,而不是附属于开发团队,实现测试的独立性和公正性;第二,测试团队必须具有明确的工作目标,即发现和报告软件缺陷,推动和确认缺陷修正,协助软件开发的过程改进,提高软件整体质量。
软件测试团队根据规模可以设置多个职位,每个职位具有明确的岗位职责,例如,测试部门经理、测试项目经理、测试组长、测试架构师、高级测试工程师、测试工程师等。对于刚刚成立的测试团队,可以一个人兼任多个职位,完成多项测试任务。测试人员的总数应该与开发人员相适应,最好在1:1到1:2之间。
2.流程设计
测试流程设计必须与软件设计流程相对应,基本测试流程包括测试需求分析,测试计划设计、测试用例设计、测试执行、测试评价、测试总结等。
根据软件需求和软件设计规格说明进行测试需求分析,测试需求分析的目的是明确需要测试的对象、特征、范围和方法,从而制定测试计划,确定测试策略。
测试计划设计是为了有效配置测试过程、人员和工具,充分利用现有的资源,按照项目计划进度,组织有效的测试。测试计划设计的输出结果是测试计划文档,它是指导软件测试活动的纲领性文档。
测试用例设计是指导具体测试内容和方法的关键内容,如果需要执行自动化测试,还需要依靠测试用例设计生成对应的测试脚本。测试用例设计的输出结果是不同类型的测试用例,这些测试用例必须以标准的、一致的形式设计、评审、存储、更新。
测试执行是发新和报告软件缺陷的阶段,根据软件计划的进度,分配测试内容,构建测试环境,依靠测试用例运行测试程序和程序文档。测试执行的输出结果是缺陷报告,测试进度报告等。
测试评价是度量软件测试执行效率和有效性的过程。测试评价的输入是测试用例的执行情况,软件缺陷的报告数据。测试评价的输出包括测试用例的有效性分析,软件缺陷的类型和有效性分析等,测试进度和有效性分析等。
测试总结包括测试过程每天或者每周的过程总结,也包括测试项目结束后的测试项目总结。测试总结的输出是测试总结报告,总体评价软件质量,指出测试存在的问题,提出改进的方法和进程,总计测试的有效经验。
3.测试平台设计
测试平台设计包括测试技术平台设计和测试管理平台设计。测试技术平台包括设计测试环境,设计或设置测试工具等。测试管理平台设计包括测试文档系统设计、测试版本配置管理、缺陷数据库设计、测试进度和质量分析系统设计。
测试技术平台设计需要根据测试计划的测试内容和测试环境要求,组织软件、硬件、数据库和网络等,这经常是一项较为耗时的工作,同时它影响着测试的正确性,必须尽快在测试开始阶段完成,最好采用有效的方法把搭建的测试环境进行备份保存,以便今后可以快速恢复,重复利用。
测试管理平台设计,影响测试管理的复杂度,好的测试管理平台可以使测试管理人员方便的跟踪、查询、分析测试进度,评估测试人员的工作绩效,评价测试的总体质量。对于测试技术人员而言,可以方便的寻找测试对象和测试文档,报告和输出测试结果,共享测试数据,提高测试效率。
4.测试管理
测试管理关注人员、过程、产品三要素的互动与变化,测试管理包含项目计划和组织结构管理,测试阶段管理,时间、资源和质量管理,文档管理和团队管理等。测试部门经理、测试项目经理和测试组长是测试管理的主要执行者,需要与测试团队成员、开发人员、公司管理人员密切配合。
为了加强测试管理,需要确保测试数据信息流通畅,使测试团队、开发团队、质量保证团队之间有效交流。测试管理的其他内容包括团队成员参与各种培训,客观积极的绩效评估,识别项目测试风险,实现人尽其才,信息共享,进度可控,规避风险,降低成本,提高质量。
结论:
提高软件质量是提高产品竞争力的重要因素,加强软件测试创新是显著改善软件质量的实用方法。软件测试创新是循序渐进的过程,从建立完整的质量管理体系入手,通过团队建设、优化流程、技术创新,加强管理,实现人员、流程和技术的和谐统一,提高软件质量的可预测试性和可控制性。