时间:2022-11-19 20:14:13
序论:在您撰写软件测试项目总结时,参考他人的优秀作品可以开阔视野,小编为您整理的7篇范文,希望这些建议能够激发您的创作热情,引导您走向新的创作高度。
关键词:国产化平台;信息系统;软件测试
计算机软硬件实现自主可控是国家重要的发展规划,近年来国产化软件平台取得了长足发展,操作系统、数据库、办公软件、中间件等均已出现不少商用国产化产品,为信息系统能够采用国产化平台进行研发奠定了基础。软件测试作为软件研发领域中的重要一环,直接影响软件产品质量,一直备受重视[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测试总结
测试总结活动是对之前几项测试活动的总结,在测试执行完成后对各项测试活动进行整理分析,形成测试报告。基于国产化平台的信息系统软件研发还未广泛开展,对应的软件测试技术也需要不断的探索与研究,相比于非国产化平台的软件测试,国产化平台信息系统的软件测试不再仅限于单一项目,还需要与其他项目的测试策划相关联。因此测试总结活动还需要以资源池的形式进行技术积累,将整个测试过程中的软件测试方法、测试工具、测试分析等进行技术储备与传播,为其他国产化平台的软件测试提供借鉴。同样的,在其他项目的软件测试策划活动中,可以从资源池中的技术储备选取用于支撑整个项目测试的技术。
关键词:项目驱动法;软件测试;教学方法
作者简介:赵晓君(1979-),女,河南南阳人,郑州轻工业学院软件学院,讲师;黄艳(1976-),女,河南信阳人,郑州轻工业学院软件学院,副教授。(河南 郑州 450002)
基金项目:本文系郑州轻工业学院校级青年教师教学改革项目的研究成果。
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2013)07-0101-02
随着软件产业的快速发展,软件系统的规模越来越大,功能实现也越来越复杂,导致软件中存在的缺陷数量大大增加,这些缺陷将会带来各种损失,甚至出现灾难性的后果。因此,如何保证软件质量已成为所有使用软件和开发软件的人们关注的焦点。软件测试作为软件工程的一个重要组成部分,是目前用来验证软件是否能够满足用户需求功能的唯一有效方法,是保证和提高软件质量的重要环节。为适应软件产业的发展趋势和满足软件测试人才的大量需求,目前已经有许多大学在软件工程专业添加软件测试课程或者添加软件测试专业方向。
软件测试专业包含多门专业课程,有“软件测试理论”、“软件测试技术”和“软件缺陷管理”等,其中,“软件测试理论”课程重点为初学测试的同学讲解测试的基础理论知识,主要包括软件测试基本理论、软件测试方法和技术等,在多门专业课程中占有举足轻重的地位。
一、“软件测试理论”教学现状
“软件测试理论”课程重点介绍软件测试的基本理论,因此整个课程主要以教师讲授为主,在教学的过程中存在以下问题:
1.教学内容理论性较强,难以调动学生学习的主动性
对于初学软件测试的学生,首先要向其讲授相关测试理论,使其建立系统的测试理念。
但是学测试的学生大都是理科生,喜欢操作性强的课程,“软件测试理论”课程的理论性太强,需要背诵很多概念性的知识,这对于他们来说是比较困难,不能激发学习的主动性,教学效果不理想。
2.测试方法和技术案例实际应用价值不足,学生很迷茫
测试方法和技术是“软件测试理论”课程学习的重点和难点,这部分内容仅靠老师的讲解和书本上的案例很难让学生深入理解掌握测试技术的内涵,学生在学习这部分知识时会产生迷茫:学习这些知识有什么用处,在具体的项目测试中,应该怎样应用这些知识?没有实际的项目案例做支撑,学生会失去继续学习下去的兴趣。
针对上面的问题,本文提出将项目驱动法应用于“软件测试理论”课程的教学中,学生在进行项目实践的同时,根据需要学习软件测试相关理论知识,这样有助于提高学生的学习主动性,有助于理论知识的牢固掌握,有助于提高学生的实践技术能力,改善该课程的教学效果。
二、项目驱动法
项目驱动法是目前中国教育领域中一种比较新的教育教学方法。
所谓项目驱动法,是师生通过共同实施一个完整的项目工作而进行的教学活动,它既是一种课程模式,又是一种教学方法。[1]这里的项目根据课程教学内容的不同所包含的涵义也不同。在“软件测试理论”课程教学中,项目即指一个已经开发完成的软件测试工作。通常,项目教学都是实践导向的和任务驱动式的教学。
在项目驱动模式的教学活动中,教师根据学生现有的知识水平和项目经验选择一个合适的项目,以项目实施为主线展开教学活动,把课程相关的知识点的讲解融入项目操作的每个步骤中。在项目实施的过程中,以学生为中心,教师主要做组织和指导工作,学生在整个项目的实施过程中处于探索知识的情景中,充分发挥主动性、积极性和创新精神,综合运用所学的知识和技能解决实际问题,最终达到有效地将所学知识系统化深入化的目的。
这种模式从根本上将传统课堂中老师满堂灌转变为“学生为主体,教师为主导”的教学模式。同时,学生通过一个具体项目的实践,感受到了真实项目管理的思想和团队协作的必要性,提高了学生的创新能力和项目实践能力。拥有真实项目的实践经验使得学生在择业时拥有很大竞争优势。
将项目驱动法应用于“软件测试理论”课程教学中,在课程理论教学中加入一个完整的项目测试实践环节,通过项目实践能够很好地激发学生的学习主动性,使学生经历了一个“先做,遇到问题,再学,解决问题,再做,获得经验”的学习过程,最终完成一个完整的软件测试实践,同时也学到了“软件测试理论”课程应该掌握的理论知识。这样,既解决了软件测试理论课程理论性太强的问题,又解决了测试方法和技术案例实际应用价值不足的问题;而且丰富了学生的实践经验,提高了软件测试理论课程的教学效果。
三、“软件测试理论”课程教学目标和教学内容
1.教学目标
通过本门课程的学习和实践,理解软件测试理论与原则;掌握主流测试技术和方法,熟悉测试用例的编制、熟悉软件测试的基本流程,熟悉软件测试过程中各类技术文档的编制规范,并能灵活运用测试技术解决实际问题。
对于一个具体项目软件,每一个学生都能够顺利完成如下手工测试流程:根据软件需求规格说明书撰写测试计划,设计测试用例、进行测试环境配置和测试数据准备工作、执行各种测试,撰写缺陷报告、跟踪并修复缺陷、进行测试评测,最后提交测试总结报告,达到软件企业对测试专业人才的要求。
2.教学内容
“软件测试理论”课程的教学内容主要包括软件测试基本理论、软件测试基本技术、软件测试过程和软件测试工具。[2]
软件测试基本理论包括软件测试、软件缺陷和测试用例的基本概念,测试的目的、测试模型、测试分类和测试流程。
软件测试基本技术包括白盒测试和黑盒测试;其中白盒测试包括静态测试和动态测试,动态测试又包括程序插桩、逻辑覆盖、基本路径测试等;黑盒测试包括等价类划分、边界值分析、因果图法、判定表法、场景法等。这些基本技术都是在进行测试用例设计时使用的。
软件测试过程是指执行测试的过程,通常分为四个阶段:单元测试、集成测试、系统测试和验收测试。
软件测试工具有多种:功能测试工具、性能测试工具和测试管理工具等。
四、项目驱动法的应用方案
1.项目的设计
实施项目驱动法,首先需要设计项目。项目的设计与选取直接影响到该教学模式的教学效果及学生的学习兴趣。“软件测试理论”课程项目的选取与其他课程又有所不同,学生要进行的操作是对现有的或者已经开发完成的软件的测试工作,因此在设计项目时应遵循以下几条原则:
第一,项目是现有的软件或已经开发完成的软件,软件中有部分明显错误,有部分隐藏错误;明显错误有助于提高学生的测试积极性,隐藏错误有助于启发学生进行更深入的测试。
第二,项目具有典型性,代表大部分软件的共性。通过该项目的测试,学生可以掌握大多数软件的测试流程和测试方法。
第三,项目中有多种情景元素,符合使用多种测试技术和方法,有助于学生在进行项目测试的同时,学习使用多种测试技术设计测试用例的方法。
第四,项目大小和难易适中。每个项目组的人数控制在3~5个人,设计的项目能使学生通过努力在一定的时间内完成。
根据以上原则,本课程目前选择的项目是《企业薪酬管理系统》。
2.项目驱动法的实施
本课程通过让学生进行企业薪酬管理系统完整的测试流程实践的同时,讲解测试需求编写、测试计划编写、测试用例设计、测试环境配置、测试执行、缺陷跟踪和管理、测试报告撰写等内容。课程授课方式主要是分阶段讲解测试过程和测试要求,每一个阶段开始,老师先讲原理,选择部分内容做例子进行讲解,然后学生比照例子跟着做;阶段内容完成时,学生提交完成的文档,老师选择典型的问题进行讲评,然后进行下一个阶段的内容,如此类推直至测试结束。
企业薪酬管理系统测试流程设计如图1所示。
本课程课时为60学时,根据图1系统测试流程图安排,基于项目驱动法的“软件测试理论”课程安排如表1所示。
在课程进行的过程中,必须严格按照项目的测试流程进行,测试流程为:先获取项目测试需求,撰写测试计划,设计测试用例,执行测试,提交缺陷报告并跟踪修复缺陷,最后提交测试总结报告。课程结束,要求学生提交项目测试报告,测试报告包括多个文档,整个流程中每个阶段的工作必须有撰写规范的文档提交,如:测试计划、测试用例、测试执行报告、缺陷报告和测试总结报告等等。
测试报告既体现了教师项目教学的结果,也体现了学生对测试知识技能的掌握水平。通过评价学生作品,找出学生在学习过程中的薄弱环节,进一步改进项目驱动教学的教学安排,使其能够发挥最大的教学效果。
五、结束语
本文针对软件学院软件工程专业的培养对象和教学特点,把真实项目引入“软件测试理论”课程课堂教学中,采用项目驱动教学法,从项目的需求评审、测试计划、测试用例设计、测试执行、缺陷报告、测试评测到测试总结一个完整的测试流程,交给学生组建测试团队,按照流程进行任务分配和管理,最终完成整个项目的测试工作。通过一个完整项目测试流程的完成,有效提高学生的学习和实践能力、解决问题的能力、团队协作能力等,使学生在掌握软件测试的各种测试技术和基本流程的同时,积累了一定的项目测试经验,为他们今后的就业打下了良好的基础。
参考文献:
【关键词】软件测试 测试报告 测试流程
1 引言
软件测试是软件开发过程的重要组成部分,是用来确认一个产品的品质或性能是否符合开发之前所提出的要求。对软件需求分析、设计规格说明和编码的最终复审,某种程度上测试工作的好坏直接影响了软件产品的交付和用户的满意度。因此,如何做好测试工作,使测试在软件工程中顺利进行,辅助软件开发工作是我们每个软件人员应该考虑的问题。
2 软件测试的目的
(1)确认软件的质量,确认软件做了你所期望的事情,确认软件以正确的方式来做了这个事件。
(2)提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。
(3)软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。软件测试的第三个目的是保证整个软件开发过程是高质量的。
3 软件测试的对象
软件测试并不等于程序测试。软件测试应该贯穿整个软件定义与开发整个期间。因此需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应该是软件测试的对象。
4 软件测试流程
软件测试工作并不是在软件代码开发完毕后才开始的,这一点是很多软件人员的误区,需要明确一下,它其实是在项目进入软件实现阶段就开始了,项目进入软件实现阶段的时候,就应该启动软件测试工作了。
下面根据笔者的测试经验,详细阐述一下软件测试的流程、每个阶段需要做的工作及整个测试过程产生的文档。
4.1 计划与设计阶段
4.1.1 召开测试启动会议
当项目进入软件实现阶段(编码),测试经理召集项目经理、开发经理开会确定测试交接时间,开发团队与测试团队交接测试内容,对测试目标达成一致,商讨测试计划的可行性,统一项目组的目标和测试的工作重点。进行规模预估并成立测试团队,完成《测试计划》和《测试方案》。
4.1.2 设计测试用例
明确了测试需求和测试计划,在需求分析文档确立基线以后,测试组需要针对测试需求编写全部测试用例,在实际的测试中,测试用例将是唯一实施标准。
4.2 实施测试阶段
4.2.1 实施测试用例
实施测试用例将花费测试组绝大部分时间,这些工作都是建立在前期很多计划工作的基础上。当测试用例全部编写完成后,测试工程师根据测试计划中分配给自己的测试任务,实施相应的测试用例,并记录测试结果。
4.2.2 填写测试记录
测试人员在进行具体的测试工作时,需要将测试内容填写在测试记录表中,直到所有的测试执行工作结束。
4.2.3 提交BUG清单
在具体的测试过程中,测试人员发现BUG后,需要将BUG记录在清单里,并及时提交给测试经理。
4.2.4 提交测试报告
在约定的测试周期完成之后,测试工程师需要总结此测试的结果,编写测试报告。测试工程师根据此轮测试的结果,编写测试报告,主要应包含以下内容:
(1)测试报告的版本。
(2)测试的人员和时间。
(3)测试所覆盖的缺陷――测试组在这轮测试中所有处理的缺陷, 不仅要写出覆盖缺陷的总数,还要写明这些缺陷的去向。
(4)上一版本活动缺陷的数量。
(5)经过此轮测试,所有活动缺陷的数量及其状态分类。
(6)测试评估――写明在这一版本中,哪些功能被实现了,哪些还没有实现,这里只需写明和上一版本不同之处即可。
(7)急待解决的问题――写明当前项目组中面临的最优先的问题,可以重复提出。
在每轮测试结束之后应尽快将符合标准的测试报告发给测试经理。
4.3 总结阶段
测试工作结束或即将结束时,测试组就要开始着手准备进行总结的工作。
4.3.1 编写测试总结报告
在测试结束之后,测试经理编写测试报告,对测试进行总结,并且提交给项目经理,为产品的后续工作提供重要的信息支持。
测试经理根据测试的结果及测试工程师提交的测试报告编写测试总结报告,测试总结报告必须包含以下重要内容:
(1)测试资源概述―多少人、多长时间。
(2)测试结果摘要―分别描述各个测试需求的测试结果,产品实 现了哪些功能点,哪些还没有实现。
(3)缺陷分析―按照缺陷的属性分类进行分析。
(4)测试需求覆盖率―原先列举的测试需求的测试覆盖率,可能 一部分测试需求因为资源和优先级的因素没有进行测试,那么 在这里要进行说明。
(5)测试评估―从总体对项目质量进行评估。
(6)测试组建议―从测试组的角度为项目组提出工作建议。
4.3.2 测试验收
测试验收工作是在以上工作全部结束后,测试经理对测试的过程、效果进行验收,签发测试验收报告,宣布测试结束。由测试经理进行测试验收,验收内容包括:
(1)测试效果验收―测试是否达到预期目的。
(2)测试文档验收―测试过程文档是否齐全,符合标准。
(3)测试评估―从总体对测试的质量进行评估。
(4)测试建议―对本次测试工作指出不足,需要在以后工作中改 进的地方。
(5)宣布测试结束―测试组成员签字宣布本次测试结束。
4.3.3 测试归档
测试归档是在测试验收结束宣布测试有效,结束测试后,对测试过程中涉及到各种标准文档进行归档,主要包括测试计划、测试用例、测试报告、验收报告等。这些文档的编写保障了测试的顺利进行,同时作为整个测试项目的痕迹,被保留下来,供查阅。
参考文献
[1]佟伟光.软件测试[M].北京:人民邮电出版,2008.
[2]Rex Black.测试流程管理[M].北京:北京大学出版社,2001.
[3]Robert V.Binder著,华庆一等译.面向对象系统的测试[M].北京:人民邮电出版社,2001.
[4]Mark Fewster, Dorothy Graham著,舒智勇等译.软件测试自动化技术与实例详解[M].北京:电子工业出版社,2000.
[5]Karl E.Wiegers著,陆丽娜,王忠民,王志敏译.软件需求[M].北京:机械工业出版社,2000.
关键词:软件测试;软件工程;认识误区;持续改进
中图分类号:TP311文献标识码:A文章编号:1009-3044(34)-1997-02
1 引言
随着市场对软件质量的不断提高和国内软件测试行业的逐渐发展,软件测试不断受到重视,有越来越多的软件企业更加重视软件测试,并已经形成了一套基本的软件测试流程。然而,认识误区的存在需要我们进一步改进软件测试过程。
2 软件测试概述
软件测试就是在软件投入运行前,对软件需求分析、设计规格说明书和编码的最终复审,是软件质量保证的关键步骤。一般按四个步骤进行,即单元测试、集成测试、确认测试和系统测试及发版测试。随着软件危机的频频出现,人们已经开始认识到测试开始的时间越早,测试执行的越频繁,所带来的整个软件开发成本的下降就会越多。所以,软件测试在软件项目实施过程中的重要性日益突出。
3 软件测试过程中的认识误区
3.1 软件开发完成后进行软件测试
人们一般认为,软件项目要经过以下几个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件。据此,认为软件测试只是软件编码后的一个过程,这是不了解软件测试周期的错误认识。软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。因此,软件测试贯穿于软件项目的整个生命过程。在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件开发与软件测试应该是交互进行的,否则,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。
3.2 测试过程不够完善
在软件开发领域,确实存在一些东西看起来要比另外一些东西难测试一些,但是远非无法测试。只不过这种不可测试性不是由于被测试的软件内部的过紧耦合造成的,而是和外部某些很难测试的部分耦合过紧,从而表现出被测试的软件本身很难测试。这些很难测试的部分比较常见的有:图形界面、硬件、数据库等。
3.3 强调测试用例设计得越详细越好
在确定测试用例设计目标时,一些项目管理人员强调测试用例“越详细越好”。这种做法和观点最大的危害就是耗费了很多的测试用例设计时间和资源,可能等到测试用例设计、评审完成后,留给实际执行测试的时间所剩无几了。因为当前软件公司的项目团队在规划测试阶段,分配给测试的时间和人力资源是有限的,而软件项目的成功要坚持“质量、时间、成本”的最佳平衡,没有足够多的测试执行时间,就无法发现更多的软件缺陷,测试质量更无从谈起了。
3.4 追求测试用例设计“一步到位”
现在软件公司都意识到了测试用例设计的重要性了,但是一些人认为设计测试用例是一次性投入,测试用例设计一次就“万事大吉”了,片面追求测试设计的“一步到位”。这种认识造成的危害性使设计出的测试用例缺乏实用性,或者误导测试用例执行人员,误报很多不是软件缺陷的“Bug”,这样的测试用例在测试执行过程中“形同虚设”,难免沦为“垃圾文档”的地步。
4 软件测试过程的持续改进
4.1 计划与风险
项目计划对项目过程的实施有着直接的指导作用,它的重要性是不言而喻的。对于软件测试来说,测试计划也是指导后续测试工作的基础,只有对过程中各任务进行更详细的计划,才有利于在测试过程中对项目进度的把握有一个明确的目标;同时,风险策略的制定,也有利于对及早对测试过程中可能遇到的问题做出分析,以便在问题出现时能够尽可能的减少规避风险的成本。
4.2 评审
在测试过程中的每个阶段结束前,都会输出一些资源,文档、用例等等,这些资源往往是下一个测试阶段或软件开发的下一个环节执行的依据。评和审是结合在一起的,每个角色根据自己对项目的了解,从各自角度来审核测试报告的充分性,对质量风险发表各种见解。最终,对报告的规范性也要进行考察。另外,也最好根据实际情况组织会议评审来对一定规模的问题统一评审。
4.3 文档
文档的编写对于测试人员来说是一个十分重要的任务,深入的、充分的投入测试的测试人员能写出高质量的测试文档。所以,测试文档的质量,往往反映了测试人员执行测试的广度和深度。而在文档的编写方面,首先必须形成统一规范;另外,针对不同项目的测试,可以适当对文档标题、内容进行简化。总之,文档模板一旦形成,必须严格遵守。
4.4 方法与策略
测试方法和测试策略,测试的重中之重。测试的策略一般要求从全局方面对测试的阶段、每个阶段的测试类型进行考虑、定义。而测试的方法更多是体现在一个具体的测试中,采取怎样的测试思路。另外,在测试过程中,对资源的协调也非常关键,需要能保证测试资源充分利用,每个测试人员都有适度并且相当的工作量。
4.5 总结测试经验
在测试的过程中,测试人员应该及时总结发现的错误并归类,标明经常容易出错的地方,将意见提交项目经理,审核后,制定出一份统一标准并提供给开发人员,这样就可以提前避免错误、避免重复错误和重复测试,提高测试效率。不仅如此,项目结束后的各项总结报告将是项目的后期维护或二次开发的宝贵参考资料。
4.6 缺陷分析、度量
对测试活动过程中发现的缺陷进行分析、度量,寻找软件开发过程中存在的问题,并持续改进开发过程,提高质量。缺陷的分析、度量从时间上分为两个方面,首先是在软件开发过程中发现的缺陷进行分析、度量;然后就是,对软件产品后,对用户提出缺陷进行统计、分析。
5 结论
测试是用来保证软件开发过程的高效性,以及保证开发出来的软件产品的高质量和可用性的。软件开发本身就是一件非常困难的事情,这也决定了有效的测试是非常重要的环节,我们要加强对软件测试的关注,使大家对于测试首先有一个正确的认识,避免误区的存在,并积极探索测试方法的持续改进问题,真正使软件测试真正起到它应有的作用。
参考文献:
[1] 郑人杰.计算机软件测试技术[M].北京:清华大学出版社,1992.
[2] Fewster M,Graham D.软件测试自动化技术[M].北京:电子工业出版,2000.
软件质量重于泰山
软件质量重于泰山,软件质量是核心竞争力之一。现在和未来软件企业的竞争力不仅体现在产品类型的多样性,产品功能的先进性,更多的体现在产品质量的稳定性和可靠性。软件应用的领域不断深入,设计的复杂程度逐步增加,开发的周期不断缩短,质量的要求水涨船高,软件企业面临着巨大挑战。
用户对软件产品质量的要求不断提高,促使软件企业把提高软件质量作为增强竞争力的策略。提高软件质量要素在哪里?可以通过采用软件设计技术,加强软件过程管理,实施软件测试等方法。从提高软件质量的显著程度、投资回报率和可实施性等方面比较,实施有效的软件测试,提高软件测试的效率,是保证软件质量的显著方法。
软件测试是通过技术、流程、工具、人员以及管理手段,检测软件文档、软件中间产品和最终产品,查找和报告软件缺陷、错误以及隐患的专业技术。通过跟踪缺陷、错误及隐患的修正过程,确保软件产品、中间产品和文档符合软件工程过程需求和用户的最终需求。
软件测试创新之道
软件测试在国内仍处于起步阶段,各种软件测试的方法、技术和标准都还在探索阶段。国内软件行业规模普遍偏小,缺乏大型软件产品经验,开发过程不够规范,这决定了国内软件质量和测试行业,必须根据国内行业现状,确定软件质量目标和测试策略方法,而不是照搬照抄国外成熟软件企业的测试方法。
观念创新
提高软件质量的决定因素不是软件测试技术,而是对软件质量和测试的思想观念。只有把提高软件质量上升到企业战略发展的高度,才能从根本上解决问题。长期以来,国内软件行业对软件质量重视程度不足,对于软件测试的作用认识不够,造成项目因质量问题造成进度推迟甚至失败。
为了彻底改变这种被动现象,企业高层管理人员必须从管理思想、资源支持等方面为软件质量和测试部门提供全力支持。软件项目经理必须坚持软件开发和软件测试并行处理并且互相协调。软件开发人员重视和配合软件测试人员。
观念创新不要仅停留在口头上,而要落实在具体行动上,通过软件质量和测试的有效流程进行推动,通过过程改进进行提高。通过有效组织管理,形成“以重视软件质量为荣,以轻视软件质量为耻”的工作氛围。
流程创新
测试流程决定软件质量。软件测试如同软件开发一样,需要经过收集测试需求、确定测试策略、设计测试、执行测试、分析测试等流程。软件测试不是软件开发的最后阶段,而是贯穿于软件项目的整个生命周期。
软件测试流程既不是僵化的生搬硬套,也不是随机的增添取舍。软件企业的质量管理部门和项目开发团队需要根据公司技术、资源现状,针对项目的特点和客户需求,从保证软件质量、项目进度和测试成本等方面,进行优化设计并且不断改进流程管理。对于项目周期长、应用领域广、对质量要求高的软件,必须制定和遵守严格的测试流程。
测试流程创新的目标是在公司内部制定和执行完善的项目质量管理体系。优化项目生产方式,跟踪和度量生产过程和产品,使得生产过程和各阶段产品处于可控制和可度量状态,保证产品符合客户的功能和进度需求。
技术创新
软件测试是一项软件工程领域的专业技术,而不是简单的把软件测试认为随便找个人运行几次软件,就可以发现全部的软件问题。前文已经提到,软件测试需求和测试设计是决定软件测试效果的关键因素,因此,加强测试技术创新的重点是在测试需求和设计设计的创新。
在软件测试技术创新方面,要避免陷入过度追求自动化测试技术的误区。自动化测试确实可以在某些方面显著提高测试效率和准确性,但是自动化测试只适合测试软件的某些方面的质量,80%左右的软件缺陷是靠测试人员手工测试发现的。
对于某些特别需要自动化测试的软件特性,需要加强开发软件测试工具,而不是全部依赖市场上的现有测试工具。这是因为商业工具功能繁多,价格昂贵,培训和学习周期很长,选择不当就会造成巨大浪费。
管理创新
软件测试管理的目标是实现软件质量、进度、成本之间的最佳平衡。有效的测试管理需要企业管理层、软件开发团队、质量保证与测试团队通力合作,采用计划、组织、领导、控制等手段,组建高效团队,制定完善的测试流程,做好测试设计,有效执行测试,加强过程跟踪,从而顺利完成质量保证和测试任务。
测试管理创新的核心是软件质量和测试的团队建设,软件质量和测试是技术密集型活动,团队的知识结构、创造力和凝聚力是保证测试流程、测试技术充分实施的基础。质量和测试团队建设的重点是设置和培养各类技术和管理人才,进行有效交流,形成良好的评估和促进机制。
测试管理创新的另一个重点是测试管理平台建设。包括构建测试项目管理的集成系统,实现公司产品和项目数据信息的有效管理和顺序控制,使项目数据透明化,技术知识有效传承,项目质量和进度数据化、图形化。可以根据公司的现状,购买软件测试管理的商业工具,也可以内部开发软件测试管理工具。
软件测试技术路线图
如果把软件测试之道成为测试战略,要发挥测试战略的现实意义,需要把测试战略转化为测试战术。测试的“道”与“术”的无缝集成,才能显著地、持续地、逐步地提高软件产品质量。实施软件测试的战术是一系列过程的组合,涉及测试团队建设、流程设计、测试平台、测试管理等多个方面。
测试团队建设
测试团队可以是测试部,也可以是测试组。公司规模决定了测试团队的大小和组织形式。测试团队建设需要执行两个原则:第一,测试团队必须独立于开发团队,而不是附属于开发团队,实现测试的独立性和公正性;第二,测试团队必须具有明确的工作目标,即发现和报告软件缺陷,推动和确认缺陷修正,协助软件开发的过程改进,提高软件整体质量。
软件测试团队根据规模可以设置多个职位,每个职位具有明确的岗位职责。例如,测试部门经理、测试项目经理、测试组长、测试架构师、高级测试工程师、测试工程师等。对于刚刚成立的测试团队,可以一个人兼任多个职位,完成多项测试任务。测试人员的总数应该与开发人员相适应,最好在1:1到1:2之间。
流程设计
测试流程设计必须与软件设计流程相对应,基本测试流程包括测试需求分析、测试计划设计、测试用例设计、测试执行、测试评价、测试总结等。
根据软件需求和软件设计规格说明进行测试需求分析,测试需求分析的目的是明确需要测试的对象、特征、范围和方法,从而制定测试计划,确定测试策略。
测试计划设计是为了有效配置测试过程、人员和工具,充分利用现有的资源,按照项目计划进度,组织有效的测试。测试计划设计的输出结果是测试计划文档,它是指导软件测试活动的纲领性文档。
测试用例设计是指导具体测试内容和方法的关键内容,如果需要执行自动化测试,还需要依靠测试用例设计生成对应的测试脚本。测试用例设计的输出结果是不同类型的测试用例,这些测试用例必须以标准、一致的形式设计、评审、存储、更新。
测试执行是报告软件缺陷的阶段,根据软件计划的进度,分配测试内容,构建测试环境,依靠测试用例运行测试程序和程序文档。测试执行的输出结果是缺陷报告、测试进度报告等。
测试评价是度量软件测试执行效率和有效性的过程。测试评价的输入是测试用例的执行情况,软件缺陷的报告数据。测试评价的输出包括测试用例的有效性分析,软件缺陷的类型和有效性分析等,测试进度和有效性分析等。
测试总结包括测试过程每天或者每周的过程总结,也包括测试项目结束后的测试项目总结。测试总结的输出是测试总结报告,总体评价软件质量,指出测试存在的问题,提出改进的方法和进程,总计测试的有效经验。
测试平台设计
测试平台设计包括测试技术平台设计和测试管理平台设计。测试技术平台包括设计测试环境,设计或设置测试工具等。测试管理平台设计包括测试文档系统设计、测试版本配置管理、缺陷数据库设计、测试进度和质量分析系统设计。
测试技术平台设计需要根据测试计划的测试内容和测试环境要求,组织软件、硬件、数据库和网络等,这经常是一项较为耗时的工作,同时它影响着测试的正确性,必须尽快在测试开始阶段完成,最好采用有效的方法把搭建的测试环境进行备份保存,以便今后可以快速恢复,重复利用。
测试管理平台设计,影响测试管理的复杂度,好的测试管理平台可以使测试管理人员,方便地跟踪、查询、分析测试进度,评估测试人员的工作绩效,评价测试的总体质量。对于测试技术人员而言,可以方便的寻找测试对象和测试文档,报告和输出测试结果,共享测试数据,提高测试效率。
测试管理
测试管理关注人员、过程、产品三要素的互动与变化,测试管理包含项目计划和组织结构管理,测试阶段管理,时间、资源和质量管理,文档管理和团队管理等。测试部门经理、测试项目经理和测试组长是测试管理的主要执行者,需要与测试团队成员、开发人员、公司管理人员密切配合。
为了加强测试管理,需要确保测试数据信息流通畅,使测试团队、开发团队、质量保证团队之间有效交流。测试管理的其他内容包括团队成员参与各种培训,客观积极的绩效评估,识别项目测试风险,实现人尽其才,信息共享,进度可控,规避风险,降低成本,提高质量。
随着计算机软件技术的高速发展,软件测试在软件开发过程中的地位也越来越重要,软件测试是保证软件质量和可靠性的重要手段之一,软件测试人才需求猛增,软件测试已经成为计算机专业的重点专业课程。传统的软件测试教学模式,测试理论和测试实践严重脱节,不能很好的满足软件企业对测试人才的要求。依托广东东软学院的特色教学实践1321教学模式,进行以实践能力和就业能力为导向的课程综合实践探索,深化教学改革,激发学生的兴趣,让学生贴近现实的工作场景中学习,了解在软件开发过程中测试岗位的工作过程和知识要点,培养学生软件测试应用技能型人才培养为目标。
二、软件测试课程实践构建的主要思路
软件综合实践安排在大三课程开始之前的实践学期进行,为期4个星期,每天4学时的实践教学指导,软件测试专业的学生已经学过专业基础课《Java程序设计》、《计算机文化基础》、《网页设计》、《数据库设计》、《软件开发过程实践》,专业课《软件测试概论》、《功能测试》,学生初步具备了参与综合实践的专业素质能力。在综合实践开发团队中,将软件开发专业、网站规划与设计专业、数据库管理专业、软件测试专业和网络技术的同学,以3:1:1:1:1这样的比例进行团队建设,从中选出一位同学兼职项目经理,实现学生自主管理,配备具有双师素质的专业老师,一位教师负责指导5-7个团队的项目开发,当需要进行专业指导时,临时进行专业化实践指导,全方位分阶段、分岗位进行进行全程交叉技术指导,同时邀请合作单位的软件工程师,同步进行项目过程的跟踪,给予学生岗位最精准的实践指导。采用项目驱动的方法开展实践教学,通过开发真实的软件项目,以软件工程开发过程为导向,制定软件综合实践——软件测试方向的实践方案,分阶段进行实践,选择有较强的实践性和创新性的项目给学生选题,选题要贴合实际项目,需求相对容易获取,具有一定的创新性,能够激发学生的学习兴趣。首先需求的调研,需求的评审,编写测试计划,设计测试用例,测试执行,测试记录的跟踪和测试总结报告,对每个测试阶段进行教学设计,不断的将所涉及到的知识点融入到实践中,增强学生职业岗位素养能力,团队合作的意识,同时探索以学生管理学生的模式进行实践探索。
三、软件综合实践测试岗位的工作过程与方法
在软件综合开发实践过程中,对软件测试岗位的同学依据软件工程的理论进行指导,结合企业的工作流程,采用分组的教学模式,采用软件测试常用的W模型,进行教学指导,培养学生的团队合作能力,沟通能力,实践能力。测试岗位的工作主要分成两个三个部分,第一部分是需求的调研和评审,测试计划中测试策略的选择、任务的时间安排和测试用例的设计;第二部分主要是测试执行,安装测试工具,部署测试环境,按照测试所设计的测试用例进行手动功能测试,尝试利用自动化测试工具QTP进行自动化测试,运用所学过的黑盒测试方法,进行web测试,兼容性测试等方法的测试工作,将所发现的问题记录到测试管理平台(QC)的缺陷缺陷跟踪表中,修复后,进行验证性测试,第三部分就是测试总结报告。
四、软件综合实践的考核
1.答辩委员会的组成。立体化全方位的考核方式,采用学生团队答辩的方式进行最终的考核,答辩委员会成员由软件开发方向教师、网站规划与开发教师、数据库管理方向教师、软件测试技术方向教师和企业工程师共同组成。2.软件测试岗位的知识点的考核。每个专业都设计了一套科学有效的评价体系,从三个部分对学生的能力进行全方位评。第一部分IT职业素养能,占总成绩比例的30%,考勤、项目管理能力、文档编写能力、团队合作与沟通能力、演讲与答辩能力;第二部分团队实践成果,占总成绩比例的30%测试环境部署、测试工具软件的安装、测试执行中缺陷报告的跟踪、测试总结报告的编写;第三部分岗位技能成果,占总成绩比例的40%,软件开发过程文档:需求评审报告、测试计划报告、测试用例报告。
五、软件综合实践教学实践的意义
1.软件综合实践项目分组教学的意义2.软件测试岗位同学的收获3.综合实践教学的后续影响4.软件综合实践教学的改革未来方向
作者:张彤宇 李晶 姚庚梅 单位:广东东软学院计算机科学与技术系
参考文献:
[1]罗先录.IT类专业实践教学的三个层次[J].计算机教育,2007(18):14-15.
关键词:嵌入式软件;GJB2725A;软件测试;过程模型
0 引言
随着信息化军事技术的不断深入,嵌入式软件已在航空武器装备软件中得到了广泛的应用,相应的,对其进行软件测试的要求也越来越重要。目前,大部分软件测试项目主要由事件驱动完成,存在流程不清晰、被动性高、效率低下等问题,影响了测试质量,其严重后果就是没有及时发现软件产品缺陷,导致产品失效。
总装备部于2001年了GJB2725A《测试实验室和校准实验室通用要求》[1],其目的就是为了指导软件测试活动,提高软件测试过程管控能力。因此提出了一种嵌入式软件测试过程模型,该模型能够依据军标,以流程驱动的方式对软件测试进行全过程管控,具有很好的工程应用价值,提高了研制效率。
1 嵌入式软件测试过程模型
在型号软件研制中,测试是一项复杂而繁琐的工作,是一门综合性学科,涉及技术、方法、资源以及管理等诸多方面[2],现有流行软件测试模型,如V模型、W模型和H模型[3],并不能完全适用于实际测试工作,而应由研制单位牵头,建立本地化的软件测试过程模型。
根据工程经验,将嵌入式软件测试过程划分为5个阶段,即测试需求分析、测试策划、测试设计与实现、测试执行和测试总结,每个阶段实现不同的测试活动,前一个阶段是后一个阶段的输入,后一个阶段是前一个阶段的验证,以流程为驱动力,逐步实现所有活动,通过不断地对流程再优化,实现模型的持续改进[4],逐步趋近实际工程应用。
1.1 测试需求分析
该阶段的输入为软件测评合同或软件研制任务书,以明确被测项目的范围、目标、约束及要求。
同时,确定需要完成的测试类型,如功能测试、性能测试、边界测试、接口测试、可靠性测试等,并明确每一个测试类型的具体要求,例如:
1)功能测试:每一个软件测试项输入的每一个正常等价类和异常等价类都至少被一个用例覆盖;
2)性能测试:对软件的精度、时间和适应性进行测试,以确认是否符合规定的性能要求;
3)接口测试:测试所有外部接口,每一个外部输入/输出接口应进行正常和异常情况测试。
确定测试类型后,可制定测试策略,包括白盒和黑盒测试,并对具有特殊要求的被测项进行具体描述。同时,确定测试充分性和终止要求,避免项目无法结束。
测试需求分析最重要的工作就是依据软件设计文档,确定测试的显性需求和隐形需求,并分解为测试项,为后续测试用例提供设计依据,本阶段的输出为《软件测试需求规格说明》。
1.2 测试策划
本阶段在测试需求分析的基础上,完成如下工作:
1)确定测试技术,如等价类划分法、边界值分析法和猜错法等;
2)明确定性评价准则,包括文档、设计和实现等方面;
3)数据采集要求,主要指被测软件、用例、缺陷和管理数据等;
4)制定软件测试环境,包括软/硬件环境,确保测试顺利开展;
5)明确测试人员的角色与职责,合理分工,确保进度;
6)根据要求进行风险分析,如技术、人员和资源风险,并制定措施。
本阶段的输出为《软件测试计划》。
1.3 测试设计与实现
本阶段的主要内容就是依据测试需求,设计测试用例,单元、部件测试采用“先功能后逻辑”的测试策略,即先满足基于功能的测试(功能测试覆盖100%),再满足基于逻辑的测试(语句、分支、调用覆盖率100%),配置项、系统测试采用基于功能的测试策略,测试用例主要包括名称、标识、初始化、前提和约束、输入、预期输出、通过准则、追踪关系、终止条件、用例类型和设计人员等信息,本阶段的输出为《软件测试说明》。
1.4 测试执行
本阶段的主要内容就是在实际测试环境下执行测试用例,记录测试结果,将期望结果与实测结果进行比对,如不一致,则进行深入分析,确认为软件缺陷,则填写软件问题报告单,本阶段的输出为《软件测试记录》和《软件问题报告单》。
1.5 测试总结
本阶段的主要内容就是依据测试结果,统计与分析测试数据,包括用例执行率、用例通过率、代码缺陷率、功能覆盖率等指标,进而对被测软件产品做出客观、公正、独立的评价,为改进软件产品质量提供支撑,本阶段的输出为《软件测试报告》。
2 模型应用
被测软件为某型嵌入式软件,要求完成软件测试,出具测试报告。
2.1 测试需求分析
根据测试要求,定义被测项目的范围、目标、约束及要求。
范围:单元、部件和配置项测试。
目标:单元测试完成语句、分支100%覆盖,部件测试完成调用100%覆盖,配置测试完成需求100%覆盖。
策略:单元、部件测试采用白盒测试,配置项测试采用黑盒测试。
测试需求:经分析,单元测试共有272个测试需求,部件测试共有36个测试需求,配置项测试共有16个测试需求,27个测试项。
2.2 测试策划
软件测试主要采用等价类划分法和边界值分析法进行测试。
2.3 测试设计与实现
依据软件设计文件设计测试用例,单元测试共设计1869个测试用例,部件测试共设计266个测试用例,配置项测试共设计168个测试用例。
2.4 测试执行
经测试,并对测试结果进行分析、确认,共计发现56个软件问题,提交设计进行优化改进。
2.5 测试总结
测试结果总结如表4所示。
测试用例均能100%覆盖测试需求,配置项测试的用例执行率为95%,其原因是有些硬件环境不能满足测试要求,如破坏性测试,单元和配置项测试的用例通过率均不到100%,说明这两种测试是发现软件缺陷的重要手段,通过对56个问题的归零处理,软件问题得到解决,提高了软件产品的质量。
3 总结
采用流程驱动式的嵌入式软件测试过程模型能够很好的解决测试工程化问题,通过实际运用,提高了测试管控能力,确保了测试充分性,发现了软件问题,提高了软件的质量和可靠性。
参考文献:
[1] 闫宇华,李谊,黄宁等.GJB 2725A-2001,测试实验室和校准实验室通用要求[S].北京:中国人民总装备部,2001.
[2] 金先仲,任宏光,李建军等.空空导弹研制系统工程管理[M].北京:国防工业出版社,2007.