时间:2023-06-04 10:46:22
开篇:写作不仅是一种记录,更是一种创造,它让我们能够捕捉那些稍纵即逝的灵感,将它们永久地定格在纸上。下面是小编精心整理的12篇软件测试报告,希望这些内容能成为您创作过程中的良师益友,陪伴您不断探索和进步。
关键词:项目驱动法;软件测试;教学方法
作者简介:赵晓君(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所示。
在课程进行的过程中,必须严格按照项目的测试流程进行,测试流程为:先获取项目测试需求,撰写测试计划,设计测试用例,执行测试,提交缺陷报告并跟踪修复缺陷,最后提交测试总结报告。课程结束,要求学生提交项目测试报告,测试报告包括多个文档,整个流程中每个阶段的工作必须有撰写规范的文档提交,如:测试计划、测试用例、测试执行报告、缺陷报告和测试总结报告等等。
测试报告既体现了教师项目教学的结果,也体现了学生对测试知识技能的掌握水平。通过评价学生作品,找出学生在学习过程中的薄弱环节,进一步改进项目驱动教学的教学安排,使其能够发挥最大的教学效果。
五、结束语
本文针对软件学院软件工程专业的培养对象和教学特点,把真实项目引入“软件测试理论”课程课堂教学中,采用项目驱动教学法,从项目的需求评审、测试计划、测试用例设计、测试执行、缺陷报告、测试评测到测试总结一个完整的测试流程,交给学生组建测试团队,按照流程进行任务分配和管理,最终完成整个项目的测试工作。通过一个完整项目测试流程的完成,有效提高学生的学习和实践能力、解决问题的能力、团队协作能力等,使学生在掌握软件测试的各种测试技术和基本流程的同时,积累了一定的项目测试经验,为他们今后的就业打下了良好的基础。
参考文献:
关键词:实时嵌入式软件;软件测试;脚本
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9599 (2011) 18-0000-02
Real-time Embedded Software Testing Research
Zhang Feng,He Yingjie,Wang Bin
(No.91413 Troops of PLA,Qinhuangdao 066000,China)
Abstract:The development and application of embedded real-time software is a hotspot of computer software nowadays.It’s very important to ensure the quality of embedded real-time software.This article analyzes the characteristics of embedded real-time software.Based on the analysis of the whole structure of the embedded real-time software testing and the architecture of host and target computer,this article discusses script language and its interpretation,at last introduces testing result analyze implement and creates testing report.
Keywords:Real-time embedded software;Software testing;Script
一、引言
当今社会信息化进程的快速发展,计算机软件在各个领域得到了越来越广泛的应用,尤其是在工业控制、电子信息以及武器装备等很多嵌入式系统中发挥着核心作用。随着嵌入式技术的发展和计算机硬件技术的进步,硬件元件的集成量也大大增加,从而使嵌入式设备的硬件性能得到了极大的提高。嵌入式系统的发展趋势是:硬件逐渐向通用性平台过渡,依靠软件来完成系统的各种任务。因此,软件已成为决定系统成败的关键性因素。在嵌入系统开发中软件的代码质量对产品的最终质量起到了决定性的作用。
软件质量是软件的生命,软件测试是保证软件产品质量的重要手段。因此,要成功开发出高质量的软件产品,必须加强软件测试工作。本文将提出一种对实时嵌入式软件进行测试与分析设计的一种测试方法。
二、实时嵌入式软件的特点
(一)开发与运行环境分开
嵌入式软件最终的运行平台是在目标机上,但是由于目标机中的环境有种种限制,因此,嵌入式软件的开发不能在目标机上进行,而是在目标机之外的PC上进行,即我们所说的宿主机。在宿主机上完成软件开发后,再将软件程序移植到目标机上运行。也就说,嵌入式软件的开发环境和运行环境是不一致的。正是这个不同,给嵌入式软件的测试带来了不少的麻烦。
(二)开发平台复杂多样
因为嵌入式系统的一个突出特点是其专用性,即一个嵌入式系统只进行特定的一项或几项工作,嵌入式软件运行的硬件平台都是为进行这些工作而开发出来的专用硬件电路,它们的体系结构、硬件电路,甚至所用到的元器件都是不一样的,所以嵌入式软件运行平台(通常称为开发平台)也是复杂多样的。
(三)硬件资源、时间有严格限制
由于嵌入式系统的专用性,嵌入式软件运行的硬件平台的硬件资源是相当有限的。另外,由于嵌入式系统的实时性,决定了嵌入式系统的运行时间也是严格限制的。实时软件的时间约束主要表现为软件或其中的进程的时间约束。通常,实时系统可分为:硬实时系统和软实时系统。硬实时系统中,处理请求的时间约束异常关键,即未满足约束的处理请求被认为是系统的失败。而软实时系统中的时间约束只是希望被满足,即使不满足也不会引发系统失败。这种软、硬实时系统的划分,实际上是刻画了实时软件中时间特性强度,它对于软件的时间特性设计和测试有着重要的影响,决定了它在测试中的花销,即是否为时间特性进行单独。
(四)缺乏可视化编程模式
由于嵌入式软件最终要在目标机平台上运行,而其开发只能在宿主机平台上进行,编程的结果只能在代码完成并通过相应的调试器和编译器然后下载到目标机平台上才能看到,无法实现可视化编程。
(五)不同的嵌入式软件在不同环境下的可靠性、安全性的要求是不同的
一些嵌入式系统,比如军队的雷达、电子对抗系统,它们要在电磁很强的恶劣的环境下可靠地工作,而且要保证操作人员的安全。但是对于手机软件来说,它的可靠性和安全性就不如电子武器军事装备要求的高。
三、实时嵌入式软件测试
实时嵌入式软件的突出特点在于其运行环境(目标机环境)和开发环境(宿主机环境)的不一致,这一特点也导致典型的实时嵌入式软件测试要从宿主机下载到目标机上进行测试。
(一)实时嵌入式软件测试的总体体系结构设计
实时嵌入式软件测试的一般步骤是在主机上编写测试代码,然后把该代码编译下载到目标机,接着通过测试执行该测试目标代码。测试工具运行在宿主机上,测试所需要的信息在目标机上产生,由于目标机的资源相当匮乏,测试后所得的信息在目标机上不便分析,通过主机和目标机之间的通信把测试所得信息上传回主机,再由主机中的测试结果分析工具对测试信息进行分析。嵌入式测试基本结构如图1所示。
(二)实时嵌入式软件测试宿主机及目标机的体系结构设计
如图2所示,在宿主机方,在测试开始前制定测试计划,根据不同的测试目的选择相应的测试用例,生成测试脚本,通过脚本解释器实时解释非实时生成的测试命令,并将测试命令和数据通过目标服务器发送至被测目标系统;同时将从目标机上的测试获得测试结果数据后,可显示测试结果,以提示测试人员,还可以由测试结果分析工具对测试结果进行分析,最后传送回测试结果数据库,并生成测试报告。在目标机方,测试接收测试命令后运行被测实时嵌入式应用软件,被测应用软件将测试后生成信息发送到测试中的一个专门任务的消息队列中,此任务负责在适当的时候将这些信息发送到宿主机方。同时目标服务器中也有负责接收测试所得信息的专门任务,它从目标机上的测试获得测试结果数据。
四、脚本语言及脚本语言解释器
(一)脚本语言
实时嵌入式软件测试脚本语言的设计:在脚本化的实时嵌入式软件测试中,测试脚本语言的设计非常关键,根据实时嵌入式软件测试的特点和脚本化的嵌入式软件测试的实现机制,我们采用对结构化的脚本语言进行扩展的方式,即在通用结构化语言的词法、语法的基础上加入针对实时嵌入式软件测试特性的描述。通用结构化语言是指在C语言的基础上,进行C简化,保留不可缺少的、可用于实时嵌入式软件测试的结构化特性,而省去一些测试中不必要的特性。我们设计的脚本语言包括控制命令和消息命令两大部分。控制命令是对测试执行的流程进行控制,如整数变量、循环(for)、条件判断(if⋯else)、暂停(pause)、中止(stop)、脚本执行开始段(begin)、脚本执行中止段(end)等。而消息命令由一个主要的命令组成,就是msg命令,msg命令后面有五个参数,分别是被测试对象的进程号、发向被测试对象的消息号、被测试的消息内容、消息内容参数1、消息内容参数2。这五个参数就可以决定目标嵌入式系统执行何种测试。
(二)脚本语言解释器
1.脚本语言。软件测试中,实现软件测试自动化技术的有效手段是脚本技术的引入。软件测试脚本化可以减少测试人员的工作量,提高软件测试的可维护性,实现软件测试过程中用户和被测软件之间的交互。同时由于解释性的脚本语言可移植性好,有利于实现跨平台,可提高脚本代码的可重用性,提高测试的可重复性。测试脚本是具有正规语法的数据和指令的集合。在软件测试过程中,测试脚本通常以文本形式存在,由测试脚本组织用户所施加的一系列软件执行动作,达到驱动被测软件运行的目的,从而完成测试。
2.脚本解释器。根据实时嵌入式软件测试脚本语言的设计,设计针对该语言的解释器。脚本语言解释器是脚本语言的支撑,解释器设计的成功与否直接关系到能否实现脚本化的实时嵌入式软件测试。针对上述脚本语言设计中所提到的用户施加的测试命令及其特性,则需要处理测试中各命令的时间要求以及命令之间的并发同步等问题,解释器应由两部分组成,即控制部分和解释部分。控制部分的作用在于对测试脚本进行预处理,提取各种命令的执行脚本,生成按时间排列的命令表,然后根据实时调度时钟信号和条件判断触发解释部分的调用,借助在控制部分中的多命令处理方式可以保证测试中各种命令的并发和同步的处理,从而保证了实时嵌入式软件测试中对实时特性的要求;解释部分的工作原理是在控制部分按时钟信号触发后,加载需要解释的脚本执行代码,脚本源代码首先由词法分析器进行词法分析,分离出标识符、关键字和变量名等,然后由语法分析器根据语法定义,分析源程序的语法正确性并根据语义执行相应的语义动作。最后生成测试命令并通过目标服务器下载到目标机上,以驱动被测软件的运行。
五、测试结果分析工具及测试报告生成
测试结果分析工具包括内存分析工具、性能分析工具、覆盖分析工具等。
内存分析工具:在嵌入式系统中,内存约束通常是有限的。内存分析工具用来处理在动态内存分配中存在的缺陷。当动态内存被错误地分配后,通常难以再现,可能导致的失效难以追踪,使用内存分析工具可以避免这类缺陷进入功能测试阶段。
性能分析工具:在嵌入式系统中,程序的性能通常是非常重要的。经常会有这样的要求,在特定时间内处理一个中断,或生成具有特定定时要求的一帧。开发人员面临的问题是决定应该对哪一部分代码进行优化来改进性能,常常会花大量的时间去优化那些对性能没有任何影响的代码。性能分析工具会提供有关的数据,说明执行时间是如何消耗的,是什么时候消耗的,以及每个例程所用的时间。根据这些数据,确定哪些例程消耗大部分执行时间,从而可以决定如何优化软件,获得更好的时间性能。对于大多数应用来说,大部分执行时间用在相对少量的代码上,费时的代码估计占所有软件总量的5%~20%。性能分析工具不仅能指出哪些例程花费时间,而且与调试工具联合使用可以引导开发人员查看需要优化的特定函数,性能分析工具还可以引导开发人员发现在系统调用中存在的错误以及程序结构上的缺陷。
覆盖分析工具:在进行白盒测试时,可以使用代码覆盖分析工具追踪哪些代码被执行过。分析过程可以通过插装来完成,插装可以是在测试环境中嵌入硬件.也可以是在可执行代码中加入软件,也可以是二者相结合。工具一般会提供有关功能覆盖、分支覆盖、条件覆盖的信息。对于嵌入式软件来说,代码覆盖分析工具可能侵入代码的执行,影响实时代码的运行过程。基于硬件的代码覆盖分析工具的侵入程度要小一些,但是价格一般比较昂贵,而且限制被测试代码的数量。
以上测试结果分析工具可根据测试偏重点的不同选用相应比较成熟的商业分析工具。软件测试报告的内容包括测试结果的统计信息,测试结果的分析、评判。我们可以用C语言中的fprintf函数实现测试报告的生成。
六、结束语
随着我国软件业的发展,作为软件质量保证的重要组成的软件测试已越来越受到重视,而软件测试自动化工具由于可以提高软件测试的有效性和效率,因此,软件测试自动化工具的开发已成为软件测试的一个重要研究领域。本文对实时嵌入式软件测试进行了研究和设计,介绍了开发实时嵌入式软件测试自动化中的一些关键技术的实现思想,该思想已成功地应用于公司的嵌入式操作系统软件平台测试,对该软件平台的质量和稳定性起到了很关键的作用。
参考文献:
[1]康一梅,张永革.嵌入式软件测试[M].机械工业出版社,2008,7
[2]于以序,何艳敏.实时嵌入式软件测试研究[J].中国测试技术,2004,9
[3]飞思科技产品研发中心.实用软件测试方法与应用[M].北京:电子工业出版社,2003
关键词:.NET;软件测试;业务管理系统;B/S模式
中图分类号:TP3 文献标识码:A
1 引言(Introduction)
当前软件项目需求飞速增长,软件规模越来越大,软件的质量问题也比较突出。多年以来,人们认识到要想高效率、高质量和低成本地开发软件,必须以改善软件生产过程为中心,全面开展软件工程和质量管理手段,对软件生产的管理亟待改进。因此,软件测试在军工、银行、证券、保险、电信、控制、医疗软件、电力等行业都得到的重视[1]。
根据国内专业的软件测试技术网站在2014年做的2013年度软件测试从业人员调查结果数据显示,79%的软件测试从业人员从事的测试工作类型为手工功能测试;其次是测试管理,比例为35%,如图1所示。从数据分析,绝大多数的软件测试从业人员都是从事手工功能测试工作,项目实施过程中难免涉及很多的信息交互、项目执行记录等,此时测试过程的规范化管理就显得尤为重要[2]。
开展软件测试服务业务以来,积累的项目越来越多,所有的材料提交、补正、更新、进度查询、报告或者证书领取通知等都通过工程师与企业联系人的口头交流方式(或者电话或者即时通讯软件)来进行,经常一个项目做下来,需要经过与企业联系人的多次、反复的沟通,既浪费人力物力又浪费时间,而且没有办法以书面的形式永久、正式记录下每个软件项目的实施过程。阶段性统计几乎全部靠人工计数,无法及时反应每个阶段业务的分布情况。对软件测试业务的过程管理亟待改进。
2 系统目标及需求(System goal and demand)
业务管理不只是管理业务、控制流程,还需要管理业务涉及的各个方面,例如:记录业务执行过程中的状态信息、相关附件等。而相应的,业务管理系统则是实现管理功能的软件平台[3]。本文预期实现的软件测试业务管理系统整合现有资源,做到维护方便,改变目前重复劳动、记录不便、无法电子存档相关信息的状况,实现后台相关数据录入方便,前台数据展示及时全面。功能主要分为后台录入、编辑部分和前台显示、查询部分。
前台满足用户对软件测试业务项目实施进度、相关新闻资讯的查询。后台实现对各软件测试项目各类文档的归档管理和各项目实施进度的记录等功能,项目实施流程的监督和查询,以及相关文件的上传下载等功能。实现统计分析,支持统计数据Excel形式导入导出。
该项目的实施便于相关人员对各类文档进行统一归档管理,记录项目实施流程的各个环节一些需要备注的信息,进一步规范化工作。
3 系统设计(System design)
3.1 系统业务流程分析
系统的业务流程如图2所示。
3.2 系统主要功能模块
业务管理系统分为前台展示查询部分和后台编辑管理部分,主要功能模块有:业务数据录入管理、统计分析、软件企业信息库、相关下载、系统管理等。其中业务数据录入、统计分析、软件企业信息库为本项目的核心部分。
按照建设要求设计实现网站,对业务相关的各类文档进行归档管理,并实现用户对所实施软件技术服务项目流程的监督和查询。
(1)前台页面,企业或个人用户通过输入准确的软件产品名称和委托企业名称即可查询软件测试项目的实施进度。在没有登录的情况下只能进行精确查询,登录了以后可以进行模糊查询。
(2)前台页面,已经登录的企业或个人用户可以在线提交软件测试或著作权登记需求,并上传相关文件。
(3)软件测试项目实施进度分为:电子文档在审、电子文档已审、纸质材料受理、纸质材料受理结束并已缴费开发票、测试过程中、回归测试、测试过程结束、出具测试报告、企业领取报告、项目完结。
(4)后台页面:实施的软件项目列表可详细列出所有受理的项目信息,支持Excel导出;软件项目对应可以上传相关文档,每个软件对应一个文件夹。
(5)后台页面:可按照一个或者几个所选年度内所申报的软件进行查询统计,年度以受理日期为准。实现按年度、产品类型统计项目个数。支持尽量多的字段进行查询和排序,后台支持模糊查询。
3.3 数据存储结构设计
本系统的数据库服务器采用SQL Server2005,在.NET平台上对数据的存取通过来实现。包括五个主要部分:Connection负责连接应用程序和需要访问的数据库,DataAdapter提交并获取查询结果,Command对象执行数据库查询、添加、删除、或者返回特定表内容的直接请求。DataReader对象一次存取一条记录,减少内存占用量,提高了应用程序的性能[5]。
根据需要实现的功能,为业务管理系统建立数据库,主要由用户信息表、软件测试项目信息表、项目所处状态类型表、软件企业信息表、软件测试类别表、文档资源表等组成。
(1)软件测试项目信息表:软件测试项目信息表是整个业务系统的核心,主要记录项目编号、产品名称及版本号、委托单位、开发单位、项目开发平台、开发语言、纸质材料受理日期及受理人员、测试项目缴费情况、项目进展状态、测试人员、测试日期、测试地点、项目联系人及联系电话、测试报告编号、报告接收人、上传的相关文档等。此表以项目编号为主键,同时作为外键与其他表关联。
1 . 软件测试 的目的是尽可能多的找出软件的缺陷。( Y)
2 .Beta 测试是验收测试的一种。( Y)
Acceptance testing
验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
3 .验收测试是由最终用户来实施的。( N )
是由测试人员来实施的
4 .项目立项前测试人员不需要提交任何工件。( Y ) 工件:加工过程中生产对象
5 .单元测试能发现约80% 的软件缺陷。( Y )
6 .代码评审是检查源代码是否达到模块设计的要求。( N )
代码评审也称代码复查,是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。
7 .自底向上集成需要测试员编写驱动程序。( Y )
自顶向下综合测试的具体步骤为:
1 以主控模块作为测试驱动模块,把对主控模块进行单元测试时引入的所有桩模块用实际模块替代;
2 依据所选的集成策略(深度优先或广度优先),每次只替代一个桩模块;
3 每集成一个模块立即测试一遍;
4 只有每组测试完成后,才着手替换下一个桩模块;
5 为避免引入新错误,须不断地进行回归测试(即全部或部分地重复已做过的测试)。
自底向上综合测试的步骤分为:
1 把低层模块组织成实现某个子功能的模块群(cluster);
2 开发一个测试驱动模块,控制测试数据的输入和测试结果的输出;
3 对每个模块群进行测试;
4 删除测试使用的驱动模块,用较高层模块把模块群组织成为完成更大功能的新模块群。
8 .负载测试是验证要检验的系统的能力最高能达到什么程度。( N )
负载测试(Load testing),通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力。在这种测试中,将使测试对象承担不同的工作量,以评测和评估测试对象在不同工作量条件下的性能行为,以及持续正常运行的能力。负载测试的目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。此外,负载测试还要评估性能特征。例如,响应时间、事务处理速率和其他与时间相关的方面。
9 .测试人员要坚持原则,缺陷未修复完坚决不予通过。( N )
10 .代码评审员一般由测试员担任。( N )
11 .我们可以人为的使得软件不存在配置问题。( N )
是一种标识、组织和控制修改的技术。软件配置管理应用于整个软件工程过程。我们知道,在软件建立时变更是不可避免的,而变更加剧了项目中软件开发者之间的混乱。
12 .集成测试计划在需求分析阶段末提交。( N )
执行阶段
1)时间安排 单元测试已经完成后就可以开始执行集成测试了
2)输入 需求规格说明书 概要设计 集成测试计划 集成高度设计 集成测试例 集成测试规程 集成测试代码(如果有) 集成测试脚本 集成测试工具 详细设计 代码 单元测试报告
3)入口条件 单元测试阶段已经通过基线化评审
4)活动步 骤 执行集成测试用例 回归集成测试用例 撰写集成测试报告
5)输出 集成测试报告
6)出口条件 集成测试报告通过集成测试阶段基线评审
二、选择题
1 .软件验收测试的合格通过准则是:(ABCD)
A . 软件需求分析说明书中定义的所有功能已全部实现,性能指标全部达到要求。
B . 所有测试项没有残余一级、二级和三级错误。
C . 立项审批表、需求分析文档、设计文档和编码实现一致。
D . 验收测试工件齐全。
2 .软件测试计划评审会需要哪些人员参加?( ABCD )
A .项目经理
B .SQA 负责人
软件质量保证(SQA)是建立一套有计划
目标 1: 软件质量保证工作是有计划进行的。
目标 2: 客观地验证软件项目产品和工作是否遵循恰当的标准、步骤和需求。
目标 3: 将软件质量保证工作及结果通知给相关组别和个人。
目标 4: 高级管理层接触到在项目内部不能解决的不符合类问题。
C .配置负责人
D .测试组
3 .下列关于alpha 测试的描述中正确的是:( AD )
A .alpha 测试需要用户代表参加
B .alpha 测试不需要用户代表参加
C .alpha 测试是系统测试的一种
D .alpha 测试是验收测试的一种
4 .测试设计员的职责有:( BC )
A .制定测试计划
B .设计测试用例
C .设计测试过程、脚本
D .评估测试活动
5 .软件实施活动的进入准则是:( ABC )
A .需求工件已经被基线化
工件加工过程中的生产对象。
基线化 一个文档如果经过讨论被通过了,被固定了,就可以说这个文档被“基线化”了,然后所有人就可以在这个“基线”的基础上工作。
B .详细设计工件已经被基线化
C .构架工件已经被基线化
D .项目阶段成果已经被基线化
三、添空
1. 软件验收测试包括:_正式验收测试,alpha测试,beta测试。
2. 系统测试的策略有:功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,文挡测试,故障恢复测试,界面测试,容量测试,兼容性测试,分布测试,可用性测试
(有的可以合在一起,分开写只要写出15 就满分哦)
3. 设计系统测试计划需要参考的项目文挡有:_软件测试计划,软件需求工件和迭代计划。
4. 对
面向过程的系统采用的集成策略有:自顶向下,自底向上两种。
5. 通过画因果图来写测试用例的步骤为:
(1)根据程序规格说明书描述,分析并确定因(输入条件)和果(输出结果或程序状态的改变),画出因果图。
(2)将得到的因果图转换为判定表。
(3)为判定表中每一列所表示的情况设计一个测试用例。
四、简答
1. 区别阶段评审的与同行评审
答:
同行评审目的:发现小规模工作产品的错误,只要是找错误;
阶段评审目的:评审模块 阶段作品的正确性 可行性 及完整性
同行评审人数:3-7人 人员必须经过同行评审会议的培训,由SQA指导
阶段评审人数:5人左右 评审人必须是专家 具有系统评审资格
同行评审内容:内容小 一般文档 < 40页, 代码 < 500行
阶段评审内容: 内容多,主要看重点
同行评审时间:一小部分工作产品完成
阶段评审时间: 通常是设置在关键路径的时间点上!
2. 什么是软件测试
答:测试是为发现错误而执行程序的过程
软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。
3 简述集成测试的过程
答:系统集成测试主要包括以下过程:
1. 构建的确认过程。
2. 补丁的确认过程。
3. 系统集成测试测试组提交过程。
4. 测试用例设计过程。
5. 测试代码编写过程。
6. Bug的报告过程。
7. 每周/每两周的构建过程。
8. 点对点的测试过程。
9. 组内培训过程。
5 白盒测试有几种方法
答:总体上分为静态方法和动态方法两大类。
静态:关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。
动态:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
6 系统测试计划是否需要同行审批,为什么
答:需要,系统测试计划属于项目阶段性关键文档,因此需要评审。
7Alpha 测试与beta 的区别
Alpha测试(α测试)是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。Alpha测试发现的错误,可以在测试现场立刻反馈给开发人员,由开发人员及时分析和处理。目的是评价软件产品的功能、可使用性、可靠性、性能和支持。尤其注重产品的界面和特色。Alpha测试可以从软件产品编码结束之后开始,或在模块(子系统)测试完成后开始,也可以在确认测试过程中产品达到一定的稳定和可靠程度之后再开始。有关的手册(草稿)等应该在Alpha测试前准备好。
Beta测试(β测试)是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。因而,Beta测试是在开发者无法控制的环境下进行的软件现场应用。在Beta测试中,由用户记下遇到的所有问题,包括真实的以及主管认定的,定期向开发者报告,开发者在综合用户的报告后,做出修改,最后将软件产品交付给全体用户使用。Beta测试着重于产品的支持性,包括文档、客户培训和支持产品的生产能力。只有当Alpha测试达到一定的可靠程度后,才能开始Beta测试。由于Beta测试的主要目标是测试可支持性,所以Beta测试应该尽可能由主持产品发行的人员来管理。
答:Alpha 测试 在系统开发接近完成时对应用系统的测试;测试后仍然会有少量的设计变更。这种测试一般由最终用户或其它人员完成,不能由程序或测试员完成。
Beta 测试 当开发和测试根本完成时所做的测试,最终的错误和问题需要在最终发行前找到。这种测试一般由最终用户或其它人员完成,不能由程序员或测试员完成。
8 比较负载测试,容量测试和强度测试的区别
答:负载测试:在一定的工作负荷下,系统的负荷及响应时间。
强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。
容量测试:容量测试目的是通过测试预先分 析出反映软件 系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试 还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据 的,并且它的目的是显示系统可以处理目标内确定的数据容量。
9 测试结束的标准是什么?
答:用例全部测试。
覆盖率达到标准。
缺陷率达到标准。
其他指标达到质量标准。
10 描述软件测试活动的生命周期?
答:
测试周期分为计划、设计、实现、执行、总结。其中:
计划:对整个测试周期中所有活动进行规划,估计工作量、风险,安排人力物力资源,安排进度等;
设计:完成测试方案,从技术层面上对测试进行规划;
实现:进行测试用例和测试规程设计;
执行:根据前期完成的计划、方案、用例、规程等文档,执行测试用例。
总结:记录测试结果,进行测试分析,完成测试报告。
11 软件的缺陷等级应如何划分?
A 类— 严重错误,包括以下各种错误:
1 . 由于程序所引起的死机, 非法退出
2 . 死循环
3 . 数据库发生死锁
4 . 因错误操作导致的程序中断
5 . 功能错误
6 . 与数据库连接错误
7 . 数据通讯错误
B 类— 较严重错误,包括以下各种错误:
1 . 程序错误
2 . 程序接口错误
3 . 数据库的表、业务规则、缺省值未加完整性等约束条件
C 类— 一般性错误,包括以下各种错误:
1 . 操作界面错误(包括数据窗口内列名定义、含义是否一致)
2 . 打印内容、格式错误
3 . 简单的输入限制未放在前台进行控制
4 . 删除操作未给出提示
5 . 数据库表中有过多的空字段
D 类— 较小错误,包括以下各种错误:
1 . 界面不规范
2 . 辅助说明描述不清楚
3 . 输入输出不
规范
4 . 长操作未给用户提示
5 . 提示窗口文字未采用行业术语
6 . 可输入区域和只读区域没有明显的区分标志
E 类— 测试建议
4 怎么做好文档测试
仔细阅读,跟随每个步骤,检查每个图形,尝试每个示例。
检查文档的编写是否满足文档编写的目的
内容是否齐全,正确
关键词:软件单元测试 测试用例 模块化
中图分类号:TP311.52 文献标识码:A 文章编号:1007-9416(2012)02-0133-03
当前,对软件工程领域的讨论出现了很多优秀文章。软件工程也作为一门重要的学科得到了快速的发展。在这些文章中对软件的设计和开发都做了比较深刻的探讨。但是,软件测试技术作为软件工程中的一个非常重要的环节却经常得不到人们的深刻认识。往往人们在有些方面还对软件测试的环节和作用有着不同程度的错误认识。
1、软件测试的地位
测试在软件开发的过程中到底应该占据一个什么样的位置?许多人对此问题理解的并不十分深刻。人们有时对此问题的理解在某种程度上甚至还存在着错误。有些人认为软件测试只是对做出的东西做一个功能的检验,此过程只要在开发过程中做好调试工作,这一模块完全可以避免。软件测试是为了测量软件与需求和总体框架是否吻合以及吻合程度。一个软件做的到底合不合格,此产品是否可以,是否能够满足用户的需要,是否能给用户留下良好的形象,其中测试起着举足轻重的作用。由此我们可以看出,软件的测试绝不是在开发过程中可有可无的模块,它占据着一个十分重要的地位。
我们做测试是在软件开发过程中与其它各模块有机融合的测试,不是把其单独拿出来看看它是什么,做了什么?而是看我们做这些功用在哪,做了这些为整个软件开发带来什么样的益处。
2、测试技术
2.1 对测试认识的常见误区
测试的目的是判断软件是否与预期目标相符及相符的程度。当然如果狭义的讲我们也可以说测试就是尽可能早的、尽可能多的发现现有文件中的错误,并将错误提交给相关人员,使问题尽早得到解决。但是过去有许多人对软件测试并不是认识的特别清楚,即使是现在也有一部分人对测试的理解和测试本质意义仍有很大偏差。以下我们将介绍两种对测试理解的常见错误。
2.1.1 测试与调试的等同
有些人将测试和调试在一定程度上混为一谈,他们认为如果在调试上多花些功夫,则测试是完全没有必要的。这是一种极其错误的想法。此种错误的根源在于没有对测试和调试的基本概念搞清楚。调试是指程序员在开发过程中对自己书写的程序进行正误的判断,看自己的代码是否能够按照架构文档描述正常工作。而测试的工作则是看得到的代码或软件是否按照需求文档工作,这具体包括:各个功能是否得到了有效的实现,最终得到的软件的整体性效果如何。软件在一定的压力条件下(比如:内存相对不足)是否能正常工作,输入错误信息得到什么样的回馈,系统在长时间工作的条件下是否还能正常运行等等。
对这些概念理解清楚了,自然就能够正确区分测试和调试的差别。当然测试和调试有一些内容存在交汇点。
2.1.2 测试的起始介入时间
有些人认为测试是在软件开发完成后进行一次总体的检查,其起始时间是在其它工作都基本结束的时候,再致力于软件的测试工作。其实则不然,软件的测试工作是应该与需求分析同步起来,也就是说在做需求分析的过程中应当有测试人员介入,这样使得测试人员对此系统具体要完成哪些工作做到心中有数。有一点大家一定注意,测试不只是看程序员写的程序是否能够正常工作,更重要的是看其是否满足用户需求,以及在各种条件下的满足程度。
伴随着需求分析文档的诞生,测试人员的测试框架和测试文档也应当相应的得到实现。当程序员完成部分工作,则测试人员就应该根据测试文档书写测试程序对得到的现有完成部分进行测试。这样一旦发现bug,就及时提交给相关人员,通过这一过程,能使问题在最早的时间段内得到解决,同时也使损失尽可能的降到最低。软件的开发就是这样相互叠加式的前进过程。
在我们了解了测试的常见错误后,下面让我们对测试的分类进行一下梳理。
2.2 测试分类
软件的测试按照不同的分类方法可分成不同的类。按照测试人员的不同可分为:专业测试和用户测试;按照软件总体性可分为:黑盒测试和白盒测试;按照开发的不同阶段可分为:软件开发过程中测试和产品测试及后段测试;按照软件性能可分为:功能测试,极限测试,容错测试,压力测试和时间测试等等。在下面向大家介绍几种重要的测试类别。
2.2.1 黑盒测试和白盒测试
软件测试从整体角度可分为黑盒测试和白盒测试。黑盒测试顾名思义就是我们对程序代码内部机制不用管,我们关心的只是其功能。比如我们将其看成一个黑箱子,其内部放些什么东西我们并不了解。我们向其做一定的输入,看其输出结果会是什么样子。通过这种方法我们来确定此模块的功用是否与要求相符,这叫做黑盒测试。相反,我们不仅要知道盒子的输入输出反应,还要知道其内部实现机理,一旦在哪一块出现错误,我们可以及时的修正。通过这样的方法进行测试称为白盒测试。
比如我们对于以下代码模块进行测试:
void swap(int *a,int *b) {
a += b;
b = a-b;
a = a-b;
}示例代码2.1
当我们用黑盒测试的时候我们只看到盒子两个入口,可以放两个变量指针,所以我们就把变量&aValue,&bValue传进去,而结果是交换了两个内存单元的数据。而白盒测试则不然,它要求我们明白盒子(即程序具体代码)的内在实现过程。比如我们发现使的是java语言,而不支持指针操作,所以我们作为测试员就可以把代码修正,如下:
public static void swap(int & a,int &b) {
a += b;
b = a - b;
a = a - b;
}示例代码2.2
这样我们同样实现了相同的功能。
2.2.2 功能测试
在软件性能测试中最重要的就是功能测试,功能测试是看我们要测的模块是否能够完成要求的任务,是否在正常情况下给其一个合适的输入能得到期望的回应。功能测试最重要,但在实现起来也最简单。比如测试一个线程能否被正确建立我们可以用以下代码:
void test() {
Thread t = Thread.instance();
if(t= = null) {
printfile(0);
return; }
Hresult hr = t.start();
if (hr != OK) printfile(0);
}示例代码2.3
这样我们就可方便地进行功能测试了,看其是否正常工作,如果不能正常工作,我们将会在输出文件里得到0信息。
2.2.3 极限测试
极限测试是我们判断软件在给定边界值的工作情况的,比如我们给定文档说线程可以同时起动10个,则我们可以使用如下程序来实现此功能:
void test() {
Thread t = Thread.instace();
int count = 0;
if (t = =null) {
printfile(0);
return; }
bool b = true;
while(b) {
{保证线程不退出机制}
Hresult h = t.start();
if (h != OK) {
printfile(count);
printfileappend(count >= 10);
b=false; }
count++;}
{线程退出,释放资源}
}示例代码2.4
通过这样的方法我们可以得到最多起动线程数和是否满足了需求,如果满足了用户需求,则我们就会在输出文件里得到两个数,第一个为线程启动数,第二个为true。比如(20 true)。
2.2.4 容错测试
容错测试则是我们不像设计者预期的那样给定的系统值,比如在示例代码2.1的时候我们给其为两变量(a,b)或(pointa,b)(a,pointb)(pointa代表a为一指针)看结果会怎么样,通过这样看当给定错误代码时系统界面是否友好,当然我们更不希望当接收错误信息时系统会崩溃掉。
2.2.5 压力测试
压力测试指我们的系统在不像我们设想的理想环境下运行时,会有什么效果。比如内存不足,系统运行一定时间,硬件兼容性低,硬件配置相对较低等等。例如我们做示例代码2.4的压力测试:
void test() {
{耗掉大部分内存}
示例代码2.4
}示例代码2.5
这时我们观察看输出文件是否还会得到第一个数大于10而第二个数为true。
2.2.6 时间测试
时间测试也叫耐力测试,是看我们设计的系统是否能够长时间运作接收各种服务而仍能正常工作的测试。
2.3 测试过程
在软件开发过程中,当进入需求分析阶段,测试工作也将启动。测试根据开发的各个阶段不断前进也将自己逐步推进到新的层次。
2.3.1 测试文档的生成
测试文档的生成包括两个阶段。第一阶段是在需求分析及总体框架设计时测试员生成自己的测试框架,此框架根据需求分析文档得到相应的需求测试文档。当然在此阶段不可能细化测试框架,因为我们还不知道我们的系统细节应该是个什么样子。所以到了详细框架设计时,我们就应该根据此框架设计我们的测试用例。
2.3.2 测试框架设计
在此阶段我们得到一个整体的测试框架,我们不要求细化内容,当然也不可能在需求分析阶段做到。我们按照需求分析文档和整体框架设文档设计测试框架。比如对于一个简单的操作系统我们可以:
1文件测试
需求:网络应用,……
2进程测试
需求:客户请求启动相应服务,……
3线程测试
需求:当某一任务启动后又有用户请求,启动一线程为其服务,……
如此得到大致的测试方向,当软件开发进发详细框架设计时,我们就有可能根据相应的文档产生出我们的测试文档了。
2.3.3 测试用例设计
我们进入测试文档书写的时候,最重要的就是用例设计。我们对用例的选择,一方面要进行全面性考虑,另一方面我们也要选择那些有代码性的用例来设计。即我们不仅要有数量,面面俱到,还要有质量,每个用例都有一个特定的代表,而并非简单的用例重复。例如:线程测试的一个用例(用例1)
测试名称
线程测试
测试类型
功能测试
预期结果
输出(n,true)n>10
测试目的
在正常情况下线程的最大启动数目应该在10以上
测试简述
1.产生一个线程实例,看是否正确
2.注册一个机制使启动线程不退出
3.循环判断最大启动线程数
4.线程退出,释放资源(如表1)
通过以上的设计,我们就可以方便地进行测试程序的编码了。
2.3.4 测试程序的书写
在此阶段我们根据测试文档书写测试代码。在书写代码时我们有几点需要注意:
第一,结果简单。我们需要的最终结果是个易于看易于理解的结果,而并非十分晦涩复杂难懂的文件。初学者最容易犯这个毛病,因为输出多对调试增加了方便。但是我们需要的结果要尽可能简单,因为在dailybuider里面要有生成结果和标准结果的比较,如果复杂了,则不易实现文件的比较。
第二,确保测试程序的正确性。在书写测试程序时我们要确保我们所写的程序是正确的。如果这个都保证不了,那我们就无从谈起发现bug。因为真的发现了问题,我们不知道是自己的程序错误还是其他人犯的错。这就要求我们对我们所测的内容有比较详细的了解。
第三,正确取边界值。在我们做极限测试时,要选取有代表性的边界值用来测量。在此过程要防止单一化,要多选几个靠近边界的值,以达到有效的确定边界。
2.3.5 测试报告的填写
我们做好了以上几步后,最终我们还要将测试的过程以文档的形式保存起来,测试报告包括测试时的一些重要信息。比如:
测试报告:
测试题目:线程测试
测试过程:……
预期结果:……
实际结果:……
在测试阶段是否异常:(是/否)
异常描述:……
文档示例3.1
在填写测试报告时要实事求是,把各项详细填写。这样为bug责任人提供修复依据。
2.4 测试工具
随着软件工程和软件测试技术的发展,软件测试工具也层出不穷,种类繁多。如Eunit就是比较优秀了工具之一。软件测试工具可分为动态测试分析工具,静态测试分析工具和软件测试管理工具。其中前两项属于软件测试技术的范畴,是按静态测试和动态测试两种主要的测试方法进行分类的。
2.4.1 动态测试分析工具
由于动态测试是一项过程性工作,需要经过测试准备(包括测试计划,测试设计和测试开发)测试执行和测试评价等各阶段的工作才能完成,因此软件动太测试工具的主要功能一般包括测试准备,测试执行和测试评价3类。
2.4.2 静态测试分析工具
软件的静态测试工具是指在不执行被测程序的条件下,被测软件进行分析的工具。软件静态测试工具主要具有4类功能:分析理解,质量度量,规则检查和特殊检查。
比较典型的测试工具有:QAC,McCabe,PolySpace,Eunit等。
总之,软件测试就是为做出的软件更好地满足用户需求而进行的一致性测评,即测量最终结果是否与需求分析中的用户需求相吻合或吻合程度。软件的测试绝不是在开发过程中可有可无的模块,它占据着一个十分重要的地位,在软件开发过程中我们应给予其足够的重视和正确的认识。
参考文献
[1]王家华.软件工程[M].东北:东北大学出版社,2001,10-18,31.
[2]林宁,孟庆余.软件测试实用指南[M].北京:清华大学出版社,2004,30-35.
[3]姚淑珍.用例分析技术(第二版)[M].北京:中信出版社,2002,50-56.
[4]张海藩.软件工程导论(第四版)[M].北京:清华大学出版社,2003,20-24.
两年以上工作经验|男|27岁(1989年12月11日)
居住地:北京
电 话:135*******(手机)
E-mail:
最近工作[1年7个月]
公 司:XX有限公司
行 业:互联网/电子商务
职 位:系统测试工程师
最高学历
学 历:本科
专 业:计算机科学与技术
学 校:北京农学院
自我评价
本人自中学开始就养成凡事应该从基层做起,并且不能把自己的能力定位过高的性格习惯,所以我在校期间无论从事什么工作都是从基层做起,尽量把工作约束在自己的能力之内,脚踏实地的工作。但只要有机会,我一样会进行更高的尝试,让自己的能力继续升级。
求职意向
到岗时间:可随时到岗
工作性质:全职
希望行业:互联网/电子商务
目标地点:北京
期望月薪:面议/月
目标职能:系统测试工程师
工作经验
2013/10 – 2015/5:XX有限公司[1年7个月]
所属行业:互联网/电子商务
集成部
系统测试工程师
1.熟悉软件测试理论、流程和方法,有较强的逻辑分析能力、测试用例设计能力。
2.能根据系统业务需求独立完成测试用例设计、执行,缺陷跟踪,风险分析,并根据结果执行回归测试,分析测试结果,撰写测试报告。
3.能从多角度考虑模块设计的完备性,灵活性,可扩展性,并提出改进建议。
2012/6 – 2013/9:XX有限公司[1年3个月]
所属行业:互联网/电子商务
集成部
系统测试工程师
1.熟悉软件测试理论、流程和方法,有较强的逻辑分析能力、测试用例设计能力。
2.能根据系统业务需求独立完成测试用例设计、执行,缺陷跟踪,风险分析,并根据结果执行回归测试,分析测试结果,撰写测试报告。
3.能从多角度考虑模块设计的完备性,灵活性,可扩展性,并提出改进建议。
教育经历
2008/8— 2012/6 北京农学院 计算机科学与技术 本科
证书
2009/12 大学英语四级
关键词:软件测试;过程管理
中图分类号:TP311.5 文献标识码:A 文章编号:1007-9599 (2011) 22-0000-01
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.测试总结阶段的工作产品:软件测试报告。
七、结束语
只有把每个测试阶段应完成的工作做好了,才能保证最终的软件测试质量。软件测试组织都应制定适合自己的软件测试过程管理体系文件,确保过程管理规范,各阶段工作做到位。
参考文献:
[1]单锦辉,姜瑛,孙萍.软件测试研究进展[J].北京大学学报(自然科学版),2005,1
自我介绍是向别人展示自己的重要途径,是与他人进行沟通、增进了解、建立联系的一种最基本、最常见的方式,是人与人进行沟通的出发点。在面试软件测试工程师时该如何进行自我介绍呢?本文是小编整理的软件测试工程师面试英文自我介绍范文以及关于软件测试工程师面试的知识,仅供参考。
软件测试工程师面试英文自我介绍范文
软件测试工程师面试英文自我介绍范文1I’m Cheers.Lee, I’m twenty-six year old, I majored in E-business and with a bachelor degree.I’m single.And I love software testing, as the software quality is vital to the company’s customer, it also could improve the company’s image, so quality is the best policy.We must devote all my energy to assure the software quality.
The position which I’ve come to apply is senior software testing engineer.I have three years work experience, one year and a half of function testing experience and one year of performance and automation testing experience.I have been reading up on software testing, especially on performance testing and automation testing.I’m quite familiar with performance testing tool LoadRunner, and familiar with automation testing tool QTP.I’m good at developing performance testing script base on C language in web system, and also have good skills in develop QTP script.
As we all know that software performance has become more and more important, while thousands of the users log in the system or visit the website simultaneously, the problem may occurred, the system crash or the server deny to provide the service to the user, so the performance testing need to be done before the software delivered to our customers.
We also benefit from the automation testing.There is always a lot of function testing or regression testing need us to finish in a short time.But we do not have enough time and sufficient human resource to complete it, how should we do? So the automation testing is the best solution.It cut down the costs, improve the work efficiency, save our time and energy.Its advantage is not merely as so.
软件测试工程师面试英文自我介绍范文2Good morning, ladies and gentlemen! It is really my honor to have this opportunity for an interview.I hope I can make a good performance today.I'm confident that I can succeed.Now I will introduce myself briefly.I am 26 years old, born in Shandong province.I graduated from Qingdao University.My major is electronics.And I got my bachelor degree after my graduation in the year of 2003.I spent most of my time on study, and I’ve passed CET-6 during my university.And I’ve acquired basic knowledge of my major.It is my long cherished dream to be an engineer and I am eager to get an opportunity to fully play my ability.
In July 2003, I began working for a small private company as a technical support engineer in Qingdao city.Because there was no more chance for me to give full play to my talent, so I decided to change my job.And in August 2004, I left for Beijing and worked for a foreign enterprise as an automation software test engineer.Because I want to change my working environment, I'd like to find a job which is more challenging.Moreover,Motorola is a global company, so I feel I can gain a lot from working in this kind of company.That is the reason why I come here to compete for this position.I think I'm a good team player and a person of great honesty to others.Also,I am able to work under great pressure.I am confident that I am qualified for the post of engineer in your company.
That’s all.Thank you for giving me the chance.
软件测试工程师面试技巧核心提示:第一个问题:自我介绍(心理学首因效应告诉我们第一印象非常重要),自我介绍最重要的是能够在面试官心目中留下一个好的第一感觉。说得更直白一点是让面试官舒服。但是我发现很多人就是直接简单的介绍了一下过去的经历,但是实际上一方面过去的经历没有很好的让人发现优点。其实面试好比相亲,你想说什么不重要,重要地是人家想听什么。比较好的自我介绍套路是这样:“您好,我叫XXX,很高兴能获得这次...
第一个问题:自我介绍(心理学首因效应告诉我们第一印象非常重要),自我介绍最重要的是能够在面试官心目中留下一个好的第一感觉。说得更直白一点是让面试官舒服。但是我发现很多人就是直接简单的介绍了一下过去的经历,但是实际上一方面过去的经历没有很好的让人发现优点。其实面试好比相亲,你想说什么不重要,重要地是人家想听什么。比较好的自我介绍套路是这样:“您好,我叫XXX,很高兴能获得这次面试机会,今天来面试是想证明自己是最合适的人选,另一个方面是获得您的认可,结合我过去的工作和学习经历,我自信我能符合咱们公司的认可,接下来您看是我继续介绍我做过的项目,还是您问您关心的问题?”
第二个问题:项目介绍(项目经验直接决定一个人能否胜任一份工作,企业更应该看重一个人解决问题的思路和具体能力),项目介绍部分最重要的思路是应该先整体后局部,介绍整体的时候要有量化的数据(从项目度量的五大维度:规模,包括项目代码规模,需求规模、用例规模,工作量,进度,质量和成本),然后是整体的测试流程,然后再是角色与职责,接下来是项目中自己的特色,比如做得最好的是、遇到最大的困难时、最差的是,最后是心得体会。
第三类问题:数据库方面知识,最基本的要求是数据库记录的增删改查(insert、delete、update、select),表结构的增删改查(create、drop、alter、describe)、存储过程、触发器等。
第四类问题:linux操作系统相关,最基本的目标是熟悉常见的50个命令,比如find命令(-name、-type、-perm、-user、-group、-ctime、-atime)等,熟悉vi、熟悉linux搭建测试环境。比如LAMP环境搭建。
第五类问题:缺陷相关知识,最基本的是缺陷跟踪的流程(流程的基本要素),整体的流程,最好能在纸上给面试官画出来(尤其是男面试官,从男人好色的角度来看,写得很清楚很重要),缺陷单的属性,至少能列出20个属性,每个属性的意义,如何描述好缺陷单,缺陷单描述的5C原则,比如缺陷重现步骤应该complete.如何描述一个你认为的最经典的bug单。
第六类问题:用例相关,最基本的包括用例的格式要素,用例设计工程方法论,每个方法要求(方法的背景,操作步骤,优缺点、适应范围,与其他用例方法如何配合),在项目中如何利用测试用例设计工程方法。如何评价、评审测试用例,评审从哪些维度?要设计好测试用例需要哪些方面的知识结构,比如技术、业务、方法。
第七类问题:软件测试流程,系统测试相关规范和标准的流程:熟悉产品/项目,需求评审,测试需求,测试计划,测试方案,测试用例,预测试,第一轮正式测试、第二轮回归测试、第三轮测试,测试报告,测试总结,测试指南。
第八类问题,网络相关,最基本的网络基础知识,比如TCP/IP协议。
第九类问题,测试工具,包括三个大的类型,第一类是性能测试工具、自动化测试工具、测试管理类工具。最起码的要求是熟悉工具的使用。
第十类问题,给你一个软件,比如QQ、QQ斗地主,你如何去测试,这类问题基本的思路是,从软件质量模型、测试工具、测试方法、测试流程、探索式测试等角度先宏观解决,然后再具体微观讲解用例如何设计等。
第十一类问题,一个优秀/卓越的软件测试工程师应该具备哪些能力与素质,素质方面包括沟通、五心工程师、追求完美等
第十二类问题,最后一个问题,面试官一般会问,您还有什么想问的吗?还有什么想了解的吗?总体上来说最重要的是留下一个好的近因效应,就好比相亲的时候,分手离开的时候,留下好的最后的印象,基本的思路应该分三种情况,第一种是面试官对你满意,自己也感觉不错的情况下,先表示感谢,然后积极主动的问题,比如,非常感谢您给的这次机会,但是我还是想问,如果我有下一轮面试,我想知道知道是什么时候,我应该再做哪些方面的准备。第二种情况是面试官和自己感觉都一般般,感觉自己是鸡肋,这个时候说不说很重要,基本的套路是,非常感谢面试官给的这个机会,坦白地说我对自己今天的面试表现不是非常满意,还可以表现得更好,但是如果我还是非常想得到这个机会,您能否给我一些建议。第三种情况是面试情况非常糟糕,这种情况下,很少有人能说出感谢,但这恰恰体现一个人的风度。基本的思路是,不管怎么样,还是得感谢您给的机会,让我自己认识到自己的不足,坦白地说我离这个岗位的要求还有些距离,但是我还是想知道,如果将来我还想来咱们公司面试,您能否给点具体建议。
总结,面试是一个相亲的过程,相亲的成败取决于很多要素,但是好的、充分地准备,能够让我们更加从容地和主动的去面对压力与挑战,而不是简单地把自己变成超市里面的菜,供人挑选。
软件测试工程师面试经验总结首先说明我算上找实习的时候的面试总共就经历了不到5次,没有多少经验,就在网上和书上摘录了些我认为比较重要的,分享给大家,希望各位都能找到一份适合自己的好工作。
1.笔试题
对于笔试,有的公司笔试题是不区分开发和测试岗位的,测试人员除了要掌握好测试的基本知识外最好也是有编程基础,具有尽量多的计算机的知识,像操作系统的基本知识(线程等),数据库的基本操作(增删改查,关联查询,授予权限等),数据结构的知识(像二叉树的前序、中序、后序查询)。
2.面试
如果在笔试中没有考测试的基本知识,那在面试中是肯定要被问到的。面试前一定要做好准备,可以在网上搜一下关于这个公司的笔试题和面试题,以供参考。如果时间充裕可以找一本自己能看的进去的讲软件测试的书,认真的有侧重点的看看。软件测试的几个主要的阶段,不一定死记硬背能用自己的话说出来也可以或者能举例说明,那几个主要的白盒和黑盒的测试方法能熟练的应用到实际的例子中,等价类划分和边界值分析经常被问到。
每个公司做的项目都不一样,最好先了解下要应聘的那家公司主要是做哪方面的,比如对美外包的公司就要求英语水平,能看懂英文文档甚至能同外国人交流,最好能提前先看些英语的文章,准备下英文的自我介绍,临时提高下英语水平。
我被问到的面试题(答案仅供参考)
1.为什么不考研?
2.想要一份什么样的工作
3.做软件测试人员需要具备什么样的职业素质
(1) 专业技能,包括测试的技能和开发的技能
(2) 积极的态度
(3) 良好的沟通能力
(4) 细心
(5) 耐心
(6) 团队意识
4.对他们公司的了解
5.再就是些工作地点能否接受,有没有男朋友之类的基本问题
以下是针对实习项目问的问题(答案仅供参考)
6.缺陷报告有几个状态,都包括哪些内容
状态:新建,打开,修复,关闭,重复的bug,无效的bug,被拒绝的bug,其他 内容::标题、模块名称、项目名称、测试环境、重现步骤、期望结果、实际结果、严重级、优先级、发现人、接收人和附件(截图,说明等)。
7.有一个文本框,只能输入0-5个字母的组合,如何进行测试
从字符串的长度考虑,按照边界值方法设计测试用例
从字符串的长度考虑,按照边界值方法设计测试用例
从字符串的组成内容考虑,按照等价类划分方法设计测试用例
8.简单的说一下性能测试和压力测试
9.写过自动化测试的脚本吗
10.我实习的项目是一个金融的网站,技术的面试官问我,商品的价格是左对齐还是右
对齐(对于这个问题我也不知道为啥会被问到,有什么具体的含义,猜想可能是判断我的项目经验是否真实)
下面是我网上摘录的一些可能被问到的面试题
1.您认为做好测试用例设计工作的关键是什么?
答:白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果
黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题
2.在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录?
3.谈一些自己在以往的学习和工作中获得的工作经验和心得体会?(可以包括软件测试、过程改进、软件开发或者与此无关的其他方面
4.什么是软件测试。
5.Alpha
测试与beta 测试的区别。
6.测试结束的标准是什么?
7.测试项目:杯子
需求测试:查看杯子使用说明书
界面测试:查看杯子外观
功能度:用水杯装水看漏不漏;水能不能被喝到
安全性:杯子有没有毒或细菌
可靠性:杯子从不同高度落下的损坏程度
可移植性:杯子再不同的地方、温度等环境下是否都可以正常使用
兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等
易用性:杯子是否烫手、是否有防滑措施、是否方便饮用
国际化:杯子上的图案有没有触犯到某个国家或宗教的禁忌
用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述
疲劳测试:将杯子盛上水(案例一)放24小时检查泄漏时间和情况;盛上汽油(案例二)放24小时检查泄漏时间和情况等
压力测试:用根针并在针上面不断加重量,看压强多大时会穿透
跌落测试: 杯子加包装(有填充物),在多高的情况摔下不破损
震动测试: 杯子加包装(有填充物),六面震动,检查产品是否能应对恶劣的铁路\公路\航空运输
测试数据:测试数据具体编写此处略(最讨厌写测试数据了)。其中应用到:场景法、等价类划分法、因果图法、错误推测法、边界值法等方法
期望输出:该期望输出需查阅国标、行标以及使用用户的需求
说明书测试: 检查说明书书写准确性
给大家提三个产品:1.手机 2.电饭锅 3.电梯
8.图书(图书号,图书名,作者编号,出版社,出版日期)
作者(作者姓名,作者编号,年龄,性别)
用SQL语句查询年龄小于平均年龄的作者姓名、图书名,出版社。
9.软件测试分为几个阶段
各阶段的测试策略和要求是什么
10.您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员良好的人际关系的关键是什么?
11.请以您以往的实际工作为例,详细的描述一次测试用例设计的完整的过程
12.您认为做好测试计划工作的关键是什么?
13.您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。
14.测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?
答:软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。
测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)
15.为什么要在一个团队中开展软件测试工作?
答:因为没有经过测试的软件很难在之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将时,从测试报告中得出软件的质量情况。
软件测试工程师-个人简历个 人 简 历
基本信息:
姓 名:
出生年月:1991年7月
工作年限:2年
婚姻状态:未婚
电子邮箱: 性 别:男 毕业学校:广东建华学院 学 历:大专 专 业:计算机专业 手 机:
专业技能:
1、熟悉软件测试理论,软件测试流程,编写测试用例等;
2、熟练应用黑盒测试的方法,如边界值法、等价类法、场景法等;
3、掌握自动化测试工具QTP、性能测试工具LoadRunner的基本使用,如录制脚本,参数化设置,脚本优化等;
4、熟悉软件测试的管理工具,如BugFree
缺陷管理工具、SVN版本控制、MindManager 思 维导图等工具的使用;
5、熟悉Oracle和MySQL数据库的基本操作,如增、删、查、该等命令的使用;
6、熟悉Linux操作系统的基本操作;
7、对C语言有一定的了解,如9条基本语句、数组、指针等等的使用;
项目经验:
项目一
项目名称: 奔腾出租车
运行环境: Linux + MySQL + Apache
项目概述: 本系统是一套功能全面的出租车管理系统,通过该软件可以让出租车公司内部及时准确地采集各种数据信息,处理高速化和网络办公自动化。实现对出租车 公司司机的信息记录,操作,出租车管理,提供精确查询等多种查询方式。主 要功能模块有:首页、基本信息设置、任务管理、统计图表、辅助工具、帮助 菜单、用户信息管理等。通过规范化管理来掌握车辆信息,处理车辆调度,将 很大程度上解决出租车公司在工作上的管理难度,让车管理更上一个台阶。 责任描述: 1、根据项目需求文档进行需求分析,写出需求点;
2、针对责任模块编写有效的测试用例;
3、搭建测试环境,保证测试出的数据真实可靠;
4、执行测试用例,用BugFree提交Bug并跟踪其状态;
5、进行回归测试;
6、编写测试报告。
项目心得: 对软件测试有了更深层的理解,当编写用例时,要尝试新的技术,新的思维,往往Bug就出现在意想不到的地方;明白了回归测试的重要性,因为偶尔会有些模块在上一版本没有出现问题,但在修复某个Bug时却出问题了,所以测试时需要考虑全局,不要只局限于某个小模块。
项目二:
项目名称: 金华酒店管理系统
运行环境: Linux + MySQL + Apache +PHP
项目概述: 金华酒店管理系统主要应用于中小型酒店,通过该软件可以方便快捷的管理酒店,使酒店的工作质量和效率提高。软件采用先进的计算机网络通信技术,改变了酒店业务模式,大大提高了工作效率。本系统的功能包括房间状况管理、添加房间信息、维修管理、退房管理、客户入住等,是为了不让人工繁琐去操作,而设计的一个管理系统。
责任描述: 1、测试软件是否达到需求规格书的要求,包括:各个功能点是否以实现,业务流程是否正确;
2、编写测试用例,如用边界值法、等价法、错误推断法等方法编写;
3、搭建测试环境(按照说明书搭建);
4、执行测试用例,用BugFree提交Bug并跟踪其状态。
项目心得: 测试的规范化是及其重要的。测试时要注意Bug的群集现象,因为往往百分之八十的问题都发生在百分之二十的模块当中。
项目三:
项目名称: 科达薪水助手
运行环境: Linux + MySQL + Apache +PHP
项目概述: 本系统基于B/S架构,主要用来支持企业薪酬管理,方便企业管理员工信息,统计日常支出,员工薪酬管理等等。主要功能模块有员工信息管理、部门管理、工资管理、收支统计、系统设置、辅助工具、薪酬报表等。本系统的特色就是把员工的信息和薪酬等信息整合在一起,更方便快捷的操作,一套好的工资管理系统,有助于建立科学有效的薪酬体系。
责任描述: 1、编写测试用例;
2、执行测试用例,用BugFree工具提交Bug,并跟踪其状态。
项目心得: 对黑盒测试的各种方法的应用更加得心应手了。
工作经历:
2012/08—2021/01 创拓达科技有限公司 软件测试工程师 自我评价:
本人性格随和,适应能力强,有较强的学习能力,能独立分析和解决问题。能快速融 入到团队中去,工作积极上进,对于领导分配的任务认真完成。
软件测试工程师面试英文自我介绍范文的人还看了:
1.软件工程师面试自我介绍范文
2.应届生软件测试面试自我介绍范文
3.软件测试面试自我介绍范文
4.软件测试面试自我介绍
5.软件测试工作面试自我介绍范文
6.软件测试工程师简历自我评价
7.软件测试工程师的自我评价
8.计算机专业英文自我介绍范文
关键词:软件测试;案例教学;项目驱动
中图分类号:G642 文献标识码:B
近几年专业性的软件测试机构和组织迅速发展,随之带来了专业软件测试人才的旺盛需求,软件测试人才的培养正成为新的热点。然而,软件测试课程的理论与实践脱节,现有许多软件工程教材中关于软件测试的章节只介绍软件测试的理论方法,即使有案例也只是简单说明,并没有介绍软件测试的具体方法和实现过程,这导致学生只会死记硬背软件测试的条条框框而不懂如何活学活用。为此,我们尝试进行改革,引入了新的教学思路和措施。
1案例教学
案例教学法比传统的以教师为主导的教学法,更有利于提高学生分析问题和解决问题的能力,促进学生学会学习以及沟通合作。我们在教学的过程中,以可操作的软件测试案例为中心,让学生能在教学中体会实际的测试过程。
首先,一个好的测试案例所包含的内容必须完整,应包含测试目的、特殊的硬件要求、特殊的软件要求、特定的配置、执行测试的描述、测试的预期结果或成功条件。
其次,根据测试的分类不同,可分为以下几种:
对于单元测试案例,主要按照程序内部的结构测试程序,检验程序中的每条通路是否都能按预定要求正确工作。这类测试案例主要验证模块接口、模块局部数据结构、模块边界条件、模块中所有独立执行通路、模块的各条错误处理通路。掌握白盒测试/黑盒测试方法以及单元测试的用例设计;通用代码编程规范、伪码写作规范的检查;基本的代码静态检查方法与工具运用;代码覆盖率检查方法与工具运用;OO程序单元测试方法与过程;针对内存泄漏的检查;掌握测试覆盖分析方法和测试用例最小化的运用。
对于功能测试案例,用于鉴定执行后启用的功能。这类测试案例验证软件是否提供了基本的单
元功能、是否提供集成后的功能,以及是否提供解决方案设计中指定的其他功能。
对于Web测试案例,Web系统是当前网络环境下最多的应用系统,其主要内容设计为Web性能测试项目解析、性能测试流程、测试规划与设计、性能测试需求分析、用户事务分析、Web资源分析、网页元素细化等。
对于集成测试案例,主要包括针对结构化软件和面向对象软件的集成测试,独立开展集成测试用例设计和用例执行。具体分为基于结构化程序的集成测试方法和基于UML图的面向对象的集成测试方法。
对于系统测试案例,掌握常见系统测试类型的基本测试方法,独立设计系统测试用例,运用手工方式或测试工具完成系统测试,包括功能测试、性能测试、压力(负载)测试、配置测试、易用性测试。
再次,教学案例的具体应用。我们根据难以程度,将测试案例大致可分为简单的基础性实验案例和综合实验。简单的基础性实验案例主要包括白盒测试和黑盒测试,通过学习让学生掌握软件测试最基本的一些方法。综合性的实验案例,特别是较大型的软件项目测试实验,让学生在实验的每一个步骤中理解软件测试技术和各种具体的测试方法,增强实际操作能力,增加软件项目测试的综合经验。
通过综合性实验的学习,可以让学生感受大型软件测试项目的工作流程和实施细节,掌握各种软件测试方法在大型项目中的应用,体会软件测试的规律;了解软件测试项目的管理,熟悉软件测试项目中人员的管理、产品的管理、软件测试案例的管理以及缺陷的管理;能够进行比较复杂的白盒测试或自动化测试,为从事要求较高的软件测试打下很好的基础。
2项目驱动
软件测试是一项技术性较强的工作,规范的实施也是以工程的方式开展或进行。因此,最好的课程内容及教学设计是通过项目的活动及过程来呈现问题,运用相关理论知识解析问题,以及通过工程过程解决问题,通过项目阐明技术方法与策略的运用。
项目的复杂性通过分解得到局部的单一性和简单化。项目包含了由易到难,由简单到复杂,由单一到综合,逐步实现的内容和过程。软件测试本身就是理论与实践紧密结合的一门技术学科或工程体现,贯彻项目教学法是该课程理论教学与实践教学“一体化”的最好形式。通过项目教学,可落实教学的循序渐进原则、系统化原则、目标性原则、整体优化原则以及规范化原则。项目教学使教学内容的构建紧密围绕课程总体目标展开,项目组成具有针对性强,目标具体明确、步骤清晰的特点。它按照组成技能教学内容及相互间的内在联系,使各部分内容有所侧重,互相衔接,
软件测试项目大致可以分为以下三个方面:“软件测试技术”等课程的实践教学,强调案例教学法,强调实践教学;课外实践,强调综合性、设计性实验,由学生在课余时间完成,包括毕业设计;企业实习,和多个企业建立关系,供学生实习软件测试。
3常用自动化测试工具使用
在理解软件测试自动化原理基础上,掌握业界常用的
Rational、WinRunner、LoadRunner、Junit、Panorama等系列测试组件的运用。在制定的测试策略中应用测试自动化工具开发、编辑、运行和调试自动测试脚本程序,建立测试过程、生成测试报告,分析测试结果,理解测试工具如何进行对测试数据进行自动评估分析,掌握测试工具如何对测试文档生成和利用。如表1。
4结束语
我们对软件测试的教改受到了学生和老师的普遍欢迎。通过调查,大多数学生认为使他们对课本知识的理解更加深入了,主动思考问题的能力也得到了提高。教师们也普遍反映“软件测试”的教学质量和教学效果得到极大的提高。
参考文献
[1] 钟元生. 软件测试实践教学特色的构建实践[J]. 电化教育研究,2006,162(10):62-65.
[2] 张小进,陈雄峰. 软件工程课程改革探索―软件测试在程序设计课程中的引入[J]. 高等理科教育,2006,70(6):91-94.
[3] 贺平. 软件测试课程开发[J]. 计算机教育,2006,(12):53-56.
认清“第三方”的责任
第三方测试以合同的形式制约了测试方,使得它与开发方存在某种“对立”的关系,所以它不会刻意维护开发方的利益,保证了测试工作在一开始就具有客观性。第三方一般都不直接参加开发方系统的设计和编程,为了能够深入理解系统,发现系统中存在得问题,第三方测试必须按软件工程的要求办事,以软件工程的标准要求开发方和用户进行配合,从而较好地体现软件工程的理念。引入第三方测试后,由于测试方相对的客观位置,由用户、开发方、测试方三方组成的三角关系也便于处理以往用户、开发方双方纠缠不清的矛盾,使得许多问题能得到比较客观的处理。
第三方测试不同于开发方的自测试。由于他熟悉设计和编程等,往往习惯于按一定的“程式”考虑问题,以至思路比较局限,难于发现“程式”外存在的问题。因为第三方测试的目的就是为尽量多地发现程序中的错误而运行程序的过程,可以更多的发现问题。随着系统越做越大,客观上讲开发人员也无精力参与测试,同时也不符合大生产专业分工的原则。
第三方测试不同于用户的自测试。用户是应用软件需求的提出者,对于软件应该完成的功能是非常清楚的,是进行功能验证的最佳人选。客观情况是,大部分的用户都不是计算机的专业人士,很难对系统的内部实现过程进行深入的分析。对系统的全面测试,功能测试仅仅是一个方面,还要包括并发能力、性能等多种技术测试。
如何组织管理
在测试的过程中,用户、开发方与测试方形成了一个三角关系,从最终目标来讲,三方是完全一致的,都是希望保证系统稳定运行。但在测试过程中,三方的关系却是既对立又合作。
软件测试的过程
为了保证测试的顺利进行,测试方必须强化内部的组织管理。根据我们的经验,完整的测试机构必须包括业务分析部门、技术支持部门、规划设计部门和综合后勤部门。
“第三方”测试什么
根据软件的特性,第三方软件测试工程可划分为三种类型四个层次。
第一类是系统软件、环境软件和各类工具软件等的测评。对这类软件的评测重点是软件产品的功能、性能和特点评测。
第二类是面向应用软件系统的测评。这类软件,具有很强的行业应用特性,往往是要由用户与开发商签定项目合同,开发商负责开发,用户负责验收。对这类软件的评测,根据用户对第三方的依赖程度,又可分为两个层次。第一个层次只对应用软件系统进行综合、性能测试。第二个层次是对应用软件系统进行质量监理与评测。
承担该类软件质量监理评测的第三方,承担软件过程质量监理的责任,在软件生命周期过程中,从软件定义开始,要对软件过程从质量保证角度进行规范化的监督、管理和控制。评测工作不仅包括软件生命周期各阶段的评审,而且还要对程序系统,进行包括模块白盒测试在内的系统集成、系统验收等测试。
第三类是对软件企业的CMM评估认证,也是最高层次的软件评测。
了解测试评估
测试评估是软件测试的一个阶段性的结论,用所生成的测试评估报告,来确定测试是否达到完全和成功的标准。在测度评估阶段向用户提供强有力的支持,包括通过测试报告,验证测试结果是否符合测试计划中制定的测试标准;根据缺陷报告提供的测试结果数据,给出软件质量和测试完整性的评估报告;特别在以下几方面对测试的过程进行评测:
评估测试用例覆盖:测试的目标是确保100%的测试用例成功地执行。主要考虑风险和严重性、可接受的覆盖百分比。
评估代码覆盖:需要断定测试目标期望的总的测试代码行数,在测试中真正执行的代码行数及其百分比,将此结果记录在测试评估报告中。
【关键词】人力资源;信息系统;软件测试
当前企业管理的主要基础工作就是人力资源管理,多年来,不管是三项制度改革、工资分配改革,还是社会保障推行,以及下岗职工的安置,人事资源管理始终站在企业改革的前沿。为了适应现代化企业的发展和要求,人力资源管理工作也可以利用信息化平台,开发出人力资源信息管理系统,可以利用人力资源开发性、有价性以及可配置性等特性进行合理的配置和综合的开发。其中,为了能够保障系统的可靠性与稳定性,软件测试是必不可少的环节,对该系统投入运行起着决定性的作用。本文对人力资源信息系统与软件测试技术进行了深入的探讨和分析。
1人力资源管理系统综述
人力资源管理系统利用信息化技术实现了许多管理功能,对人事档案、员工考勤、人员变动、员工培训、就业合同、保险、工资、招聘等人事行政事务,并拓展到资源开发、资源控制以及决策支持等高级功能领域。其作为一种对人才资本进行管理的产品,主要是提供一种兼具广度和深度的解决方案。该系统能够将许多管理功能汇集在一个数据库当中,使数据库具备最全的核心功能、功能层次和模块领域,最多的管理模式、最佳实践及细节功能。系统通过数据采集、挖掘、分析和可视化管理等,将数据灵活便捷的呈递给各级管理人啊云进行人才管理等服务。
2人力资源管理系统软件测试的目的
软件测试的主要目的可以分为三个方面:(1)在于确定系统软件的质量,即软件能够以正确的方式达到设计标准。(2)为开发人员和之后的风险评估提供信息。(3)软件开发过程时符合高质量的。简言之,对人力资源管理系统软件进行测试的目的就是尽可能的寻找出最多的缺陷,因此在对测试用例进行选取时,要尽量去选择容易发生异常的程序和数据,因而能够有效的定义软件成分,并实现从低层到高层的组装过程,可以验证此系统是否满足任务计划,以及其他规定的技术要求,并为建立软件质量模型提供可靠依据。
3人力资源管理系统软件测试过程分析
3.1软件测试定义
人力资源管理系统进行软件测试,是为了发现系统的运行错误而进行的测试。软件测试是指根据系统开发阶段涉及到的标准和说明,以及系统程序的结构而设计的测试样本,一般将测试样本输入程序,然后运行程序,并对输出结果进行分析,发现程序错误。软件测试流程通常分为五步,当上一步完成并获得批准之后可以进行测试的下一步流程。流程包括:制定测试计划、设计测试用例、满足启动准则并进行测试、撰写测试报告、完善软件错误。
3.2测试功能点汇总
人力资源信息系统测试功能包括以下几个方面:(1)电子档案方面,需要测试功能点有人员信息的添加、修改、删除以及查询。(2)职位调动方面,需要测试的功能点有两大点,一是单位内调动包括调动的办理、调动批量办理和历史调单打印;二是单位之间的调动包括单位之间调动的申请和办理、单位之间批量调动的办理和申请、单位之间调动集团公司审批。(3)综合查询方面,需要测试的功能点包括综合查询条件组合、综合查询结果打印、综合查询任意字段显示。(4)人员流动统计方面,需要测试的功能点包括统计单位工人调动人数和统计参加作业人数。(5)单位设置方面,需要测试功能点包括添加新单位、新单位修改、单位信息删除。(6)工种设置方面,需要测试工种的添加、修改和删除。(7)退休管理方面,需要测试功能点包括退休预警、预测、申报、分析等。(8)合同管理方面,需要测试合同预警和合同预测功能。(9)账号管理方面,需要测试管理数据范围和管理模块使用范围功能。除此之外,还应测试分组查询功能、用功形式报表统计功能、人员减少办理功能、政策法规查询功能、人力资源统计分析功能、系统在线升级功能等等其他相关功能。测试主要检测这些功能的窗口完成是否准确、数据是否准确、操作是否简洁;功能键是否描述准确、操作是否方便;输出结果是否正确;其业务流程说明书是否正确、软件数据流是否流向正确;除此之外还要检验该系统的用户容量等等。
3.3测试流程与方法
人力资源信息系统软件测试主要采用黑白盒测试、单元测试、集成测试、系统测试和验收测试。白盒测试主要测试软件内部设计和程序,依靠设计文档进行测试。黑盒测试可以直接跳过软件内部,只测试输入和输出,依靠其他测试方法的结果进行测试。黑百盒测试相辅相成,可以对系统进行由大到小、由内而外的全面性测试。单元测试选取的粒度最小,常由开发小组通过白盒进行测试,检验测试单元是否合格。系统测试选取的粒度最大,常由独立的测试组用黑盒进行测试,验证整个系统是否满足需求规格说明书。而集成测试选取的粒度居中,有承上启下的作用,常由开发小组自行采用黑百盒进行测试,验证设计和需求是否合格。验收测试则由用户进行测试,功能与系统测试相似。
4结语
随着我国信息化建设的加快,为企业的发展既带来了一定机遇,也带来了许多挑战。一个信息系统软件,特别是人力资源信息系统对企业的工作运转效率起着重要的作用,而软件测试对于系统软件能否可靠稳定的运行非常关键。人力资源信息系统的开发和使用,以及该系统的测试工作,对提升组织效率,完善组织功能至关重要.因此,应当增强对于信息系统软件的测试工作的重视,提升软件测试结果的质量。
参考文献
[1]章建美.企业级信息系统(EIS)人力资源模块的设置原则[J].华东电力,2008(05):97-99.
[2]李耀辉,利.机械制造企业人力资本投资风险评测与软件开发[J].西安科技大学学报,2006(09):416-420.
[3]杨寿保.导入小型软件企业小型软件项目的研究[J].计算机工程与应用,2002,38(18):88.
关键词:软件测试流程;科学;缺陷报告;基本测试方法
中图分类号:TP311
众所周知,目前主流的软件开发模式大致可以分为原型开发模型、流水模式(瀑布模型)、螺旋模型三种。其中,螺旋模型已被证实是目前开发软件的最有效手段,是测试人员最喜爱的测试模型。然而,因目前国内测试人员缺口较大,大部分公司依旧采用传统的瀑布模型或原型开发模型进行软件开发,使得测试工作时间十分紧凑。测试员如何在短时间内检测出软件存在的问题,成为一个完整的软件开发的重中之重。本文从计划测试工作、制定测试用例、实际测试、报告缺陷四个方面来分析软件测试周期。
首先,我们来明确一下软件缺陷的五种判定依据:(1)软件未达到产品说明书标明的功能。(2)软件出现了产品说明书致命不会出现的错误。(3)软件功能超出产品说明书指明范围。(4)软件未达到产品说明书虽未指出但应达到的目标。(5)软件测试员认为软件难以理解、不易使用、运行速度缓慢,或者最终用户认为不好。基于以上判定依据,我们开始进行测试流程分析。
1 计划测试工作
测试同编程一样,不可能毫无根据的进行。计划测试过程的最终目标是交流软件测试团队人员的意图、期望,以及对即将要执行的任务的理解。在计划过程中,首先要明确测试的目标与内容,统一缺陷描述语句。其次,通过明确分配团队人员的责任与任务来制定测试策略,建立良好的团队依赖性。再次,编写测试用例并执行测试工作。最后,报告软件缺陷并检查缺陷修复情况。
2 制定测试用例
测试用例的编写是作为软件测试员最重要的任务之一。不正确的测试用例可能导致测试量过大或者过小,甚至测错目标。在编写测试用例时,首先要明确测试计划的目标并规划测试的范围。目标必须绝对,以避免说不清软件是否能够达到目标需求。规划测试范围时,要确认无需测试的内容,以防重复测试,节约测试时间。确定无需测试内容时,需要明确理由,以防由于误解使某一部分在测试过程中漏掉,产生重大缺陷。
接下来,介绍几个容易在测试规划中易遗漏的测试部分。首先是硬件配置测试。比如打印机。商务类软件对打印机的使用要比其它类的软件更为频繁,然而,许多商务类软件的测试用例执行书中,常常忽略对打印机打印的测试,这可能使得用户在使用过程中产生不满(可能会出现无法打印或者软件硬件不兼容的情况)。其次,测试软件的兼容性。商务软件可能需要大量的数据导入导出操作。数据导入导出文本格式以及对Windows Office或WPS各版本的文本兼容性也是测试的重点之一。再次,以使用者的角度测试软件界面的易用性。比如,“回车键”的使用。许多人习惯以回车键代替确认按钮。测试用例编写人员在基于说明文档编写测试报告时,也应当从使用者的角度注意部分特殊按键对软件功能的影响。
3 进行实际测试
3.1 静态黑盒测试,是基于产品说明书进行的高级审查(即在代码编写前进行的测试,后简称审查),在软件开发的初期进行。因其能以最快的速度将软件缺陷的数量降至最低、损失降至最少,是软件测试最重要的环节。如果时间充裕,应首先保证审查的执行。
审查时,主要注意以下五点:(1)注意产品说明书的用语。比如,当文中出现绝对一类的词语时,测试人员应当开始考虑针锋相对的案列进行分析;当文中出现等等、诸如此类、依此类推这种让人迷惑的词语时,我们也可以将其视为缺陷。(2)注意产品说明书是否具有完整性、准确性、精确性、一致性、合理性、代码无关性,并且功能描述是否贴切、可测试。(3)注意定义产品开发设计界面与代码以及产品用语(术语)的标准和规范。(4)注意了解客户,从用户角度审查产品说明书是否合理。(5)注意了解其他同类软件。正所谓“知己知彼,百战不殆”。在了解其它同类软件的同时,有助于制定测试条件以及测试方法,甚至可以发现无法想到的潜在缺陷。
3.2 动态黑盒测试,在业内也被戏称为“闭着眼睛测试软件”,因为在测试过程中测试员不知道程序如何工作,只是按照用例说明标注的操作步骤进行行为操作,因此,动态黑盒测试也被称为“行为测试”。在执行测试用例时,首先要进行通过测试,确定产品在普通情况下能正确运行并实现需求说明书中的基本功能。在确定软件可以正常运行之后,采取各种手段以搞垮软件为目的进行破坏性测试。
3.3 静态白盒测试,也称为结构分析,是在不执行软件的情况下审查软件设计、体系结构和代码,首要目的是尽早发现动态黑盒测试难以遇到的软件缺陷。审查的目标是要查找出出错的代码以及遗漏的项目。审查时要注意编码是否符合编码标准和规范;注意数据是否存在声明、引用、计算、比较等方面的错误;注意软件是否有错误处理相关代码,注释是否齐全,是否考虑兼容性等方面。
3.4 动态白盒测试,即在软件执行的情况下检查代码并观察其运行状况。主要由四个部分组成:检查API,从顶层起完整的测试软件,通过访问权限强制软件以非正常方式运行,估算“命中”代码并查缺补漏。动态白盒测试通过提供关于测试对象“内部”的信息,大幅的减轻测试工作,消除冗余的测试案例,增加测试案例的针对性,是一种非常强大的测试方法。
4 报告软件缺陷
4.1 缺陷报告的基本原则。(1)尽快报告软件缺陷。越早发现软件缺陷,修复的时间越多,越能减少因软件缺陷造成的损失。(2)有效的描述软件缺陷。语言尽量简短明确,便于查看;缺陷报告尽量单一、详细;步骤描述尽量通俗易懂,易分离可再现。(3)报告缺陷时不夹杂个人感情。在进行软件测试时,测试员常常会与开发人员产生冲突,在两方人员相互对立的情况下开展的测试活动整个对项目的进行会产生恶劣的影响,甚至导致项目的失败。因此在提交缺陷时要求测试员不夹杂个人感情、客观的报告缺陷。(4)及时补充和完善缺陷报告。良好的测试员善于发现并记录软件缺陷,优秀的测试员在发现和记录大量软件缺陷之后,会继续跟踪其后续修复过程,以保证缺陷被完全修复。
4.2 分离和再现软件缺陷。要想有效的报告缺陷,就要以明显易用和再现的形式报告它,必要时可以使用windows自带的问题记录器或通过录音录像等方式提交Bug步骤说明。
我们可以通过以下几种方法分离软件的缺陷:(1)通过考虑软件缺陷出现的时间点,内存及网络的使用状况,查找时间依赖和竞争条件产生的缺陷。(2)查看缺陷的产生是否与内存泄露或数据溢出等边界条件相关。(3)查找特定状态。在本人进行的软件测试中,曾有一次系统崩溃在连续打开不同界面后突然返回某一主控制界面导致整个操作系统的数据库被清空。(4)考虑硬件问题。主板松动,内存损坏,硬盘坏道,CPU温度过高,硬件型号都有可能是导致软件缺陷产生的原因。
5 结束语
软件缺陷的报告是在软件测试周期中的最后一步。从表面上来看,报告软件缺陷似乎是测试周期中的最简单一步。然而实际上,这一步有可能是测试员最重要甚至是最难完成的一步。由于时间、风险、缺陷报告的有效性等原因有可能导致软件缺陷无法被修复。一个优秀的测试员不仅要有良好的技术能力,也要有良好的语言描述及公关能力,保证缺陷得到修复的机会。
参考文献:
[1](美)Rom Patton:Software Testing.
[2](美)William E.Perry:Effective Methods for Software Testing.
[3](美)William E.Perry,Randall W.Rice:Surviving the Top Ten Challenge of Software Testing.