引论:我们为您整理了13篇软件测试项目总结范文,供您借鉴以丰富您的创作。它们是您写作时的宝贵资源,期望它们能够激发您的创作灵感,让您的文章更具深度。
篇1
1信息系统软件测试分析
信息系统软件测试在不同研发模型中所分阶段不同,而区别于不同的研发模型,整个软件测试过程一般都需要经过测试策划、测试设计、测试执行、测试总结四个基本活动。测试策划活动主要进行需求分析,识别软件测试项、测试所需软硬件、人力资源等;测试设计活动主要根据识别的软件测试项设计测试用例,包括手工测试用例、自动化测试用例等;测试执行活动通过手工、自动执行测试,发现软件缺陷,进行软件缺陷归零验证;测试总结活动对测试执行结果进行整理分析,编写测试报告。同样的,基于国产化平台研发的信息系统软件测试亦需要经过测试策划、测试设计、测试执行、测试总结四个活动。1)测试策划活动进行需求分析、识别软件测试项依赖于软件自身需求,其与研发平台具有无关性,识别测试所需的软硬件则取决于研发平台。目前国产化平台的测试工具也面临着起步晚、发展时间短的问题,应用于国产化平台的软件测试工具种类远没有丰国产化平台软件测试工具丰富[2]。测试策划过程中需要识别出可用于国产化平台的测试软件是其要解决的重要问题,一方面取决于已有的测试软件,另一方面取决于信息系统的技术实现。2)测试设计活动所编写的手工测试用例取决于被测信息系统软件自身,而编写自动化测试用例则取决于所使用的自动化测试平台,不同的自动化测试平台所适用的软件类别不同。基于国产化的自动化测试平台选择范围小,且成熟度相比于非国产化平台并不高。因此测试设计阶段所面临的是被测信息系统软件的可实现自动化测试的用例覆盖程度问题。3)测试执行活动一方面是执行测试用例,另一方面还需要对软件缺陷进行分析定位,对被测信息系统的内存、CPU、网络、磁盘IO等指标进行监控,其对国产化平台依赖性较高。国产化平台的操作系统、数据库、中间件乃至办公软件所提供的分析、监控工具直接影响着软件测试的执行和软件缺陷的分析定位。目前,国产计算机环境的应用面、规模相对较小,应对复杂环境时,兼容性、综合性能、可靠性验证不充分,缺乏有效的诊断分析工具和测试评估环境[1]。测试执行过程中面临着如何充分利用国产化平台所提供的分析和监控工具完成测试执行、如何通过第三方辅助软件解决国产化平台自身不具备的功能完成测试执行的问题。4)测试总结活动为测试过程的最后一个活动,对测试执行的结果进行整理分析。对于国产化平台研发的信息系统,测试总结需要分析前几项测试活动的结果形成测试报告,还需要对测试技术形成积累,为基于国产化平台信息系统的软件测试持续发展提供经验。图1为信息系统软件测试活动图以及基于国产化平台进行软件测试活动的所要解决的关键问题。
2软件测试技术应用
2.1测试策划
国产化平台信息系统软件测试策划活动所面临的主要问题是识别测试所需软件项,应用于项目,需要结合项目自身特点。每个项目的系统架构、软件开发语言、运行环境等各不一样,因此在识别时结合被测软件,从三个方面解决测用所需软件:开源软件[3]、商用软件、自研软件。图2所示在项目测试过程中开源软件、商用软件、自研软件选择比重,其中开源软件选择优先,其次可通过自研软件、商用软件覆盖测试所需。1)开源软件具有成本低、灵活性高、自由的优势,国产化平台信息系统识别测试所需软件项可以优先从开源软件中选择,获取满足项目软件功能测试、性能测试、接口测试、安全测试、可靠性测试等测试类型的开源软件。2)开源软件在支持方面、文档方面、稳定性方面不如商业软件,对于测试软件要求高的项目可选择商用软件进行支撑。商用软件具有支持度高、日常更新、技术难度低的优势,采用商用软件可以避免测试过程中的一些无法解决问题。3)商用软件所提供的是适用于大多数用户需求的接口,对于被测软件,在不同的测试阶段、不同测试类型中,存在商用软件无法实现测试内容的场景,需要项目通过研发专用测试工具以实现测试覆盖,解决测试软件问题。
2.2测试设计
测试设计过程中可以通过编写自动化测试用例代替手工测试的反复操作,自动化测试用例覆盖率高可以有效地提高测试用例复用率和执行效率。基于国产化平台信息系统软件自动化测试在采用的自动化测试平台上,可以通过不同维度的测试用例设计增加自动化测试用例覆盖率,即分别从单元测试、接口测试、GUI测试分别设计自动化测试用例[4]。自动化软件测试用例设计一般遵循图3所示的三角形用例覆盖率比例,单元测试与代码直接相关,软件代码改动对单元自动化用例的影响较小,单元测试自动化用例覆盖率最高,其次是接口测试自动化用例。GUI自动化测试用例实现难度高,且受代码改动影响大,因此其自动化测试用例覆盖率最低。国产化平台信息系统软件自动化测试平台缺少QTP、Loadrunner等工具,目前只有少数自动化平台支持国产化操作系统,如kylinTOP自动化测试工具,除此之外,还可以采用Selenium、Python等实现自动化测试。此类软件对于GUI自动化测试与非国产化软件类似,因此国产化平台信息系统自动化测试用例亦需要遵循图3的测试用例覆盖率。
2.3测试执行
在测试执行过程中需要对信息系统软件缺陷进行分析定位、对信息系统的指标进行监控。信息系统的缺陷分析和指标监控包括两部分,一部分与依赖的国产化平台相关,另一部分与信息系统软件自身相关。与国产化平台相关的缺陷分析和指标监控可以采用国产化平台自持软件,目前国产操作系统、国产数据库软件、国产中间件软件等均具备满足监控平台自身指标的工具[5]。基于国产化平台的第三方测试工具如WGCLOUD、PIGOSS、SugarNMS等可以实现多平台、分布式监控。表1为这三款工具软件可支持的国产化平台以及可用于信息系统软件测试的监控项。
2.4测试总结
篇2
用户对软件产品质量的要求不断提高,促使软件企业把提高软件质量作为增强竞争力的策略。提高软件质量要素在哪里?可以通过采用软件设计技术,加强软件过程管理,实施软件测试等方法。从提高软件质量的显著程度、投资回报率和可实施性等方面比较,实施有效的软件测试,提高软件测试的效率,是保证软件质量的显著方法。
软件测试是通过技术、流程、工具、人员以及管理手段,检测软件文档、软件中间产品和最终产品,查找和报告软件缺陷、错误以及隐患的专业技术。通过跟踪缺陷、错误及隐患的修正过程,确保软件产品、中间产品和文档符合软件工程过程需求和用户的最终需求。
软件测试创新之道
软件测试在国内仍处于起步阶段,各种软件测试的方法、技术和标准都还在探索阶段。国内软件行业规模普遍偏小,缺乏大型软件产品经验,开发过程不够规范,这决定了国内软件质量和测试行业,必须根据国内行业现状,确定软件质量目标和测试策略方法,而不是照搬照抄国外成熟软件企业的测试方法。
观念创新
提高软件质量的决定因素不是软件测试技术,而是对软件质量和测试的思想观念。只有把提高软件质量上升到企业战略发展的高度,才能从根本上解决问题。长期以来,国内软件行业对软件质量重视程度不足,对于软件测试的作用认识不够,造成项目因质量问题造成进度推迟甚至失败。
为了彻底改变这种被动现象,企业高层管理人员必须从管理思想、资源支持等方面为软件质量和测试部门提供全力支持。软件项目经理必须坚持软件开发和软件测试并行处理并且互相协调。软件开发人员重视和配合软件测试人员。
观念创新不要仅停留在口头上,而要落实在具体行动上,通过软件质量和测试的有效流程进行推动,通过过程改进进行提高。通过有效组织管理,形成“以重视软件质量为荣,以轻视软件质量为耻”的工作氛围。
流程创新
测试流程决定软件质量。软件测试如同软件开发一样,需要经过收集测试需求、确定测试策略、设计测试、执行测试、分析测试等流程。软件测试不是软件开发的最后阶段,而是贯穿于软件项目的整个生命周期。
软件测试流程既不是僵化的生搬硬套,也不是随机的增添取舍。软件企业的质量管理部门和项目开发团队需要根据公司技术、资源现状,针对项目的特点和客户需求,从保证软件质量、项目进度和测试成本等方面,进行优化设计并且不断改进流程管理。对于项目周期长、应用领域广、对质量要求高的软件,必须制定和遵守严格的测试流程。
测试流程创新的目标是在公司内部制定和执行完善的项目质量管理体系。优化项目生产方式,跟踪和度量生产过程和产品,使得生产过程和各阶段产品处于可控制和可度量状态,保证产品符合客户的功能和进度需求。
技术创新
软件测试是一项软件工程领域的专业技术,而不是简单的把软件测试认为随便找个人运行几次软件,就可以发现全部的软件问题。前文已经提到,软件测试需求和测试设计是决定软件测试效果的关键因素,因此,加强测试技术创新的重点是在测试需求和设计设计的创新。
在软件测试技术创新方面,要避免陷入过度追求自动化测试技术的误区。自动化测试确实可以在某些方面显著提高测试效率和准确性,但是自动化测试只适合测试软件的某些方面的质量,80%左右的软件缺陷是靠测试人员手工测试发现的。
对于某些特别需要自动化测试的软件特性,需要加强开发软件测试工具,而不是全部依赖市场上的现有测试工具。这是因为商业工具功能繁多,价格昂贵,培训和学习周期很长,选择不当就会造成巨大浪费。
管理创新
软件测试管理的目标是实现软件质量、进度、成本之间的最佳平衡。有效的测试管理需要企业管理层、软件开发团队、质量保证与测试团队通力合作,采用计划、组织、领导、控制等手段,组建高效团队,制定完善的测试流程,做好测试设计,有效执行测试,加强过程跟踪,从而顺利完成质量保证和测试任务。
测试管理创新的核心是软件质量和测试的团队建设,软件质量和测试是技术密集型活动,团队的知识结构、创造力和凝聚力是保证测试流程、测试技术充分实施的基础。质量和测试团队建设的重点是设置和培养各类技术和管理人才,进行有效交流,形成良好的评估和促进机制。
测试管理创新的另一个重点是测试管理平台建设。包括构建测试项目管理的集成系统,实现公司产品和项目数据信息的有效管理和顺序控制,使项目数据透明化,技术知识有效传承,项目质量和进度数据化、图形化。可以根据公司的现状,购买软件测试管理的商业工具,也可以内部开发软件测试管理工具。
软件测试技术路线图
如果把软件测试之道成为测试战略,要发挥测试战略的现实意义,需要把测试战略转化为测试战术。测试的“道”与“术”的无缝集成,才能显著地、持续地、逐步地提高软件产品质量。实施软件测试的战术是一系列过程的组合,涉及测试团队建设、流程设计、测试平台、测试管理等多个方面。
测试团队建设
测试团队可以是测试部,也可以是测试组。公司规模决定了测试团队的大小和组织形式。测试团队建设需要执行两个原则:第一,测试团队必须独立于开发团队,而不是附属于开发团队,实现测试的独立性和公正性;第二,测试团队必须具有明确的工作目标,即发现和报告软件缺陷,推动和确认缺陷修正,协助软件开发的过程改进,提高软件整体质量。
软件测试团队根据规模可以设置多个职位,每个职位具有明确的岗位职责。例如,测试部门经理、测试项目经理、测试组长、测试架构师、高级测试工程师、测试工程师等。对于刚刚成立的测试团队,可以一个人兼任多个职位,完成多项测试任务。测试人员的总数应该与开发人员相适应,最好在1:1到1:2之间。
流程设计
测试流程设计必须与软件设计流程相对应,基本测试流程包括测试需求分析、测试计划设计、测试用例设计、测试执行、测试评价、测试总结等。
根据软件需求和软件设计规格说明进行测试需求分析,测试需求分析的目的是明确需要测试的对象、特征、范围和方法,从而制定测试计划,确定测试策略。
测试计划设计是为了有效配置测试过程、人员和工具,充分利用现有的资源,按照项目计划进度,组织有效的测试。测试计划设计的输出结果是测试计划文档,它是指导软件测试活动的纲领性文档。
测试用例设计是指导具体测试内容和方法的关键内容,如果需要执行自动化测试,还需要依靠测试用例设计生成对应的测试脚本。测试用例设计的输出结果是不同类型的测试用例,这些测试用例必须以标准、一致的形式设计、评审、存储、更新。
测试执行是报告软件缺陷的阶段,根据软件计划的进度,分配测试内容,构建测试环境,依靠测试用例运行测试程序和程序文档。测试执行的输出结果是缺陷报告、测试进度报告等。
测试评价是度量软件测试执行效率和有效性的过程。测试评价的输入是测试用例的执行情况,软件缺陷的报告数据。测试评价的输出包括测试用例的有效性分析,软件缺陷的类型和有效性分析等,测试进度和有效性分析等。
测试总结包括测试过程每天或者每周的过程总结,也包括测试项目结束后的测试项目总结。测试总结的输出是测试总结报告,总体评价软件质量,指出测试存在的问题,提出改进的方法和进程,总计测试的有效经验。
测试平台设计
测试平台设计包括测试技术平台设计和测试管理平台设计。测试技术平台包括设计测试环境,设计或设置测试工具等。测试管理平台设计包括测试文档系统设计、测试版本配置管理、缺陷数据库设计、测试进度和质量分析系统设计。
测试技术平台设计需要根据测试计划的测试内容和测试环境要求,组织软件、硬件、数据库和网络等,这经常是一项较为耗时的工作,同时它影响着测试的正确性,必须尽快在测试开始阶段完成,最好采用有效的方法把搭建的测试环境进行备份保存,以便今后可以快速恢复,重复利用。
测试管理平台设计,影响测试管理的复杂度,好的测试管理平台可以使测试管理人员,方便地跟踪、查询、分析测试进度,评估测试人员的工作绩效,评价测试的总体质量。对于测试技术人员而言,可以方便的寻找测试对象和测试文档,报告和输出测试结果,共享测试数据,提高测试效率。
测试管理
测试管理关注人员、过程、产品三要素的互动与变化,测试管理包含项目计划和组织结构管理,测试阶段管理,时间、资源和质量管理,文档管理和团队管理等。测试部门经理、测试项目经理和测试组长是测试管理的主要执行者,需要与测试团队成员、开发人员、公司管理人员密切配合。
篇3
2软件测试过程中的风险应对分析
2.1风险识别与风险量化
对软件进行项目风险管理,可以在最短时间内得到项目目标,项目风险管理以潜在风险最小化作为目标,软件测试项目风险管理中包含软件风险识别、软件风险量化、软件风险应对计划制定以及软件风险控制。其中,软件风险识别需要工作人员在软件测试项目风险管理开始之前进行,并在整个项目执行中不断完成,软件风险识别在项目整个生命周期以内属于连续过程。软件风险识别包含了风险来源确定、风险产生条件辨别,测试人员要详细表述风险特征,确定这些风险是否会影响到软件测试项目的正常运行,对于软件测试项目风险管理来说,风险识别不是一次就能完成的,而是应该在项目的全过程进行。
2.2风险应对计划与风险监控
针对风险量化结果,为了降低软件测试项目的负面效应,测试人员会制定相应的解决措施和技术手段,做好风险管理计划,完成风险认知,为风险监控提供技术基础。人们可以使用多种方式作为风险控制方法,利用核对表对项目进行定期评估与净值分析,风险监控的输出包含对风险的错误纠正和软件测试项目管理计划更新,软件测试项目中发现风险以后对其加以分析,确定相对重要性与影响程度,为来自内部与外部的风险提供标识,对每一种风险进行科学评估,计算出风险发生的可能性与最终结果,对风险进行分类,为风险处理提供可操作信息。在经典风险管理过程中,主要会使用到Boehm、CRM、Leavitt、Boehm等多种模型,使用这种方式很有可能造成人员不足或者成本不够的问题,测试人员在开始进行软件项目开发的时候就要对潜在风险进行总结,将所有的风险形成表格形式,并在软件测试项目生命周期内进行会议讨论,更新表格。应当对可能出现的恶劣后果因素进行准确评估,对于当前最紧急的风险进行决定和处理,制定控制风险的基本应对措施,评测和保证风险策略开展的有效性。
3总结
总而言之,人们从第三方软件测试角度进行软件测试时,不仅要进行完善的质量管理,还会进行项目风险管理,对风险进行评估与排序,确定不同风险给软件带来的影响,探究风险发生概率,进一步保证软件的质量,降低产品维护费用,提高用户满意程度,降低软件责任风险,提高经济效益。
参考文献
篇4
中图分类号:G642.44 文献标识码:A 文章编号:1007-0079(2013)14-0126-02
近年来,随着中国内需市场的增长和国内外外包企业的合作加深,我国的软件外包行业得到了迅速发展。软件测试作为软件外包的主营业务之一,是加快软件企业与国际接轨,实现产品国际化的重要手段。随着软件开发流程的系统化和规范化,我国软件企业对软件测试的需求逐步增大,因此高校计算机专业中的软件测试人才具有良好的就业前景。
由于软件测试工作的特殊性,需要从业者不仅掌握一定的软件技术,同时也要对软件测试的方法和流程具备相当的经验。通过高校教育培养出来的计算机专业应届毕业生,虽然能够掌握基本的软件开发技术和软件测试理论,但是缺乏实际的测试经验和相应的行业背景知识,离企业的需求尚有一定的差距。目前高校计算机专业中软件测试教学仍以理论为主,实践动手能力和项目背景经验的培养相对不足,这些矛盾导致学生就业时很难适应企业的用人要求,企业也必须对招入的应届毕业生进行培训,花费相当的人力和物力。
项目实训是解决高校和企业之间供需矛盾的有效手段。在日常教学计划中引入项目实训,以实际测试任务为驱动,按照企业规范进行流程管理,让学生掌握测试过程中各阶段的技能,理论联系实践地接受企业化的锻炼。通过实训课程,使学生不但能够学习到实际测试经验,而且能够增强团队意识,进一步缩小毕业生与职业测试工程师之间的差距。
一、软件测试项目实施
1.测试项目简介
本文所述的软件测试实训项目是基于校企共建模式,由南京工业大学(以下简称“我校”)软件外包实验室提供软件测试的场所和专用的硬件设备,从合作的软件公司引入相应的测试平台、管理流程和测试报告文档的测试项目。
本项目的内容是针对前期开发的教师管理系统进行测试。该系统是教学部门的业务管理支撑系统,测试主要围绕教师信息的查询和更新操作的管理。通过对这些功能模块的测试,增强系统的易用性、稳定性、可配置性,消除信息孤岛,进一步提高数据信息的应用水平。
在测试环境搭建过程中,服务器的软硬件配置要与该系统的实际运行环境保持一致。对于测试计划、测试方案和测试用例等文档的修改、更新操作,则采用svn版本管理工具来进行控制。学生可以通过svn服务器平台,按照进度提交每日的测试用例文档,并填写日志记录测试进度和每天的测试工作。
2.实训计划和人员管理
软件测试实训安排在我校外包实验室中进行,采用与企业相同的管理模式集中训练,由相关教师和企业工程师来指导测试流程。测试团队的成员来自于我校电子与信息工程学院计算机专业的大三、大四学生,以及对软件测试感兴趣的相近专业的学生。这些学生具备基本的软件编程能力,并且对测试的基本理论有一定的了解。根据学生自身水平和对项目的熟悉程度,可以将其划分为不同角色,其中包括开发人员和测试人员。开发人员由原来参与系统开发的部分学生担任。测试人员可以分成不同的小组测试不同的模块,每个小组设置一个测试组长,负责测试项目管理,其余组员则负责执行测试用例,各小组都有一名教师作为指导教师,控制模块的测试进度。整个测试实训项目安排在假期进行,用时半个月,每天工作8小时。每天早晨由测试组长安排当天的测试任务,并对前一天的测试结果进行总结。在每个时间节点,由指导教师和小组成员对相关测试文档进行评审。
3.测试项目进程
本项目的实际流程图如图1所示,在项目初始阶段,担任开发人员角色的学生叙述产品需求和业务流程,为编写测试计划做准备。该测试项目主要分为5个阶段:测试计划制定、测试方案编写、测试用例设计、多轮系统测试和测试系统报告提交。每个阶段都力求达到规范化、细致化的测试目标,同时每个阶段都要经过教师和各个组员之间的评审,如果评审通过,可以开始下一阶段的工作;如果不通过,则需要完善后继续评审直到通过。
(1)测试计划制定。在了解了教师管理系统的需求以后,结合学生的基本情况、系统模块数量和测试的周期来制定测试计划。测试计划要涵盖测试的范围和环境、测试人员的管理和测试进度安排。考虑到参与实训项目的学生缺乏相关经验,因此测试计划要重点突出每个测试小组所对应的系统模块,以及测试流程中每个阶段所对应的完成日期。该测试计划由各组组长和指导教师制定,最后需各小组评审后通过。
(2)测试方案编写。测试方案是按照系统需求说明书详细的分析测试的模块,指导后续的测试用例的编写工作,重点在于对模块具体功能的理解和测试对象的分析。在这一阶段,首先由担任开发人员角色的学生来介绍系统模块的基本功能,并以文档的形式向对应测试组成员提交;然后由指导教师以具体测试点为例,介绍详细的测试用例写法;最后,由各组组长将测试任务分配给组员,各组员在理解的基础上开始测试用例的设计。测试方案完成以后由各组组长汇总,并在组内进行评审。
(3)测试用例设计。测试用例的编写是针对各功能模块测试而设计的一组测试输入、执行条件以及预期结果,也是本实训项目的重点内容。在对模块的特性和功能了解的基础上,设计系统的测试点,设计时应考虑角色权限、验证点和测试描述。在设计验证点的过程中,鼓励学生展开讨论,力求做到无疏漏;同时在测试描述时,可以将等价类划分、边界值、错误推测等常用方法与书本理论相结合,通过具体的实例加深学生对所学知识的理解。最终的测试用例以Excel表格形式列出,其中包括编号、重要级别、操作步骤、预期输出和实际测试结果等条目。
(4)多轮系统测试。按照测试用例的具体内容,可以进行多轮的系统测试。根据测试结果,扮演开发人员角色的学生对缺陷进行修改。通过这一过程,不但使学生认识到开发过程中存在的问题,而且积累了开发经验,为今后规范化的编程打下了基础。
(5)测试报告提交。通过半个月的实训,学生经历了规范化的测试流程,测试报告的编写是对测试内容的概括和总结。报告的内容主要有以下三个方面:通过对测试结果的分析,得到对软件质量的评价;总结本次的测试过程,为制定以后的测试计划提供参考;评估本次测试计划和测试执行是否符合规范。通过本次实训,学生普遍体会到从理论知识到实践的过程,明确了规范化的软件测试方法,同时对软件编写中隐含的错误和缺陷也有了一定的认识,为今后的软件开发打下一定的基础。
二、软件测试实训存在的问题和解决办法
本次软件测试实训基本达到了预期的效果,学生不但学到了规范化的测试流程,提高了职业软件素养,而且通过互动和交流,发现了教学中存在的一些需要解决的问题。首先,本次软件测试实训是针对上一次实训开发的系统,离企业的实际系统测试尚有一些差距;其次,参与的学生缺乏实际经验,对软件测试认识不足,导致测试方案和测试用例编写不够规范、完善;另外,相应的管理需要加强,在实训过程中存在迟到、早退以及缺席的现象,从而影响了测试进度。
针对以上问题,在今后的实训过程中,测试项目要尽量切合企业的实际需求,同时在测试方案和测试用例的评审中,要加强教师和学生的沟通,强调测试流程的规范性,可以多鼓励高水平的学生带低水平的学生。另外,可以采取企业现行管理方式对实训进行管理,如引入考勤制度、评审制度等。
三、结语
软件测试是我国软件产业高速发展中需求缺口较大的一个行业,培养具有相关经验和符合企业需求的软件测试人才是目前高校计算机专业需要解决的核心问题之一。本文通过研究软件测试实训项目,探索了软件测试专业人才的培训方式以及在此过程中遇到的问题,对研究校企联合的人才培养模式具有重要意义。
参考文献:
篇5
Key words: software systems;testing;safety;quality;problems;influence;management
中图分类号:TP311 文献标识码:A 文章编号:1006-4311(2014)19-0204-02
0 引言
随着软件市场的发展越来越成熟,人们对软件作用的期望值逐渐增高,就使得人们将关注点转移到软件的质量和功能的可靠性上,因此软件产业在中国市场产品测试领域有着严重的不足。我们不得不承认,国产软件市场相对国际先进的软件来看,无论在质量上还是成熟度上都存在着一定的差距。尽管国外软件也存在不少错误和漏洞,但是很少存在由于低级失误或大意而出现的软件产品质量问题。但是国内由于低级错误而造成的严重产品质量问题却时常发生,为了改变中国软件产业的前途和命运必须提高软件测试水平。因此,软件测试对软件产品质量、控制成本、软件可靠性、企业的竞争力等方面起着重要的作用。
1 什么是软件测试及软件测试的目的
随着软件规模的不断增大和软件复杂性的日益增加,软件测试也显得越来越重要,软件测试工作是非常讲究策略和方法的工作,需要我们努力学习达到先进领域的顶峰。软件测试就是在受控制的条件下对系统或应用程序进行操作并进行评价操作结果的一个过程,其中所谓控制条件主要就是两种,即正常条件与非正常条件。而软件测试主要是为了进行“探测”,通过探测发现软件自身的毛病,加以改进。软件测试贯穿于软件开发的整个周期,其中软件的规格说明书和结构设计的程序编码等,都属于软件测试的对象。进行软件测试的主要目的就是为了保证软件产品的最终质量,因此,我们在进行软件开发的过程中,就需要对产品的质量进行控制,以避免出现不合格的产品。
2 加强对软件测试工作的项目管理
2.1 软件测试的关键问题 软件测试的关键问题就需要我们从以下四个方面进行分析:首先,测试由谁来执行。因此软件产品的开发设计通常由软件开发者和软件测试者两种角色组成。一般开发者主要通过开发形成产品,然后由测试者来检验产品中是否存在缺陷。通常的测试工作是由开发者负责完成自己所开发的代码单元测试,然后测试者承担系统测试。其次,测试什么。通常测试经验表明,程序中的故障,并不一定是由于编码导致的问题,所以为了排除故障就要追溯到前期的工作。但是很多时候,软件需求分析、设计和实施阶段是软件故障的主要来源。第三,什么时候进行测试。软件进行测试可以在开发中进行测试,可以在各个模块完成一个整体的程序后进行测试。最后,怎样进行测试。对软件进行测试就是根据软件的功能和规范说明以及程序的实现,就需要我们进行各种测试,然后生成有效的测试用例,对软件进行测试。
软件测试的目的就是为了证明程序中是否有故障存在,以此找出解决的问题,所以在进行测试的时候,要有周全的计划,这样才能从软件中找出缺陷和错误,然后通过发现的问题进行处理。软件测试的原则就是尽早并及时测试应用软件,然后由专业人员进行软件的测试,测试用例应完整完全,严格执行测试计划,保存测试的分析报告以备今后应用。
2.2 软件测试方法管理 软件测试的方法主要有白盒测试法和黑盒测试法两种。其中白盒测试法又称之为结构测试、基于程序的测试和逻辑驱动测试,白盒测试法大部分用于单元测试中。而黑盒测试法又被称为功能性测试、数据驱动测试或给予规格说明的测试,多数用于独立测试中,并不考虑程序结构和内部特征,只在于检查输入与输出之间的关系是否符合要求。
测试信息流程,测试过程中需要三类输入:
①软件配置:包括软件需求规格说明、软件设计规格说明、源代码等。
②测试配置:包括测试计划、测试用例、测试驱动程
序等。
③测试工具:为了提高测试效率,就需要我们采用测试工具以支持测试的工作,主要包括测试数据自动生成程序、驱动测试的测试数据库等。但是测试工具不是万能的,工具只能解决工具的问题,使用工具的毕竟是人。工具在解决效率问题上是非常擅长的。这个就类似我们看的武侠小说中宝剑和剑谱的关系,没有武功心法,你拿到宝剑也没用。
软件测试的周期是测试改错再测试再改错这样一个循环的过程测试终止的依据主要有五类标准:
①测试超过了预定时间,则终止测试。
②执行了所有的测试用例,但没有发现故障,则终止测试。
③使用特定的测试用例设计方案作为判断测试终止的基础。
④正面指出终止测试的具体要求,即终止测试的标准可定义为查出某一预定数目的故障,如规定发现并修改了多少个故障就可以终止测试。
⑤根据单位时间内查出故障的数量决定是否终止
测试。
3 小结
综上所述,软件测试的事务性操作较多,但是进行这些操作,我们需要有一个良好的心态去对待。其中良好的团队合作才能保证开发过程的顺利进行,在工作过程中还需要我们进行总结,对于问题我们需要有则改之,无则加冕。因为软件开发是一件比较辛苦的事情,我们只有在工作中对经验多总结,才能找到符合自己的方式方法,才会在工作中事半功倍。在软件开发中应掌握其中蕴含的软件测试流程思想,并有效的将测试管理融入到项目管理中,优化软件开发流程,提高产品质量。
中国软件公司的规模和产品的开发层次在不断的完善和发展中,因此很多公司开始谋求国家软件的订单,因此外包业务成为软件行业一个新的增长点。但是由于国内的软件测试水平与国外用户的要求相差甚远,就需要我国软件行业无论是在人力、管理还是组织或技术上都有大幅度的提升,重视软件测试,使之能够与世界先进的软件公司测试标准接轨,这也是我国软件能够迈出国门的重要前提前提因素。
参考文献:
[1]孙俊若,席晓强,叶波,林洁.机载雷达软件开发全周期测试技术研究[J].现代雷达,2010(01).
[2]徐宗云,王世伟.基于SOA架构的PDM系统与制造管理系统集成设计与实现[J].冶金自动化,2010(01).
[3]祝莎莎,陈勇,齐永阳,陈戈.虚拟现实软件VRGIS的项目进度管理研究及应用[J].中国高新技术企业,2010(01).
[4]斌斌.挣值分析法在信息系统项目中的应用[J].网络与信息,2010(01).
篇6
0 引言
软件测试形成了一个新兴的行业。软件测试的工作贯穿于整个软件产品生产过程的始终,是保证软件质量的有效手段。软件测试课程是软件工程专业的必修课程之一,是一门理论性和实践性都很强的专业课。该课程对于人才的培养目标是:掌握软件测试和软件质量的基本理论、常用的测试方法和自动化测试工具,能够编写测试计划、设计测试用例、完成软件初步测试。
目前软件测试行业人才严重不足。据企业专职软件测试人员分布调查,27.5%的企业目前没有专业的软件测试人员,43.5%的企业软件测试人员的数量在1~10人之间。为了适应行业人才需求,国内高校纷纷开设软件测试课程。但软件测试在国内高校中尚属一门新兴的课程,缺少对不同开发方式和应用场景的软件测试方法介绍,学生对软件测试过程缺乏完整的认识,学习主动性不高,甚至认为软件测试是一门文字性课程。如何进行软件测试教学方法调整以适应业界需求已成为一个亟待解决的问题。
1 软件测试课程教学存在的主要问题
1.1 学生学情分析
软件测试是对软件形成过程中的文档、数据和程序等内容进行测试,而不仅仅是对程序进行测试,这需要学生对软件工程的基础理论,系统的分析设计,软件的开发技术等有一定的了解。
在还没有完全理解软件工程相关理论时,就开始进行软件测试课程的学习,会导致学生对软件测试理解的偏差。例如,认为软件测试就是找出软件项目中的错误,是简单而枯燥的工作,因而只重视开发技术的培养,不重视甚至忽略测试技术的掌握。
1.2 教学材料分析
软件测试方面的书籍大多是翻译的,而且多是培训用书或介绍软件测试工具的书,而能够满足高校软件测试课程的教材较少。在当前市面上的软件测试教材中,大部分也只是阐述空洞的理论,附加简单而又陈旧的工具介绍,这些理念和工具很多已经被业界淘汰,这样的教材难以适应当前市场对软件测试人才的需求。
软件测试工具较多、范围广、不易把握重点,而大部分测试工具如:LoadRunner、WinRunner、JUnit、C++Test等都是英文版本,工具书较难读懂。教学过程中没有相关的软件产品供学生测试,以验证所学的理论,达不到理想的教学效果。
1.3 教学方法分析
传统教学手段是以课堂教授为主的“灌输式”教学。教师授课时主要是在分析一门课程知识结构的基础上,循序渐进地讲授一门课程的知识点,学生按部就班地学习知识点。传统教学法过于理论,学生往往在学了一堆理论知识后对如何测试实际项目还是很茫然。虽然传统教学法在某些教学环节也会给出一些实例或小项目,但是对于整个课程来说,这些实例或小项目是孤立的、彼此没有联系的,以至学生掌握的知识也是零散的,不系统的,缺乏对课程的整体把握。
1.4 考核方式分析
课程考核是课程教学过程中的重要一环,是检测和促进学生学习效果的重要手段。目前学生考核体系基本以闭卷形式的终结性考核成绩为主,以考勤、课堂表现、作业等组成的平时成绩为辅的考核方式。这种方式存在的问题主要是:以期末考试成绩为重,考核内容相对片面,注重的是软件测试基础理论知识,对软件测试应用知识的能力考查不够,过分注重书本知识而忽略了软件测试综合应用能力的整体考查。
2 基于项目驱动的软件测试教学法探索
欲改善上述局面,就应结合学生的专业特色,在教学过程中以实际工程项目为主线,把软件项目的整体思想纳入到本课程中来,让学生在学习过程中积累项目测试经验,掌握项目测试的流程,增加学生对课程目的性的认识,提高学生的积极性。
项目驱动式教学法是一种建立在建构主义学习理论基础上的、有别于传统教学的新型教学方法。建构既是对新知识的理解与掌握,同时又包含对原有经验和知识的改造和重组,综合形成新的知识建构。该方法提倡以学生为中心的学习。在整个教学过程中教师起组织者、指导者、帮助者和促进者的作用,教师利用情境、协作、会话等学习环境要素充分发挥学生的主动性、积极性和创造性,最终使学生有效地掌握当前所学知识。
2.1 软件项目前期准备阶段
项目是项目驱动教学的核心,整个教学过程都始终围绕项目展开。项目设置的好坏将直接影响到教学效果,因此在设计项目上应注意以下几点。
2.1.1 项目具有典型性
项目教学法中应选择以解决身边的现实问题为背景材料,从熟悉项目着手能充分激发学生的学习热情。项目能覆盖学生已经学习过的知识点,如:软件工程的基础理论,系统的分析设计,软件的开发技术,从源头上保证知识的完整性。
2.1.2 项目规模、难度适中
项目教学法中选择的项目规模和难度都应适中。如果项目规模和难度过大,软件测试用例的设计难度大,学生不容易完成。项目规模和难度过小,则涉及的知识点少,不能反映学生对软件测试用例设计的理解程度。因此,设计的项目应保证学生通过努力能够完成,这样可以树立学生完成任务的信心,充分调动学生的积极性和主观能动性。
2.1.3 项目规范
由于软件测试是对软件形成过程中的文档、数据、程序,以及所有相关文档进行测试,所以被测软件应该是按照软件工程思想设计开发的,每个阶段的工作都应当在文档中体现出来,文档撰写有严格的标准和规范。
项目来源:
途径1:所在学院的每门课程都有多名教师建立的课程群,测试案例可以由教授面向对象程序设计、综合课程设计、系统分析与设计等课程的教师提出要求,选择典型的作品充实案例库。
途径2:从毕业设计中选择,大四的学生都要作毕业设计,教师可以从其提取一些典型系统,充实案例库。
途径3:来自学生科研项目,每年都有大量的学生申报科研项目,教师可以收集其优秀作品,充实案例库。
途径4:来自校企合作项目,教师在和企业合作开发项目时,在合同允许的情况下,将开发系统作为实际案例,充实案例库。
2.2 基于项目驱动的软件测试教学法实施
基于项目驱动的软件测试教学法实施是在学生已完成软件系统分析与设计的实践,并有一定的编程能力的基础上设计的,涉及两种活动流:教学流和测试流。
⑴ 教学流
由于软件测试课程的知识点前后关联关系不大,教师在教学流过程中,不必在讲清楚课程的基础知识和基本技能后再进行项目的教学,可直接面对具体任务进行教学。在教师带领学生分析解决具体项目的方法时,将相关联的知识点串联起来,让学生在学习各阶段的理论知识同时,完成软件相应的测试活动。
基于项目驱动的教学流按照项目测试流程大体可分为三个阶段:软件测试基础、软件测试技术和软件测试管理。
第一阶段,学生主要进行部分软件开发和相应产品的静态测试。在开发的过程中通过规范的开发文档和测试文档,给学生展示单元测试、集成测试和系统测试的密切关系,让学生深刻认识到软件测试是紧密伴随软件开发过程而进行的活动。
第二阶段,主要进行测试设计和实现。软件测试中对具体项目常常有多种测试方法,教师可只讲解其中最实用的方法。其他方法的应用作为讨论、实验、课外作业的形式由学生完成,让学生在完成项目实践的过程中学习知识、解决问题、提高技能。本阶段的教学应只包括对重点教学内容的讲解,其过程应该精练,以便为学生学习提供广泛的空间,为学生顺利完成项目打下良好的基础。
第三阶段,主要进行测试管理和报告。通过测试用例管理工具、案例以及规范的软件测试报告的介绍和展示,让学生深刻认识软件测试需要规范的测试管理过程,软件测试中测试需求、测试用例、测试业务组件、测试计划、测试执行、测试结果、缺陷都需要进行合理的规划和管理。
⑵ 测试流
基于项目驱动的测试流是由教师给定多个项目,并提出测试要求,教学过程中将团队测试的思想贯穿始终,将学生分成若干小组,以小组为单位完成项目测试。每个小组由1个项目组长、1个测试组长和3个测试组员构成。小组内部责任明确,选择有较强实践能力和沟通能力学生担任项目组长,负责制定测试方案、任务分配和人员协调工作。选择有较强学习能力和技术能力学生担任测试组长,负责分析软件需求、获得测试需求、制定测试策略方案、确定测试方法。小组内每个学生必须完成最基本的任务,即测试用例的设计、编写、执行和维护等各项任务。
测试流执行过程中,学生探究性地学习相关的知识和技能,在知识运用中掌握实践技能。通过任务的实施和完成,让学生体验到知识应用的成就感,增强学习的积极性,促使学生更加主动地、探索性地学习相关的知识和技能,使知识技能的掌握更加牢固。测试流执行过程中,教师为项目组提供相关的学习资料资源,引导学生有目的性、有针对性地学习,同时关注学生开展项目的全过程,严格要求按照项目的具体实施流程进行,比如软件测试项目必须按照测试计划、测试设计、测试执行和测试结果分析来进行,每个阶段的工作必须撰写规范的技术报告。
测试流的最后阶段,教师组织各测试小组进行课程设计答辩。答辩时,组间相互评价,从文档规范性、测试方法的正确性和有效性、测试技术应用的广泛性等方面选出最优测试小组。最终经过教师对学生单人考核,结束本次测试流教学。
3 结束语
本文针对软件测试课程教学中存在的问题,提出采用项目驱动的教学模式,通过教学流、测试流两种活动流,将软件测试理论知识融入到实践活动中。该教学模式打破了传统,激发了学生的学习兴趣,有利于学生对测试过程形成一个整体认识,符合软件工程系统化思想。由于软件测试相关理论还在不断完善,实验理论、实验方法手段、实验技术正在飞速发展,这就需要我们在教学过程中不断地探索、总结、完善软件测试教学的内容和方法,进一步提高课程的教学效果和质量。
参考文献:
[1] 龚宇辉.软件测试课程教学改革研究[J].教育与职业,2010.24:
130-131
[2] 张向宏.软件测试理论与实践教程[M].人民邮电出版社,2009.
[3] 聂长海.关于软件测试的几点思考[J].计算机科学,2011.38(2):1-3
篇7
1 软件测试中的质量问题及对进度的影响
在软件测试过程中,影响质量的因素非常多,比如代码的行数多少,它与最终的测试质量上反比的,代码行数越少,测试质量就越高,测试的时间充分,测试的质量就越高。测试时间压力对最终的测试质量影响非常大。工作人员的经验水平还有很多其他因素都会对质量产生影响。质量有问题,就会影响整个工程的进度,所以为了保证质量就要对其采取措施。
1.1 软件测试师的责任意识
作为软件测试师而言,自身的技术水平与职业素养,对软件测试的质量和进度会产生较大的影响。良好的职业技术水平能够保证进行软件测试的时候按照规范要求进行,对存在的问题能够及时的发现,及时的处理,避免了由于自身技术不足造成的测试事故,因此,软件测试师应该不断的提高自身的职业技能和素养。
1.2 工程化的软件测试管理
根据瀑布模型对软件开发过程的阶段划分:“需求分析概要设计详细设计编码”。然后以此为参照对软件测试予以划分,从而有了相应的测试需求调研、需求分析提取、设计以及用例编写等重要阶段。然后对各阶段建立相应的测试工作产品基线。在实施下一项工作阶段之前,需要评审之前各阶段的产品基线,确认合格后则可继续下一工序。软件测试的这种工程化管理保证的测试设计方法的全面、合理,测试覆盖的全面性,同时也保证了测试中各阶段产品的质量。要得到良好的软件测试质量,需要建立规范的测试过程,从而保证测试结果的一致和质量。规范的软件测试过程的第一步是划分测试阶段,各阶段的测试如图一所示。
在软件测试工作当中,以所评测软件的研制任务/需求和本次软件测试需求之间建立一个追踪关系,从而保证测试能够覆盖软件需求文档的规定需求;此外,和以往的项目经验相结合,对文档中没有出现但是用户实际需要的部分隐含要求予以补充,并编制成相对全面的测试需求说明,从而实现测试能够满足覆盖的全面性。
1.3 软件测试过程的监督
在实际的软件测试工作当中,各软件测试师之间是存在一定的差距的,如项目工作经验、专业技术背景等。为了保证测试的质量和进度,以及各测试项目组测试结果的一致。那么就需在测试中实施监督制度,软件测试师在监督制度下,从而实现高质量的软件测试。软件测试的各个环节中,分由各环节的软件测试师进行测试,这个过程不仅仅是只进行软件测试,还要进行监督,软件测试师要对自己的测试范围进行严格监督,防止将存在的问题遗漏掉。彼此之间也要互相进行监督,目的在于提高软件测试的质量和进度。
2 软件测试中的进度问题及对质量的影响
针对软件测试的进度问题,业内对此有过专门的研究分析和总结,在时间规定上有很多项目要求测试时一天代码走查量要少于300行,因为现在软件研发时间被大大压缩,所以在测试阶段的时间就随之更少,因为时间不够,对整个开发和测试活动的质量影响后果都特别严重,导致不能充分地进行测试要想更好地保证测试质量,就一定结合测试软件的规模来合理安排,不能因为测试的进度不合理,而影响了质量,才能满足测试的目的。因为现在我国的软件研发中一个最重要和常见的问题就是进度跟不上,而为了保证进度,而采用减少时间的方法,因此对质量产生坏的影响。
在软件测试工作当中,有效的阶段评审能够保证测试进度的可行性与合理性;测试文档的规范性、正确性和完整性;满足软件测试需求覆盖的完整;合理全面的测试方法;保证测试用例的充分性、可行性以及正确性;最终实现测试结果的正确性和真是性。针对软件测试各个基线或关键阶段的转阶段评审的工作内容有测试的计划、方案;测试就绪和总结等等。
软件测试过程中的重要手段是引进过程质量保证,对测试产品建立“互审、组审、评审”的三审制度。即就是对整个测试过程中的所有测试工作产品均建立三审制度,如工作计划,测试质量保证计划,测试需求规格说明,配置管理计划,测试说明、用例设计说明以及测试报告等等。编写完测试工作产品后,将测试工作产品先由本组软件测试师进行相互检查、审查,经检查确保无误后再进行测试组的内部会审,之后再提交正式评审。
3 软件测试中质量和进度达到双赢
在整个软件设计应用过程中,其最基本的前提条件是质量保证。故软件测试过程中,测试质量也是软件测试的重中之重。作为软件测试师,在软件测试设计过程中首先要明确测试目标,也就是要保证测试对象符合用户的使用需求。只有明确了测试目标,才能够为下一步的软件测试提供便利。质量是整个测试过程中的关键,只有保证了测试质量,才能够更深一步的提高测试进度。随着当前信息技术的快速发展,各软件的更新速度也在逐渐加快,这就无形的对软件测试进度有了更迫切的要求。软件测试的进度是通过测试计划的控制来实现的。对于测试进度的提高,其关键是在测试设计过程中要有适当合理的人员配备以及测试各阶段的工作安排,只有在完善的测试计划上,才能够进一步的提高软件测试的进度。实际上,软件测试是存在一定的风险的,因此需要加大对测试风险的排除,一旦发现风险,则需要以最快的速度进行人力协调,从而保证软件的测试进度。下面用两个例子说明:
如果在某一个项目当中,我们采取valgrind来对内存错误进行自动检测,并且在一定时间内检测出了很多错误。若是不采取这种方法,相同的错误就要浪费更多的时间来寻找,所以只需要采取更科学有效的技术测试的质量和进度就可以达到双赢的结果。再比如我们用两个工作人员来做行设计需求的评审,发现了很多的错误,它们会使后续开发引入更多的bug。但是如果用静态测试的方法来检测,缺陷消除就只需要几人日的工作量,它比传统的方法省时省力,效果更好。
4 结语
软件测试的目的是利用测试过程中对发现问题,并对问题进行处理,从而实现增强软件质量的目标,是一种确保软件产品可靠性与良好质量的关键措施。作为软件测试师而言,应该按照软件测试规范要求进行软件测试,通过改进质量活动的生产率,既提高质量,又能缩短研发进度。只有这样,才能在测试软件的时候取得质量和进度的双赢。
参考文献:
[1]郑羽,龚懿.软件测试质量的影响因素分析[J].计算机应用,2010(12).
[2]张洪春.基于质量属性的软件测试力系统分析架构[J].微型机与应用,2011(19).
篇8
1 软件测试外包人才需求状况
当前,软件产业已经成为国际竞争的焦点和各国竞相发展的战略性先导产业。早在2007年,教育部等部门出台的《关于进一步加强国家重点领域紧缺人才培养工作的意见》,将软件等确定为12个国家重点领域紧缺人才培养。而在软件行业中,为了提高软件质量,降低软件开发成本,分散软件外包风险,软件测试就成为重要推动力。但软件测试业却面临着自身的严峻考验——人才紧缺。据前程无忧招聘网统计,国内120多万软件从业者中,真正能担当测试职位的不足5万,人才缺口已超20万并向30万大军挺进,并随需求逐年增长。在国外,一般软件测试人员与软件开发人员的岗位设置比例是1:1。软件测试人才需求量的加大,除了受产业先行的波及外,长期以来业界对软件测试的不重视,导致高校未有效开展软件测试人才的培养,出现教育滞后。教育滞后体现在多方面,包括专业设置、人才培养模式、人才培养方案的滞后与不协调等。
2 软件测试职业发展及能力需求分析
2.1 软件测试外包的特点
随着软件产业的发展,软件产品的质量控制与质量管理正逐渐成为软件企业生存与发展的核心。几乎每个大中型IT企业的软件产品在前都需要大量的质量控制、测试和文档工作,而这些工作必须依靠拥有娴熟技术的软件测试工程师这样专业的人士来完成。单独设立测试部门,对测试人才有强烈需求的企业大多是规模较大的一些IT企业,外资企业居多。而一些企业为了降低软件开发成本,专注于核心业务的发展,或因测试力量匮乏,往往会把软件测试工作外包给专业的测试机构来完成。软件测试外包的特点,一是涉及行业多,知识面广。二是测试团队比较大。三是接触到大项目的机会比较多,软件测试的类型包括行业应用软件的测试、本地化和国际化测试、嵌入式软件测试等。在行业软件中,以手机、家电嵌入式软件为代表的通信行业软件和汽车、电子行业的中间件成为具有潜力的软件外包领域。所以软件测试外包对测试人员的素质提出了更高的要求。
2.2 软件测试职业发展及能力需求分析
根据软件测试职业岗位与工作内容的分析,综合学院、企业、培训机构专家访谈结果,网络资料查询调研结果,不同行业、不同企业同一岗位,其岗位工作任务不同,职业能力需求的侧重点也不同。同一职业岗位在不同的行业领域对知识的要求也不同。按照软件测试为岗位主线,通过对不同行业企业所需人才岗位工作职责、能力知识需求进行系统的分析与研究,总结提炼出软件测试外包专业毕业生踏入工作岗位从初级测试工程师到成长为有丰富工作经验的测试项目经理所具有的能力与素质要求。
初级测试工程师的工作职责是按照软件测试方案和流程对产品进行功能测验;检查产品是否有缺陷;报告和跟踪缺陷及进行验证。其能力素质要求是熟悉常用的软件测试方法、软件工程知识;熟悉常用的软件开发环境,编程工具;有良好的英语阅读能力,具有良好的沟通能力。
中/高级测试工程师的工作职责是设计测试用例;搭建测试环境;根据测试设计对产品进行性能、功能等全面测试;测试工具等的开发、撰写测试报告。其能力素质要求是掌握软件测试原理流程、方法与规范;熟悉测试工具;熟练地编写测试脚本,能够进行缺陷分析及预防。具有较强的文档编写能力;较强的学习能力;高度的责任心,较强的沟通能力。
测试组长及测试主管:设计测试计划及进行测试项目的管理;项目及测试流程和工具的选择及优化;测试项目质量和进度控制。其能力素质要求是有一定的软件测试经验;能够独立完成各类测试任务;具有较好的解决问题的能力;有一定的分工协作能力。
软件测试项目经理:构建测试团队及进行测试团队的管理;制定项目测试方案和测试计划;协调测试资源,并对各种资源进行计划、分工和管理;测试项目的质量及控制。其能力素质要求精通软件测试理论、软件测试管理和自动化测试技术;熟悉软件测试开发和测试平台、自动化测试与性能测试工具;较强的测试组织管理能力、沟通协调能力;有流利的英语读写表达能力;善于团队合作,执行能力强。
3 构建并实施一站式人才培养模式
改革现有的软件外包测试人才培养落后状况,探索并实践新型人才培养模式成为软件测试外包人才培养的重中之重。烟台职业学院对此作了多方面的探索与实践,构建并实施一站式人才培养模式,为软件测试外包人才规模化培养积累经验。
3.1 软件测试外包专业人才培养目标
根据企业的人才需求特点,学院、培训机构、企业三方共同确定的高职软件测试外包专业的培养目标为:培养掌握计算机基础、软件测试专业知识、熟悉软件测试的基本方法、流程和规范,了解服务外包行业知识、发包方文化、商务礼仪,能利用测试工具对软件产品进行功能和性能测试,设计和维护测试系统,对测试方案可能出现的问题进行分析与评估,具有软件编程能力及软件工程应用能力,可从事软件外包及服务外包企业软件测试、运行、维护及质量管理等岗位工作,具有较强的外语应用能力,良好的沟通能力、协调能力和语言表达能力的技能型人才。
其岗位的主要业务范围是: 依据需求文档及设计文档,编写测试用例;依据测试用例执行测试,完成产品的手工测试、集成测试与系统测试,反馈跟踪产品BUG及用例缺陷;根据测试计划,搭建测试环境; 测试工具/系统的研究和应用。软件测试专业可考取的证书:计算机等级考试四级软件测试工程师、ISTQB国际软件测试工程师(初级)。
3.2 一站式人才培养模式内容
经过多年的实践与总结,构建了以政府为引导,实行与培训机构联姻、与企业合作的一站式人才培养模式,完成毕业即就业的角色转换。
政府引导:以我院牵头成立的烟台市服务外包职教集团为平台,与当地政府、服务外包园区建立框架性战略合作关系,根据政府出台的优惠政策,提供的各种信息资源,通过学院与企业及产业园区的互动,形成校企双方人力资源的可持续性需求供给与输出。由政府协调当地服务外包企业,与学院建立紧密型的人才培养合作联盟,联盟单位派员参与专业建设指导、人才培养,并作为学院学生的实习实训基地。
一站式培养的关键是学院通过与知名培训机构、与企业实行三方合作,通过协议等约定方式,按企业所需的人才数量与规格,采用“联合招生、委托培养、定向就业”的形式,实现人才培养的直接输入与对口输出。“联合招生”指三方共同协商确定学生来源、招生数量、招生方案;“委托培养”指招收的学员全部在学校学习、在培训机构实训,培养目标受企业委托进行;“定向就业”指学生培养结束经过综合考核评定,并参加由工信部全国注册服务外包专业认证中心设置的面向服务外包产业的专业认证项目,获得工信部相关技术等级认证,根据认证等级,由合作企业正式录用为公司员工,安排到合适的岗位就业,不能直接就业的可推荐安置到合作联盟单位或由合作企业、培训机构推荐到其他单位就业。
3.3 课程建设及实施路径
课程体系的构建和课程建设是人才培养中的关键因素。服务外包软件测试专业课程集服务外包知识课程群、信息技术专业课程群、软件测试专业课程群、管理课程、专业外语课程于一体,着力培养复合型软件测试外包人才。按照课程之间的逻辑顺序和人才职业成长规律安排课程。实施中采用分段式安排,教学团队专兼教师合作授课。部分课程安排成为选修课,学生可以根据自己的就业意向和兴趣选择学习。图1为主要课程框架体系图及实施路径。
技能储备阶段构建完整的工程知识体系。利用案例和项目强化学生对于各种知识点的理解,并通过实践训练达到一定熟练程度与规范性,完成基本知识的积累及基本技能的训练。校企各有侧重地承担教学任务,通用专业基础课程及其相关实践课程由校内专任教师承担。专业核心课程及相关实训由企业人员承担。时间安排为第一到第四个学期。
技能提升阶段主要是针对外包项目的仿真实训,建立学生的项目工程思想,根据项目分工完成工作任务,使学生充分演练项目中的多种职业角色,具备企业要求的基本职业素质。该阶段的教学任务主要由企业人员在校内实训基地完成,专任教师辅助教学。时间安排为第五学期的前半学期,同时开展软件测试等级认证培训。
岗位实训阶段,由仿真项目实训逐步向真实产业外包项目实训转变。此阶段根据学生的水平,将学生编入各项目组,参与到真实项目。通过完成外包项目,感知企业文化,熟悉工作环境,接受企业的管理,达到实战训练的岗位能力要求。这一阶段的培养任务主要由企业人员承担,专任教师协助辅导,企业工程师担任项目经理。该阶段的实训任务主要在培训机构完成,时间安排为第五学期下半学期。本阶段完成软件测试技术等级认证。
顶岗实习阶段是根据学生的职业特长及发展需求,安排学生到合作企业实习,根据学生的水平及实习企业的用人计划,成绩优秀者可直接与企业签约就业,学生的实践情况由专人跟踪帮助。对不合适的岗位,重新安排到其他企业实习就业。根据企业岗位标准的不同,时间安排为第六学期。
3.4 实行任务驱动、工学一体教学模式
树立学习就是工作,工作就是学习的理念,采用任务驱动、工学一体教学模式开展教学活动。精选典型项目或案例作为教学内容,每一项目安排1~5个不等的任务,每一任务有针对性地包括一个或几个必须掌握的知识点,学生的学习过程就是完成任务的过程,按照自主学习,仿真应用、工程应用的流程,完成学习任务。在自主学习阶段,先给学生布置任务,然后指导学生展开自主学习,根据班级人数情况,灵活选择以学生2~4人为一组的形式,进行咨询、讨论、制定工作计划、提出任务实施方案,再指导学生进行仿真设计和测试,最后在实训基地中指导学生进行工学结合实训。每一任务完成情况选2~3组有代表性的作品进行展示与答辩,然后由其他组学生进行评价,提出意见与建议。不同组完成同样的任务可能采用的方法不同。每一个项目完成后,提交项目报告,根据日常表现、实训情况、创新能力、报告的完整性与准确性,给出评价结果。
4 结束语
软件测试是一个新兴职业,其具有的就业竞争小、薪资水平高、职业发展多元化的特点,吸引越来越多的人从事软件测试工作,这为软件测试人才的培养提供了很好的发展机遇。学院与企业、培训机构合作,共同培养软件测试人才可以实现毕业即就业的一站式人才培养。这种模式,把学院的教育资源、生源优势,培训机构的教学内容,企业的实训优势及就业优势结合在一起,实现强强联合、三方共赢。但在合作中,合作的各方要加强沟通,通过一定的机制规范和约束合作行为,并通过一定的保障措施确保合作持续长久。
基金项目:中国高等职业技术教育研究会“十二五”规划项目 《基于校企合作服务外包人才培养模式的探索和实践》编号:GZYGH2011014 主持人:姜永华
篇9
随着软件产业的发展、软件规模的逐步扩大,软件的质量问题日渐突显,软件测试与软件质量监控也越来越受到软件行业的重视。各类招聘信息中对软件测试类人才的需求猛增,很多人由此而选择了软件测试,但其中不少人始终未能拿到软件测试行业的“入场券”,原因何在?软件测试行业是一个高速发展的新兴行业,尽管当下认知程度不高,但有着广阔的发展前景。如何才能更有效地进入软件测试领域是本文的研究重点所在。
1软件测试的误区
软件测试不断受到重视,但总体上,国内软件项目过程不够规范,对软件测试的重要性、测试方法和流程等还存在很多错误的认识,以致很多人在软件测试领域走了不少弯路。对于测试人员以及准备进入软件测试领域的人员来说,首先必须认清并更正这些错误观点。
(1) 误区一:软件开发完成后才开始进行软件测试
软件从开始计划、编制、测试,一直到公开使用的过程中都可能存在软件缺陷。事实证明,需求规格说明书是导致软件缺陷的最大原因。随着时间的推移,修复软件缺陷的费用呈几何级数增长。
(2) 误区二:软件后如果发现质量问题,那是软件测试人员的错
软件测试只能确认软件存在错误,不能保证软件没有错误。软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程设计出来的。应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。
(3) 误区三:软件测试要求不高,随便找个人都可以完成这项工作
软件测试涉及很多领域,简单的点点鼠标、按按键盘的工作根本无法达到软件测试的目的,若想立足于软件测试领域必须掌握和学习很多方面的知识。
(4) 误区四:项目进度吃紧时少做些测试,时间富裕时多做测试
缩短测试时间会导致测试不完整,无法达到测试的目的,测试效果也将大打折扣。软件项目过程应该是有计划的、可控制的,若项目过程管理混乱必然会降低软件测试的质量。
(5) 误区五:自动测试将取代手工测试
自动测试速度快、效率高、准确度和精确度高。但动测试只能测试某些软件的部分特性,且无法灵活处理意外事件。手工测试可以更好地发挥人的主观能动性、灵活性、随机应变性,可以更好地适应并处理突发事件。无论自动测试技术多么发达,自动测试也不能取代手工测试。
2学习软件测试的过程和方法研究
不同知识基础的人,学习软件测试技术、进入软件测试领域的感受也有所不同,很多人在学习软件测试知识的过程中非常盲目,没有计划、没有方向,学习效率低下。在此,本人对学习软件测试的过程和方法进行总结、研究和探讨,以作交流学习之用。
2.1学习软件测试的过程
(1) 第一步明确测试目的
有目的才有动力,有目标才有方向。软件测试就是对软件需求分析、设计规格说明、程序代码以及软件其他相关产品进行测试的过程,是软件质量保证的关键步骤。明确软件测试的目的和目标才能准确的定位测试并更有效的进行测试。
(2) 第二步结合实际项目,学习掌握测试方法、合理设计测试用例
常用的测试方法有黑盒测试和白盒测试。黑盒测试在完全不考虑程序内部结构和内部特性的情况下,针对软件界面和软件功能等进行测试,是最基本的测试方法。白盒测试允许测试人员利用程序内部的逻辑结构及有关信息设计或选择测试用例进行测试。准确的理解和掌握这些技术及其相互关系是进行软件测试的前提。
测试是有风险的行为,完全测试是不可能的。软件测试用例是进行测试的核心,是测试人员测试过程中的重要参考依据,它的组织和编写关系到整个测试工作和思路的正确性、有效性。测试用例的组织性和条理性是软件测试成功的一个重要因素。因此,在学习软件测试的过程中,要准确的把握测试方法并有条理的组织和设计测试用例。
同时,软件测试重在实践。理论的掌握只能达到纸上谈兵的功效,若想真正领悟测试技术的真谛还需进行实际的项目测试。结合具体的测试项目,灵活运用各种测试方法组织编写测试用例可以帮助初学者更好的理解和掌握这些技术。
(3) 第三步熟悉测试步骤
一个完整的软件测试过程包括测试计划、测试设计、测试开发、测试执行、缺陷跟踪和测试评估。软件测试管理工具可以系统地控制整个测试过程,实现从测试需求、测试设计、测试执行和缺陷跟踪所有操作的全方位跟踪管理,并为这几个部分提供了关联机制,使整个测试管理过程更加简单和有组织。在此,本人建议在学习软件测试技术的过程中,以一个测试管理工具(例:TestDirector)为平台进行测试实践,用心体会一个完整的测试过程。
(4) 第四步了解测试阶段
软件测试从软件需求阶段就已介入,基本贯穿软件项目开发全程,不同阶段有不同的测试点,需要不同的测试方法和技术。软件测试可以大致分为需求评审、单元测试、集成测试、系统测试、验收测试( 测试/ 测试)这几个阶段。明确各个阶段的测试目的和内容才能选择相对合适的方法进行测试。
(5) 第五步测试技术的提高和升级
软件自动化测试是一项让计算机代替测试人员进行软件测试的技术,通常借助测试工具来执行。自动化测试可以模拟软件实际运行效果,测试效率高、准确度和精确度高、可以持续测试而无须休息,弥补了手工测试的不足。
性能被列为系统质量的重要指标,并越来越受到人们的重视。性能测试是对软件性能的表现进行测试,较功能测试更难实现。
在掌握基本的测试方法和技术之后,可以继续深入研究自动化测试和性能测试,提高测试水平和测试能力。
2.2学习软件测试的方法
学习方法的好坏和学习习惯对学习效果的影响非常大,以下是软件测试初学者需要注意的几个地方:
(1) 勤学好问、充分利用各类学习资源
问题积累是学习的拦路虎。时间越久,问题越多,给学习造成了很大的阻力,更甚者会让初学者心生放弃。三人行必有我师,勤学好问,不要滋生“历史”遗留问题。当然,对于一个复杂问题,如果在短时间内无法理解透彻时,可以先简单的了解,然后在之后的学习和实践过程中慢慢体会其含义。由简入繁,勿钻“牛角尖”。
软件测试的学习资源非常丰富,书籍、网站、论坛、技术交流群等唾手可得。充分利用这些资源可以缩短学习和解决问题的周期,使学习更加高效。
(2) 实践出真知
实践是检验真理的唯一标准。要想真正学会测试,必须进行实际的测试。不要说没有测试环境,想学的话,完全可以自己搭建环境。有了行动才能有收获。
(3) 切莫“闭门造车”
软件测试技术是解决实际软件测试问题的技术,与现实世界密切相关,盲目的学习可能适得其反。因此,应多关注软件测试行业的动态,了解软件测试行业的真正需求,有目的的学习。
(4) 细心、耐心
软件测试是对人技术和意志的一种考验,不细心就有可能与缺陷擦肩而过,没有耐心就无法将枯燥的测试进行到底。只有充分的细心和耐心才能适应和完成软件测试工作。
(5)“怀疑”精神
定性思维往往是发生错误的根源,对于软件测试人员来说,更应该具有“怀疑”精神,要考虑每个细节,不要想当然地接受任何假设。
(6) 沟通能力
软件测试人员必须具有良好的人际关系和沟通能力。由于软件测试工作的特殊性,软件测试人员在项目小组中并不受欢迎。由于需要经常和开发人员、测试组其他成员进行沟通,软件测试人员说话办事必须稳重得当,不能随意指责别人,否则会事倍功半,影响软件测试的效率。在学习软件测试的过程中,应把握各种机会,多与人进行沟通和交流。
3软件测试的常用技巧
软件测试虽然辛苦,但掌握一定技巧后将事半功倍。
(1) 边界测试
边界是最容易出错的地方。在进行软件测试时,应测试临近边界的合法数据(即最后一个可能合法的数据,以及刚超过边界的非法数据)。
(2) 非法测试
人们在不了解软件功能或使用方法的情况下,经常会不经意地输入一些非法数据或进行一些非法操作而导致软件出现意外情况。因此,在进行软件测试的过程当中,应考虑进行类似的非法测试。例如在输入数字的地方输入字符、输入邮件地址的地方输入非法格式的数据、进行一些不合理的操作等。
(3) 接口测试
程序往往在接口的地方发生错误,在进行相关测试时切勿掉以轻心。
(4) 代码重用测试
在开发过程中有些模块功能几乎相同,程序员在重用代码时可能忘记在原有代码的基础上作修改或修改不全面而引发错误。在测试的过程中应更加留意这方面的测试。
(5) 失效恢复测试
当意外(如网络突然中断、系统崩溃等)发生时,用户能否继续使用系统,用户将受到多大的影响也是测试要考虑的问题。
4结束语
软件测试是一个入门易、深入难的工作。学习软件测试技术没有捷径可言,一点点的努力才是正道。学习过程是指引,学习方法是手段,希望以上的方法和技巧能够给大家以启迪,也希望更多有识之士能够与我们共同徜徉在软件测试这五彩缤纷的世界之中。
参考文献:
[1] 把冉. 软件测试行业特别调查[J]. 中国经济信息,2008(9):76-77.
[2] (美)Ron Patton. 软件测试[M]. 周予滨,姚静,等译. 北京:机械工业出版社,2008.
[3] 路璐,王文莉. 浅谈软件测试技术[J]. 郑州铁路职业技术学院学报,2007,19(2):41-42.
[4] 黄茗云,王英龙,张洪亮. 软件测试热点浅析[J]. 研究与探讨,2008(2):57-29.
[5] 康锋. 软件系统性能测试规划[J]. 大众科技,2007(8):65-66.
Research on Learning Process and Learning Method of Software Testing
TIAN Li-fang, LIU Shuan
篇10
软件定义一切这一新兴概念的提出,昭示着软件界的竞争将越来越激烈,软件技术的发展将越来越快。与此同时,软件质量也得到软件行业的重视。而确保软件质量的方法有多种,如:在软件开发过程中进行规范化管理,可以避免开发过程中的不规范、不安全的设计习惯;进行软件测试则能发现软件潜在的质量问题和验证软件使用中的可靠性等。
软件对测试的需求,使从事软件测试行业的人员快速增多。软件测试技术的发展和用户对第三方测试的需求,促进了软件测试外包行业的发展和兴起。另一方面,软件测试外包还可以在一定程度上填补战略目标所需的资源和企业自身资源之间存在的缺口。在多方面因素的共同作用下,越来越多的专业化测试团队快速成长起来,软件测试外包也越来越普遍。
为加强软件测试外包的规范化管理,本文提出一种基于CMMI的软件测试外包管理方法。该方法的实施可以有效地提高软件工程化水平,使软件测试外包活动可以更有效地进行,从而达到不断提高软件质量的目的。
1 软件测试外包管理架构设计
1.1 基于CMMI的管理过程改进
CMMI是由卡内基梅隆大学软件工程研究室开发的软件成熟度模型,是一种集成过程改进模型。但是,CMMI模型只是规定了每个过程域应该“做什么”,并没有指明每个过程域具体“怎么做”。
为了具体解决“怎么做”的问题,本文提出一种新的软件过程管理架构。本文将软件管理活动规范成进入准则、输入、活动步骤及要求、输出和完成准则等五个部分,如图1所示。
其中,输入是来自以前活动的工作产品;进入准则是判断是否可以进入本次活动的依据;活动步骤及要求是本次活动的具体内容;完成准则是判断本次活动是否完结的依据;输出是通过本次活动创建的工作产品。
1.2 软件测试外包管理过程架构
软件测试外包是指甲方公司将项目完全交给乙方公司,由乙方公司出人力物力,完成软件的测试工作,并按照客户需求,提供测试计划制定、测试用例编写等一系列测试技术服务。本文提出的软件测试外包管理过程由三个部分组成,分别是签订软件测试外包合同、软件测试外包活动的执行与管理、验收软件测试外包活动,如图2所示。其中三个活动的具体执行分别遵循2.1节中提出的管理过程。
1.3 软件测试外包人员角色
为加强软件测试外包管理过程,需要定义的人员角色包括软件技术负责人、软件合同负责人、分包方代表、客户代表、软件质量师、软件配置管理员。各人员分工主要为:
软件技术负责人:提供软件测试需要的代码、程序和文档,并负责相关解释。
软件合同负责人:负责软件测试外包合同的起草、活动的管理和验收。
分包方代表:负责参加软件测试外包合同和验收外包合同的评审,组织测试外包活动中的相关评审。
客户代表:负责参加软件测试外包合同和验收外包合同的评审。
软件质量师:监督整个软件测试外包活动的过程符合性和产品符合性。
软件配置管理员:对软件测试外包活动产生的工作产品进行配置管理。
2 软件测试外包管理具体实现
2.1 签订软件测试外包合同
根据对软件测试外包项目的技术特征和非技术特征所作的综合评估,选择合适的供方,与供方签订软件测试外包合同。
2.2 进入准则
本活动的进入准则包括:
(1)软件测试外包项目输入已经明确,需要测试的代码、软件、文档保持一致,测试输入通过相关评审并已入库。
(2)相关人员已经过选择供方、洽谈协议的有关技能的培训。
根据不同的外包测试级别,所需要准备的文档也不相同,如对于软件单元测试和软件部件测试需要提供的文档是《软件设计说明》,对于软件配置项测试需要提供的文档是《软件需求规格说明》,对于软件系统测试需要提供的文档是《系统/子系统需求规格说明》。
2.2.1 输入
本活动的输入包括:《合格供方名录》。
2.2.2 活动步骤及要求
(1)软件技术负责人和软件合同负责人根据项目需要,确定需要由外部提供软件测试的产品和服务。a)在项目策划或制定技术方案时,软件技术负责人应组织确定需要由外部提供的软件测试产品和服务,软件合同负责人负责审核软件技术负责人提出的测试产品和服务的完整性和合理性。b)软件技术负责人将软件测试外包的产品和服务列表,形成项目软件测试外包清单。c)该软件测试外包清单应纳入软件测试外包合同或《软件开发计划》。d)软件合同负责人选择供方。 ① 由软件合同负责人组织供方评价,实施测试供方的选择工作。优先从本组织的《合格供方名录》中选取资质完整性好的供方。必须选择经过评审,能满足要求的分包方;在无客户或法定管理机构指定的分包方时,优先选择符合CNAS-CL01《检测和校准实验室能力认可准则》、CNAS-CL45《检测和校准实验室能力认可准则在软件检测领域的应用说明》及DILAC/AC01《检测实验室和校准实验室能力认可准则》要求并获得认可的实验室。外包项目,供方必须具有同级的保密资质,并按本组织保密管理规定执行。
② 如果申请的供方在《合格供方名录》中,软件测试外包协议直接由软件技术负责人签署意见,主管领导审批;如果申请的供方不在《合格供方名录》中,应按照本组织的合格供方评定程序进行正式选择。将候选供方的资质调查情况按照合格供方评定程序执行,同时将其提供的相应的质量、保密等资质证明文件作为附件。
(2)建立并评审软件测试外包合同。a)所有由外部提供软件测试产品必须同供方签订软件测试外包合同或其等效文件(以下均简称合同)。软件合同负责人负责起草合同。b)软件合同负责人需要和供方确定,定期检查供方进展情况的监控计划,将监控计划或等效条款作为合同的一部分。监控计划需要明确里程碑监控、联合评审的时机、供方进度安排等。c)在供方协议执行前或做任何更改之前,项目软件技术负责人按照软件评审规程要求评审软件测试外包合同。d)客户有要求时,应邀请客户或客户代表参与对合同的评审。e)软件技术负责人与分承制方仔细审查合同的每个条款,确保合同没有错误和隐患,由组织领导或授权代表签订合同。
2.2.3 输出
本活动的输出包括:软件测试外包合同及其附件。
2.2.4 完成准则
本活动的完成准则包括:软件测试外包合同已经签订。
2.3 软件测试外包活动的执行与管理
软件合同负责人和供方共同执行软件测试外包合同,监督供方协议的执行。
2.3.1 进入准则
本活动的进入准则包括:软件测试外包合同已经签订。
2.3.2 输入
本活动的输入包括:软件测试外包合同及其附件。
2.3.3 活动步骤及要求
(1)软件合同负责人将外包项目的具体实施要求(文档编写要求、技术规范)及时传递给供方。
(2)依据合同中监控计划的规定对供方进行监督,具体包括:a)按照供方合同/技术协议规定的里程碑,召开项目协调会或由供方提供跟踪报告,跟踪项目的进展情况、供方投入(人力、物力、财力)的充分性、项目风险情况等,并对供方提出改进意见和要求。b)软件合同负责人应测量供方项目的进展、测试质量的情况,记录合同执行过程中发现的偏差。
(3)软件合同负责人参加里程碑监控、联合评审,填写里程碑评审报告,并保存评审报告/会议纪要/跟踪报告的复制件。
(4)软件合同负责人应协调和处理合同中出现的问题,包括:a)当供方进度或测试质量达不到要求时,软件合同负责人应协调供方,分析原因并采取相应的措施,以确保产品符合要求。b)软件合同负责人正式评审和监督活动中发现测试项目执行情况与项目计划的偏差大于20%时,软件合同负责人应与供方进行交流找出问题的原因,提出解决措施。
2.3.4 输出
本活动的输出包括:软件测试产品、阶段评审报告和实施过程的相关记录。
2.3.5 完成准则
本活动的完成准则包括:合同规定的测试产品和服务完成且齐套,通过了相关的评审和检查。
2.4 验收软件测试外包活动
对供方提交的软件测试产品(一般指软件测试需求规格说明、软件测试计划、软件测试说明、软件测试报告以及相关的记录文件)进行验收,证明供方提交的软件测试产品能够满足合同规定的要求。
2.4.1 进入准则
本活动的进入准则包括:供方已经完成合同规定的软件测试产品和服务。
2.4.2 输入
本活动的输入包括:
(1)软件测试外包合同及其附件。
(2)供方提供的软件测试产品。
(3)软件测试外包活动中形成相关管理类记录文件。
2.4.3 活动步骤及要求
(1)软件合同负责人评价并验收供方提交的软件测试产品。
制定验收大纲;在验收前与供方一起,按照本组织软件评审规程的要求评审验收大纲;依据验收大纲,组织召开供方产品验收会,执行验收评审,记录在验收中发现的问题,提交验收报告,验收结论设为: 通过:实施交付。有条件通过:实施交付,并形成会议纪要,提出解决问题的措施和确认计划。未通过:不能交付。形成会议纪要,提出解决问题措施、确定再次交付/验收的日期。软件合同负责人测量供方提供的软件测试产品的规模和验收中发现的问题。软件质量师跟踪发现的问题,直至问题解决。
(2)软件技术负责人组织软件外包测试产品的移交和纳入本组织的受控库,在移交过程中应遵守合同。移交后,软件合同负责人依据供方交付产品的情况,评价供方性能,并填写供方监督记录。
2.4.4 输出
本活动的输出包括:验收报告。
2.4.5 完成准则
本活动的完成准则包括:供方提交的软件测试外包产品已经移交完成。
3 总结
基于对CMMI模型的研究,本文提出了一种供方协议管理过程域在软件测试外包领域的具体的实施方案,解决了“怎么做”的问题。本文的软件测试外包活动三部分组成,分别是签订软件测试外包合同、软件测试外包活动的执行与管理、验收软件测试外包活动。简述了这三个活动的具体步骤,保证每个步骤都有相关证据遗留,将软件工程落到实处,对提高组织的软件产品质量和软件工程化水平将发挥重要作用。
参考文献
[1]张卫.关于计算机软件发展的研究[J].生物技术世界,2003.
[2]巨振乐,赵明辉.正在兴起的软件测试外包.时代经贸,2009(120).
篇11
1软件测试工作的重要性
软件测试工作的重要性主要体现在两大方面:一是软件测试可以提升开发效率。在软件工程项目进行过程中,一般将质量、进度作为核心评价指标,很多项目负责人都会尝试各种先进方法技术,以期望可以加快开发进度,一旦出现返工现象,会对项目进度产生巨大影响,这就突出软件测试重要地位,可以通过合理的测试发现存在的问题,加快开发进度的同时避免出现返工现象。软件测试工作拥有很多测试项目,其中包括集成测试、单元测试,可以第一时间发现软件存在的BUG及实际问题,这样就可以提供充足的修改时间,减少开发工作量。二是软件测试可以保障软件质量。在开展计算机软件项目时,关注进度的同时还要关注质量,通过常规的软件测试,可以发现系统问题,但是无法发现系统BUG,这时候就需要展开集成测试,可以让模块之间拥有更高的集成度,减少软件错误。
2计算机软件测试面临的问题
2.1软件测试自动化程度较低。
近些年,计算机软件行业处于一个高速发展的状态,也出现了自动化测试工具,但是这类工具本身技术不够成熟,存在较多的缺陷,需要花费大量的成本费用,操作难度相对更高,无法实现快速拓展等,没有达到大规模应用的要求,仅仅运用到一些软件测试的特殊工作,在实际的软件测试过程中,还需要大量的测试人员,特别是在嵌入式测试这一部分内容中,基本无法使用自动化测试软件,需要人工校对测试,由于信息技术发展较为迅速,为计算机软件开发提供充足的技术支持,软件开发水平越来越高,软件工程规模也在随之扩张,但是现阶段软件测试仍然以人工测试为主,一方面会提高开发成本,导致人工费用占比不断扩大,另一方面无法保证最终的软件质量,人工测试很难达到零差错,影响软件质量,同时降低测试效率,增加项目运行风险。
2.2测试工作介入时间较晚。
正常情况下,软件开发和测试呈现出相辅相成的关系,两者相互搭配完成软件开发工作,才能得到高质量的计算机软件。为了充分发挥软件测试的作用,就要控制好开发时间和测试时间,但是就调查发现,很多企业将全部精力都放在软件开发工作上,缺乏对软件测试环节的重视,经常将测试工作安排在较后的位置,导致软件测试介入时间过晚,无法实现对软件质量的科学管控。由于软件测试介入时间较晚的原因,在开发后期才发现软件存在的缺陷问题,只能展开返工,增加不必要的花费。
2.3测试方案与案例的利用率较低。
现阶段,软件测试管理体系还不够完善,存在较多的漏洞,在软件开发过程中,无法提供专用的测试案例库,在后续的软件测试期间,经常出现重复利用测试案例的现象,这就会造成不小的资源浪费。同时,现阶段没有完善的测试程序归档规范,在测试结束后没有按照要求完成归档任务,导致测试案例库得不到及时更新,只保存一些较为老旧的案例,无法发挥实质作用。在软件测试的后期阶段,即使发现与前期相似的测试工作,也没有可以参考借鉴的案例,还需要重复测试工作,投入更多的时间精力,浪费资源的同时还会耽误开发进度。
2.4缺乏稳定高效的测试团队。
在软件开发过程中,软件测试成本占比较高,可以达到总开发成本的30%左右,需要一支专业的测试团队,才能顺利在规定时间内完成测试任务。但是现阶段项目开发期间过于重视开发,对于软件测试较为忽视,缺乏足够的专业测试人员。在此同时,项目给软件测试拨下的经费相对较少,甚至出现经费短缺的现象,导致软件测试工作进展缓慢,逐渐发展成形式化工作。除此之外,由于忽视软件测试的原因,无法培养出足够的软件测试后备力量,很多测试人员长时间重复同样的测试工作,无法提升综合能力,掌握的技能相对较为单一。可以看出,现阶段大部分的软件开发项目都缺少专业的测试团队,测试人员掌握的专业技能较少,无法保证软对的稳定性,这些都是急需解决的问题。
3计算机软件测试工作的解决对策
3.1灵活使用软件测试方法。
(1)强化自动化测试手段。虽然现阶段自动化测试手段较少,但是仍然有一些较为成熟的手段,在软件测试期间应该加强对这类手段的重视,选择技术更为成熟的自动化测试手段。在选择测试方法时,要展开综合性的评估,考虑到软件开发项目的实际情况,选择最适合的一种,才能达到预计的测试效果,加快开发进度的同时提高软件质量。在选择自动化测试手段时,考虑到系统架构、数据库平台、软件规模、复杂程度等,选择适合的评估项,才能选择最适合的开发工具,一方面可以提高测试质量,另一方面可以加快测试效率。同时,还要加强对软件自动化测试手段的研发,结合市场需求推出新型产品,弥补市场上的空白。(2)学习借鉴及自主研发。在软件测试过程中,要加强对先进案例的学习,国外一些发达国家的软件开发工作起步更早,已经积累了丰富的开发及测试经验,研发出完善的软件自动化测试工具,要加强对宝贵经验的借鉴,结合我国软件开发测试的实际情况,取其精华去其糟粕,不断提高我国软件测试水平。同时,企业要可以加强对软件自动化测试工具的研发,要考虑到自身的规模和需求,通过自主研发的方式,获得的测试工具更符合企业需求,可以大幅度提高测试效率。
3.2构建软件测试标准及软件测试体系。
一是标准化软件测试规范及体系。明确规定软件测试工作流程、团队建设模式、软件测试不同阶段工作内容以及预期取得的成果,统一化软件测试工作文档格式及内容,对软件测试工作的不同阶段内容制定可行性较高的标准体系。二是构建软件测试案例库。持续完善软件测试案例库,有助于提升软件测试案例的利用率,能够尽早确定系统问题的来源,缩短问题分析及问题解决方案制定所需要的时间,避免此类问题再次发生,真正提升软件测试效率,保障软件质量。
3.3软件项目更加重视测试管理工作。
篇12
Analysis of Software Testing Process Work Request
Yuan Zhengjiang
(Jiangnan Institute of Mechanical and Electrical Engineering,Guiyang 550009,China)
Abstract:This paper divided software testing into requirements analysis,software testing planning,design and implementation,software testing and software testing summary execution phases,and the test process management requirements are described.
Keywords:Software test;Process management
一、前言
软件测试是软件质量保证的重要内容,随着软件规模的不断扩大,复杂程度的不断提高,测试质量更加难以度量。为促进软件测试质量,应规范软件测试过程管理。软件测试过程包括:软件测试需求分析、软件测试策划、软件测试设计和实现、软件测试执行和软件测试总结等。本文对各软件测试过程的工作要求进行了阐述。
二、软件测试需求分析
根据软件测试任务书、被测软件的需求规格说明和设计文档,对测试任务进行测试需求分析,分析的主要内容包括:
1.确定需要的测试类型及其测试要求。测试类型包括功能测试、性能测试、接口测试、安全性测试、人机交互界面测试、强度测试等;测试要求包括状态、接口、数据结构、设计约束等。2.确定测试类型中各测试项及其优先级。3.确定每个测试项的测试充分性要求。根据被测软件的重要性、测试项目和约束条件,确定每个测试项应覆盖的范围。4.确定每个测试项测试终止的要求,包括测试过程正常终止的条件和导致测试过程异常终止的可能情况。5.测试需求分析阶段的工作产品:软件测试需求规格说明文档。
三、软件测试策划
根据软件测评任务书、软件需求规格说明和设计文档、软件测试需求规格说明文档等进行测试策划,策划一般包括:
1.确定测试策略。2.确定测试需要的技术或方法,如测试数据生成与验证技术、测试数据输入技术、测试结果获取技术。3.确定要受控制的测试工作产品,列出清单。4.确定用于测试的资源要求,包括软硬件设备、环境条件、人员数量和技能等要求。5.进行测试风险分析,如技术风险、人员风险、资源风险和进度风险等。6.根据软件测试任务书和被测软件的特点确定测试任务结束条件。7.确定被测软件的评价准则和方法。8.根据测试资源和测试项,确定进度。9.确定需采集的度量及采集要求。10.测试策划阶段的工作产品:软件测试计划文档。
四、测试设计和实现
根据测试需求规格说明和测试计划进行测试设计和实现,应完成如下工作:
1.按需求分解测试项。将需测试的测试项进行层次化的分解。2.说明最终分解后的每个测试项。说明测试用例设计方法的具体应用、测试数据的选择依据等。3.设计测试用例;测试用例包括如下内容。(1)测试用例名称和用例标识;(2)测试用例追踪。说明测试所依据的内容来源,并跟踪到相应的测试项;(3)测试用例说明。简要描述测试的对象、目的和所采用的测试方法;(4)测试用例的初始化要求,包括硬件配置、软件配置、测试配置、参数设置等初始化要求;(5)测试用例的输入。包括:每个测试的名称、用途和具体内容及其性质;测试输入的来源,以及选择输入所使用的方法;测试输入是真实的还是模拟的;测试输入的时间顺序或事件顺序;(6)测试用例的期望结果;(7)测试用例的期望结果评估准则。评估准则用以判断测试用例执行产生的中间或最后结果是否正确;(8)实施测试用例的执行步骤;(9)测试用例的前提和约束,如特别限制、参数偏差或异常处理;(10)测试终止条件。说明测试用例的测试正常终止和异常终止的条件;4.确定测试用例的执行顺序;5.准备和验证所有的测试用数据。针对测试输入要求,设计测试用的数据;6.准备并获取测试资源,如测试环境所必须的软、硬件资源等;7.必要时,编写测试执行需要的程序,如开发部件测试的驱动模块、桩模块以及测试支持软件等;8.建立和校核测试环境,记录校核结果,说明测试环境的偏差;9.测试设计与实现阶段的工作产品:软件测试说明文档。
五、测试执行
按照测试计划和测试说明的内容和要求执行测试。测试执行的要求如下:
1.如实填写测试原始记录,当结果有量值要求时,应准确记录实际的量值;2.根据每个测试用例的期望测试结果、实际测试结果和评估准则,判定测试用例是否通过;3.当测试用例不通过时,应根据不同的缺陷类型,采取相应措施:对测试工作中得缺陷,进行记录并实施相应的变更;对被测软件的缺陷应记录到软件问题报告单中;4.当所有的测试用例都执行完毕后,根据测试的充分性要求和有关原始记录,分析测试工作是否充分,是否需要进行补充测试;5.在执行测试的过程中,可根据测试的进展情况补充测试用例,但应留下用例记录,并在执行测试后,变更测试说明;6.测试执行阶段的工作产品:测试记录、软件问题报告单。
六、测试总结
根据软件测试任务书、被测软件文档、测试过程文档等,对测试工作和被测软件进行分析和评价。测试总结的要求如下:
1.对测试工作进行分析和评价。总结测试是否符合过程管理要求,测试是否充分,是否满足用户要求等;2.对被测软件进行分析和评价。总结被测软件功能、性能、安全性、可靠性等是否满足要求,对软件缺陷影响进行描述,提出改进建议等;3.测试总结阶段的工作产品:软件测试报告。
七、结束语
只有把每个测试阶段应完成的工作做好了,才能保证最终的软件测试质量。软件测试组织都应制定适合自己的软件测试过程管理体系文件,确保过程管理规范,各阶段工作做到位。
参考文献:
篇13
探索性测试是解决嵌入式系统软件测试需求变化快、软件文档缺乏、测试周期短等现实问题的可行手段之一。为了恰当运用,需要总结探索性测试的一般性应用方法体系,并探讨其与嵌入式系统软件测试体系的联系和冲突。在此基础上提出适用于嵌入式系统软件测试的探索性测试应用模型。
1 探索性软件测试的基本原理
探索性测试的概念形成较早,经过随后的发展已形成了一定的应用体系。
1.1 探索性软件测试的概念
传统的软件测试分为测试需求分析、测试策划、测试用例设计、测试执行和测试总结等主要阶段,依次开展。传统软件测试流程依赖于完整、详实的软件需求和设计文档作为输入。而在现实的测试任务中,软件需求和设计文档往往有误或不完备,这导致脚本测试活动无法正常有效开展。
“探索性测试是同时进行学习、测试设计和测试执行的一种测试方法;也就是说,测试没有事先通过确定的测试计划定义,而是动态地被设计、执行和修改”。探索性测试(也称为探索式测试)最早于1983年提出,并在实践中发展 。与传统脚本测试相比,探索性测试具有以下技术特点:
(1) 测试活动的同时性。鼓励在测试执行的过程中,同时进行对被测软件的学习和测试设计。
(2) 关注测试任务。更关注于被测软件本身和需要测试的问题。
(3) 测试中的演绎推理。通过前一个测试活动的结果来指导后期测试的开展。
(4) 利用人的优势。关注于人本身的优势,如判断、分析、应变和协作的能力。
作为一种敏捷软件测试方法,探索性测试弱化了对测试的预先设计和测试流程的严格要求,而强调测试的同时性以及人的经验和创造性,关注于发现软件缺陷,持续优化测试工作。测试人员在测试?理解?再细化测试的迭代中,通过测试活动本身不断深入学习被测软件,从而能够缩减测试准备时间,发现更多缺陷,并使得软件测试可以在被测软件说明或文档不齐全的情况下开展。
1.2 探索性软件测试的主要方法
探索性测试的概念提出后,经过工业界和学术界人士的工作,已初步形成包含经验运用、执行策略、管理模型的体系。
1.2.1 探索方法
探索性测试强调对测试人员的知识和经验的运用。这些经验和知识可分为领域知识、系统知识和一般的软件工程知识。领域知识指领域规则、客户流程和操作场景等,包括用户使用和具体应用领域知识。系统知识是关于待测软件的特性和技术细节的具体知识,包括系统级的交互以及个体功能细节。一般的软件工程知识即不需要对被测软件系统和应用领域的具体知识。
丰富的知识和经验是对探索性测试人员的基本要求,以此为基础,探索性测试的发挥人的创造性,并由此增强了测试过程的适用性。从工程应用的实践中,已总结出了一些有用的启发式方法。运用这些策略和启发式方法,可以帮助软件测试人员在具备了基本的知识和经验的情况下,尽快熟悉被测系统,并在测试过程中充分运用经验和创造性。
在开展具体的测试活动时,测试人员则可以借助一些启发式方法在测试活动中“探索”被测软件。这些启发式的方法是测试中为了发现可能的缺陷,测试人员常用的一些技巧 。这其中典型的有Hendrickson的检查单以及Whittaker的漫游方法。这些方法的共同特性是提醒测试人员:
(1) 应关注软件最主要的功能,并在测试的过程中对软件的行为进行联想、质疑并发散,充分利用逆向输入、边界情况、近似值、错误输入和特殊值(如0),通过软件行为的原因、表现等举一反三;
(2) 应刻意构造一些特殊的行为,如尝试遍历所有输出、尝试最长操作路径、尝试关注关键数据的演化、打散或集中事物、长时间运行软件等;
(3) 应构造测试检查软件主要功能往往不关注的情景,例如启动和退出、全选、空值、资源过量和紧张、取消操作、重复、同时运行等。
传统方法假设软件文档中说明了软件的各种预期行为,因而可以通过分析文档来提取测试预期(Test Oracles)。然而,在软件信息不完备的情况下,测试预期则无法提前预知。HICCUPPS的启发式方法,从历史(History)信息、顾客形象(Image)在软件中的恰当映射、类似软件的对照(Comparable Products)、与软件和商业声明(Claims)、用户预期(User’s Expectations)、同类产品本身(the Product itself)、明显的意图(Purpose)和法律规章(Statutes)等角度,帮助测试人员在判定测试是否通过。
1.2.2 管理模型
良好的测试管理模型是保证测试质量、提高测试效率的必要保障。基于会话的测试管理(SBTM)是探索性测试领域中最常用的管理实践。SBTM将软件测试活动分解为若干会话(Session)。会话特征如下:
会话围绕主旨(Charter)开展:即待测试的任务和目标;会话时间较短:时间长度在90 min左右;会话需要记录:借助会话记录单;每轮会话需要计划和总结:一轮会话执行通常是一天,其中包含若干个会话测试。
基于会话的测试过程如图1所示。当接到测试任务时,测试小组通过对测试任务进行分析讨论,确定各会话的主旨。会话主旨包含被测软件的主题、测试人员的角色、目的、条件、优先级、参考文档、 数据、思路、预期等信息。测试项目负责人分配各会话测试人员,随后开展首轮会话执行。一轮会话执行通常为一天。每轮会话执行结束后,需组织会话总结,主要借助以下维度进行:会话执行情况、笔记、缺陷、问题、数据、时间分解、人员安排等。通过总结确定下一轮会话、资源分配。下一轮会话执行按照相似的方式开展。在测试达到预期时间和充分度要求后,测试结束,并根据每轮会话报告单整理测试报告。
图1 基于会话的测试管理示意图
会话还可以根据需要进行扩展,例如可以包含对会话的风险评估和资源统计,也可以将会话延伸为对特定问题的关注,形成测试的线索。
1.3 探索性测试工具
探索性测试的有效开展同时依赖于工具的辅助。已有一些探索性测试的工具可供参考,例如Microsoft Test Manager(与Visual Studio组件),BBTestAssistant、TestExplorer,Session Tester,Rapid Reporter,Wink。这些工具通过基于录制回放、截屏和辅助文字信息的方式帮助测试人员记录探索性测试的执行过程,其中Session Tester、Rapid Reporter和Wink是免费的,Session Tester和Rapid Reporter则专门针对会话机制进行了设计和优化。
虽然这些基于录制回放原理的工具能够辅助测试人员整理测试报告,但是却缺少对测试人员运用其知识和经验的指导,对探索性测试的执行也缺少引导作用。目前没有专门的探索性测试流程管理工具,不能起到控制测试流程的作用。有必要针对具体应用研发相应的辅助工具。
2 探索性测试的应用及其效果
经过发展,探索性测试已在多个企业运用。人们对探索性测试方法的优缺点也有了更加明确的认识。
2.1 探索性测试在工业界的应用
微软是较早实践探索性测试方法的软件企业。微软在Windows 2000系统徽标认证、必应搜索引擎和地图、Visual Studio、Windows Media Player等系统、网络和桌面应用中广泛使用了探索性测试的技巧和方法,尤其是漫游探索法。在其他公司,探索性测试也成功的运用于互联网应用行业以及信息系统的软件测试中。这些测试任务往往在软件文档不全、测试时间紧、企业对采用传统的脚本测试流程不满意的背景下开展,通过运用基于会话的方法,测试团队都能够高效的完成测试任务,甚至发现了采用传统方法在类似项目中遗漏的缺陷,在系统上线后也没有发生重大问题,软件项目组对测试团队的满意度有提升。
虽然可能没有直接说明采用探索性测试,开源软件的测试往往具有探索性测试的特点。这些测试往往在没有详细的软件文档和测试用例设计的基础上,利用志愿测试人员的经验和兴趣开展 。在敏捷软件研发团队中,探索性测试的方法也多有运用。成功案例包括与XP和Scrum敏捷软件开发的结合。
除了在工业界的运用,也有学者对敏捷软件测试的应用进行了系统的研究和讨论。Itkonen等人在芬兰多个软件公司中研究了测试人员对探索性测试的使用方法、效果和评价,对探索性测试的优缺点、应用条件合场景以及推荐的方法进行了总结;通过研究和实验,发现了探索性测试在缺陷检测能力上能达到甚至超过传统脚本测试的水平。Naseer,史亮和高翔也总结了探索性软件测试在瑞典软件公司、国内的微软和淘宝等企业运用的经验,对探索性测试的活动进行了总结。Bach等人还成立了公司专门从事测试方面的研究和推广。另外,也有一些研究将探索性测试思想与测试自动化方法结合,或利用探索性测试的思想提高测试效率和质量的工作。
从目前的应用情况来看,探索性测试技术多数是在桌面应用、B/S架构信息系统等领域的应用,在嵌入式系统软件测试中的应用较少。
2.2 探索性测试的优缺点
经过实践,总结上述对探索性测试的应用,能够发现,探索性测试尤其适用于要求在短时间内发现被测软件一些重要缺陷或事先没有能够进行详细测试设计的情况;但也具有测试过程不易控制、测试文档不全等问题。因此,在具体领域中运用探索性测试技术时,有必要根据领域特性,设计适合的测试流程,扬长避短。
一般认为探索性测试的主要优点和缺点如下:
优点:便于利用人员经验;适合于从用户角度的测试;适用于缺少软件文档、测试时间紧情况;灵活且适应性强;对测试人员和开发人员的反馈较快;能够为测试带来新内容,降低“杀虫剂”效应。
缺点:缺少足够的文档,不易度量覆盖率;测试统计数据不足,不利于决策;对测试人员经验要求较高;在测试人员经验不足、管理不严格的情况下,可能会影响测试质量;如缺少恰当工具,则不利于缺陷复现。
3 探索性测试在嵌入式系统中的应用
探索性测试技术却是能够应对嵌入式系统软件测试中软件需求变化快、测试周期短、软件文档不全等现实问题的可行方法之一。本文首先分析探索性测试在嵌入式软件测试中应用的需求和困难,然后探讨探索性测试技术与嵌入式系统软件测试体系的结合方法,对应用模型提出建议,并对应用中可能的问题和后续研究进行讨论和展望。
3.1 探索性测试一般性方法的适用性
随着IT技术的发展和各国在国防、智能电网、物联网、智能手机等行业投入的加大,嵌入式软件产品越来越多,测试任务越来越重,往往难以保证充裕的测试时间。软件需求和开发文档存在不准确、不完备的情况。而同时,嵌入式软件的测试具有较强的领域特性,领域内测试人员对被测系统的经验比较丰富。因此,需要也有条件在嵌入式系统软件中开展探索性测试,以降低对软件需求和设计规约的依赖、发挥探索性测试对软件变化的适应性和充分利用测试人员经验的优势。
然而,探索性测试技术在嵌入式领域中的应用却较少。探索性测试的通用方法没有直接用于嵌入式系统软件测试的原因主要是 :
(1) 软件测试文档:探索性测试不鼓励测试花费精力在策划和准备上,而测试执行记录风格随意性较大,不利于形成统一、完备的测试文档;这与按照国标和军标中对完整的软件测试文档的要求冲突。
(2) 软件测试充分性度量:不易度量测试覆盖率,不易评价测试质量。
(3) 软件测试过程控制:缺少对配置和测试流程的系统性管理,可能造成测试过程失控。
3.2 探索性测试应用模型探讨
为了解决嵌入式系统测试中软件需求变化快、测试周期短、软件文档不完备等现实问题,有必借鉴探索性测试技术在信息系统、网络应用、操作系统等方面的成功经验,将其融入嵌入式系统软件测试体系中来。为了与相应的软件测评体系和标准匹配,必须对探索性测试通用方法进行调整,设计探索性测试在嵌入式系统软件测试的应用模型。
一种可参考的“脚本会话模型”如图2所示,是以探索性测试一般性理论、探索性测试各特性在各型产品软件的适用性研究为基础,将探索性测试与传统脚本测试相结合的软件测试模型。为充分利用两者的优势,脚本会话模型的整体仍以传统脚本方法为基础,从而利用脚本测试管理中测试文档完备和过程管理控制完善等优点,而在测试执行过程中充分发挥探索性测试的灵活、高效优点,引入会话、漫游测试法等探索性测试等方法,同时借助嵌入式系统软件测试典型数据复用库来实现对测试人员经验的固化和复用。
图2 嵌入式系统软件脚本会话测试模型
如图3所示,脚本会话模型整体流程遵循经典的脚本测试流程,但发挥了探索性测试对经验的利用和灵活性的特点。
图3 脚本会话测试模型流程框架
包含以下步骤:
(1) 测试策划和设计阶段;借助领域软件测试典型数据复用库(测试人员经验的固化体现)形成测试项、构造测试用例,降低对软件需求和设计文档的依赖,初步完成测试需求的提取和测试用例的设计。
(2) 测试执行阶段:测试执行以基于会话的方式开展,并对一般会话进行扩展。根据测试设计和计划,确定每个会话的主旨、用例和测试方法。在每一次会话中,测试人员可以结对开展测试执行,根据预先指定的漫游策略和启发式方法,针对一个测试项进行探索,并补充测试用例。测试人员在会话结束后整理会话记录单。根据本轮会话执行情况,记录缺陷、改善测试设计,并准备下一轮会话。如此迭代直到测试结束条件满足,测试执行结束。
(3) 测试总结阶段:借助测试执行中各个会话报告单,总结和报告缺陷。
3.3 讨论和展望
探索性测试在互联网和桌面应用已经成功实践,而在嵌入式领域应用仍然较少。在嵌入式系统软件测试中运用诸如脚本会话模型的探索性测试技术时,应注意以下三点问题:
(1) 测试过程管理和文档。必须重视探索性测试的过程管理以保证测试过程受控。同时在适当的阶段应编写相应文档作为测试阶段性成果,并在测试执行完成后更新相应文档。
(2) 结合具体领域。具体领域的软件测试典型数据复用库可以看作是对该领域软件测试人员测试经验的固化,是软件测试团队的组织资产,有助于团队新成员快速熟悉被测系统,提高探索性测试的效率。
(3) 针对测试团队和项目制定具体策略。制定探索性测试中的典型方法的应用策略,并注意收集反馈,在实践中持续改进。
探索性测试作为一种在互联网、操作系统等领域成功运用多年的测试技术和理念,可以与其他软件测试技术结合,共同推进嵌入式软件测试质量的提升。可能的结合方向包括(但不限于):
(1) 基于模型的测试和验证。借助软件模型可发现隐藏在软件界面和正常使用流程下的交互,其中可能隐藏了大量的缺陷;借助模型检验工具提供的反例,测试人员还可以对软件进行更加深入的探索;
(2) 测试自动化。嵌入式系统软件需要处理传感器送来的大量数据,采用自动化方法能够有效减少测试人员的工作量;结合探索性测试的技术,也能够为测试用例约简和测试预期问题提供解决途径;
基于剖面的测试:构造嵌入式系统的操作剖面和用户剖面,辅助测试人员能有选择性地对系统进行探索。
4 结 语
探索性测试技术经过研究和发展,已形成了一套可行的体系。探索性测试在嵌入式系统软件测试中的应用还较少。经过对探索性测试体系的全面研究,能够更好的理解这种方法在嵌入式系统软件测试中的适用性,并为融合探索性测试与传统嵌入式软件测试方法,形成适用于嵌入式系统软件测试的探索性测试应用模型提供思路和方向。
参考文献
康一梅,张永革,李志军,等.嵌入式软件测试.北京:机械工业出版社,2008.
BACH J. Session?based test management . Software Testing and Quality Engineering, 2000, 2(6): 1?4.
WHITTAKER J A.探索式软件测试.北京:清华大学出版社,2010.
LYNDSAY J, VAN EEDEN N. Adventures in session?based testing . . http://stickyminds.com/articl.
TUOMIKOSKI J, TERVONEN I. Absorbing software testing into the scrum method . Lecture Notes in Business Information Processing, 2009, 32: 199?215.