软件测试心得体会十篇

时间:2023-04-08 03:47:21

软件测试心得体会

软件测试心得体会篇1

回想起当年的创建历程,吴铸成副主任介绍说,北京市非常重视软件产业的发展,将软件产业确定为首都高新技术产业的重中之重,力争在十年左右的时间里,将软件产业发展成为首都经济的支柱产业,北京市出台了一系列鼓励软件发展的政策措施。为了给北京地区软件企业的创新发展提供优良的创业环境,2002年,北京市在国家科技部的支持下,在全国率先建成了支持软件企业创新发展的大型科技条件平台――北京软件产业基地公共技术支撑体系。该体系包括软件构件库、开放源码库和软件工具库,以及软件产业综合服务和管理平台、软件开发实验平台、软件质量管理平台、软件评测平台(简称“三库四平台”,2006年12月新增软件过程基准平台,扩展为“三库五平台”)。质检中心的物理依托就是“三库五平台”中的软件评测平台。

质检中心成立之初设定建设目标:按照国际软件检测行业的标准,建成装备一流、技术一流、管理一流的权威的第三方检测机构,成为规范北京软件产品质量的执行单位、提高北京信息化建设质量水平的支持单位、帮助企业提高产品质量的合作伙伴和提供软件质量检测解决方案和技术的示范单位。

四年多来,质检中心瞄准国际一流质量检测机构的管理水平、技术水平和质量水平,努力建设一个高起点、高水平的现代化第三方软件质量检验机构,为北京的信息化建设和软件产业发展发挥了卓有成效的作用,并以自己的服务和质量水平赢得市场,中心的无形资产也快速上升。质检中心为国家“863”计划中许多软件项目提供验收测试服务,是国家“863”软件专业孵化器北京软件产业基地公共技术支撑体系的软件测试服务中心,也是国家科技部火炬计划软件产业基地的测试平台。2004年10月,质检中心被国家质量监督检验检疫总局批准成为“国家应用软件产品质量监督检验中心”,成为我国质检系统第一个部级软件产品质量监督检验中心。

日益壮大的质检中心吸引了越来越多的优秀人才加盟,谢腾翔就是其中的一位。她曾参加过“921”神州飞船的开发、测试、联调与实际发射工作,获“921工程突出贡献奖”2003年进入质检中心,现为该中心副主任。她认为,质检中心的壮大,一方面是契合了软件产业发展的需要,另一方面是质检中心对自身的严格要求和不懈追求,形成了如今的技术实力和品牌价值。

为建设现代化的软件质量检测中心质检中心的建设综合考虑四个要素,这就是质量体系,工作流程,测试环境和技术队伍。

质量体系是规范软件检测质量行为的依据,质量体系建设是质检中心各项建设之纲。质检中心在成立之初,就组织人员按照国际ISO/IEC 17025标准,结合自身的业务特点,创建自己的质量体系,并于2003年12月,通过了国家实验室认可委员会的认可,获得了《中国实验室国家认可委员会认可证书》。根据实际情况以及国家质量监督检验检疫总局、中国实验室国家认可委员会的评审要求,质检中心每年在质量体系的贯彻和建设上不断出台新举措,实现管理的持续和有效。

测试环境是开展软件检测工作的基础,是软件检测业务适应北京软件产业发展的平台保证。经过四年多的建设,质检中心已建成中国最好的软件产品测试环境,拥有软件测试线2500平方米,建有综合测试实验室,兼容测试实验室,开源软件实验室和专业软件测试工具实验室等。为了服务于软件企业的创新发展,质检中心还于2006年先后建设效率测试实验室和数字媒体实验室,培养了质检中心核心竞争力的同时,加强了对行业应用软件的支撑。质检中心建有先进的测试网络环境,千兆网络端口直接连到工程师的桌面,而且每个测试工程师配备六个这样的端口。质检中心拥有完备的测试服务器机群,包括IBM、HP、SUN、联想、浪潮等国内外计算机厂商生产的高、中、低档服务器,配备有各种版本的Unix、Linux和Windows等操作系统和相应的Oracle、Sysbase和SQL Servier等数据库管理系统。质检中心拥有配套的专业软件测试工具,包括引进的美国康博软件公司(Compuware Corporation)和IBM Rational公司的专业测试工具。

测试工程师队伍素质决定质检中心的业务水平。质检中心从高起点入手,下力气抓技术队伍建设,一是加快与国际检测水平的接轨,从国外聘回熟悉国外软件测试管理和流程的高级技术人才;二是严格把关新员工的选择聘用;三是选送优秀的员工到国外学习;四是经常性地参加国内外有关软件测试技术、标准方面的会议和培训;五是按照质量体系的要求,开展员工的岗位培训和考核,2006年员工全年人均培训时间达36小时;六是积极参与国家“863”、北京科委的有关研究课题或项目,组织比对测试,锻炼培养技术队伍。四年来,质检中心的技术队伍迅速扩大,工程师队伍已达100余人,其中40%具有博士、硕士学历,92%的人员具有软件开发经验。质检中心已经形成技术骨干群体,具备完成高难度软件检测项目的技术能力。

通过工作流程来落实质量体系要求,是确保检测工作科学准确、规范有序的必要手段。质检中心通过学习、起步、完善和开发四个阶段,逐步形成了自己的检测工作流程,并开发出相应的测试项目管理平台。质检中心成立之初,就组织部分技术骨干,学习研究国外权威检测机构的有关资料,学习研究 ISO/IEC 14598标准,制订了从需求分析开始,一直到形成检测报告的完整的测试工作流程和质量控制流程,并在实际工作中逐步检验和完善,形成全体测试工程师必须遵从的作业程序。

软件质量是软件产业的基础,软件测试是保证软件质量的必不可少的重要手段。质检中心为软件产业的发展发挥公共质量平台的作用,提供公共质量平台,加速软件产业发展。

1.支持国产软件发展

国产软件是中国软件产业发展的根本,支持国产软件产业的发展是第三方软件质量检测机构应尽的责任。质检中心成立后,在基础软件、基于国产软件的行业解决方案和国际开源社区等三个层面开展工作,多方位、深层次地支持国产软件的发展。

首先,为国产基础平台软件提供质量检测服务。反复的质量检测,大量的缺陷被发现和修复,使国产基础软件的质量逐步提高,在经常使用的功能上,国产基础平台软件产品质量已经达到实用的水平,为国产基础平台软件的产品完善和质量提高发挥了重要的作用。

其次,为基于国产软件的信息化解决方案的质量把关。2005年4月,北京市科委为了突破国产基础平台软件从产品化到市场化的瓶颈,将系统集成商和国产基础平台软件生产商联合起来,成立了长风开放标准平台软件联盟(以下简称“长风联盟”)。质检中心是长风联盟的发起单位之一,在其中负责长风联盟解决方案的质量检测和质量认证工作,从功能、性能、标准符合性、兼容性、行业招标比对等多方面进行测试,提供质量数据。对质量合格的解决方案,授予长风联盟产品质量认证证书,帮助解决方案顺利进入市场。至今,质检中心已完成10个基于国产软件的解决方案的质量检测和质量认证。在长风联盟的带动下,仅2005年,联盟成员的销售增长额就达到1.7亿元。质检中心为支持国产软件企业的发展做出了独特的贡献。

第三,参加国际开源软件社区的合作。由于国产软件与国际开源软件有密切的联系,参加国际开源软件社区的协作,有助于在源头上推动基于Linux的国产软件水平的提高。质检中心开展Linux测试工具和测试标准的相关研究,积极参与国际开源社区的软件测试。2004年,质检中心成为国际开源组织OSDL的成员,开展了MRD、BRT、Test Tools等一系列项目合作;2005年初,质检中心建立了中国的桌面操作系统开源社区(省略),并于2005年10月至11月,举办了“Linux社区开源软件测试大赛”,推动国内桌面操作系统技术的发展。2006年,质检中心成为Ubuntu社区的正式成员,为Ubuntu社区的3个版本的桌面操作系统和1个版本的笔记本系统进行质量检测,并将检测结果在国际开源社区网站上公布,在国际上引起很大反响。2006年11月,质检中心组织力量对国际知名开源软件Open for Windows的简体版2.0.4.RC3做了全面的质量检测,有效地进行质量把关。

2.支持软件企业的创新发展

质检中心通过质量检测,帮助软件企业提高产品质量。截至2006年底,质检中心共完成软件测试项目1500余项,为软件企业的创新发展提供了质量保障。

3.建设开放软件测试技术实验室

建设开放的软件测试技术实验室,提供专业软件测试工具的学习和实习环境。国外专业软件测试工具是非常昂贵的,为了广大软件企业能够得到学习和掌握国外专业软件测试工具的机会,质检中心从2002年开始与美国康博软件公司合作,在质检中心内部建设康博应用质量保障实验室。实验室由质检中心提供100平方米的场地和相关硬件,康博公司提供软件,共同建成了包括13类专业软件测试工具的开放实验室,对软件企业免费开放使用。

4.提供大型测试平台,帮助软件企业解决测试环境

中国的软件企业大部分是中小企业,起步比较困难,得到项目后一般在工作组级的服务器上做软件开发,开发完成后,往往缺少一个应用级的模拟环境来检测软件的性能水平。质检中心拥有包括各种高、中、低端服务器的综合实验室,该实验室为北京公共技术支撑体系的会员企业提供一周的免费使用时间,帮助企业克服测试平台方面的困难。

5.开展免费测试技术培训,帮助企业提高质量意识和测试技术

质检中心自成立以来,面向软件企业共举办12场、共计380人次的关于测试理论、测试技术和测试工具方面的培训,对软件企业质量意识和测试水平的提高,发挥了良好的作用。从目前国内情况来看,软件企业内部,无论是软件测试经费的安排、软件测试人员和软件开发人员的比例、测试部门的独立性,还是测试部门负责人在企业中的地位和职业发展渠道等方面都没有得到足够的重视,北京软件产品质量检测检验中心呼吁唤起软件企业对软件测试这个技术分支的重视。

第三方检测是促进软件产业发展的重要技术支撑。质检中心提高市场能力、质量控制能力和技术能力,为北京的信息化建设和软件产品质量提高,发挥其他机构无法替代的作用,真正成为北京软件产业发展的重要技术支撑平台。

存在错误是软件的属性,而且是无法改变的。重要的是如何尽量减少错误和消除已经产生的错误,使软件的错误密度达到尽可能低的程度。软件测试是排除软件中错误的主要手段。谢主任介绍说,第三方检测机构的检测具有无可取代的优势,这是由第三方测试机构的独立性、客观性、专业性和权威性所决定的。

首先是独立性。第三方测试机构独立于开发机构之外,可以克服开发者在处理时间、成本和质量三者关系时容易犯的错误。当三者发生冲突时,由于时间和成本是硬指标,质量却很难度量,因此常常被忽视。第三方测试还可以避免开发者思维定势,难以发现自身缺陷的问题。

其次是客观性。第三方测试机构对测试对象和软件中的错误抱超脱的态度,不会刻意维护开发方利益或迎合需求方的意见。比较客观公正地处理需求方、开发方、测试方三方之间的关系,用客观的检测数据去解释需求方和开发方之间纠缠不清的矛盾。

第三是专业性。软件测试是软件工程中的一个分支,有自身的专业理论、技术和方法。第三方测试机构有专业的测试作业管理和经验,有专业的测试人员队伍,拥有更好的专业测试工具和测试平台,可以构造各种测试环境对各种软件进行测试,这些资源在一个企业内是难以获得的。

第四是权威性。在我国一些重要的计算机软件应用领域,如金融、军事等方面,日益认识到第三方软件检测的重要作用,一些重要软件系统的质量把关,已经通过合同关系委托有资质的独立第三方机构承担,取得了很好的效果。政府部门也开始在软件项目招标时,安排经费加入第三方质量检测的要求。

尽管我国第三方软件检测行业起步较晚,但国家信息化推进的步伐和软件产业发展的步伐推动了第三方检测的发展,第三方测试也将逐步被更多的软件用户和软件企业认识和认可。

软件测试与软件质量息息相关业界人士对第三方软件测试给予相当的肯定,专业的第三方测试机构具备丰富的测试资源,在适用性、兼容性、性能测试等方面具有无可比拟的优势。

同时,国内测试机构与国外有一定差距,有专家认为,由于软件的滚动性、耦合性特征,软件质量问题复杂多样,国内一些第三方评测机构侧重产品成型后的评估和认证,软件产品开发过程中的相伴性测试难度较大,第三方测试介入程度较低。

软件测试心得体会篇2

关键词:软件测试 测试性设计 测试质量

软件产品的质量取决于软件开发过程,软件测试作为软件生存期中的一个重要阶段,受重视程度越来越高。软件测试是保证软件质量和可靠性的关键步骤,也是用来验证软件是否能够完成所期望功能的唯一有效的方法。测试已不仅仅局限于软件开发中的一个阶段,它已开始贯穿整个软件开发过程,进行测试的时间越早,整个软件开发成本下降就越多。大量统计表明,软件测试的工作量往往占到软件开发总量的40%以上,在极端的情况下,甚至可能高达软件工程其它步骤成本总和的三至五倍,其目的是尽可能的提高软件产品的质量和可靠性。

1 软件测试相关概念

(1)软件测试:软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计出一批测试用例,并利用这些测试用例的运行结果来发现程序错误的过程。

(2)软件测试用例:测试用例实际上是对软件运行过程中所有可能存在的目标、运动、行动、环境和结果的描述。测试用例是测试组织的最小单位,指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,并最终形成文档。

软件测试的核心是设计和执行测试用例。而测试用例的选择问题可以看作是从庞大的输入状态组合中,搜寻哪些可以发现错误的状态组合。因此需要用抽象的手段来尽量使测试更加有效。

(3)测试用例库:完整的单元测试很少只执行一个测试用例,开发人员通常都需要编写多个测试用例才能对某一软件功能进行比较完整的测试,这些相关的测试用例称为一个测试用例集。将大量的测试用例收集到测试用例库中,合理的分类后供测试人员选择使用,能够极大地提高软件问题的发现率。

2 提高测试质量的方法

2.1采用测试性设计技术

软件测试是目前用来验证软件是否能够完成所期望的功能的唯一有效的方法。但是在测试的实施过程中,由于种种原因导致测试的难度相当大,甚至出现了无法测试的情形。为了提高软件的可测试性,我们在软件设计时应当遵循测试性设计原则,通过改变设计或代码、为软件增加专门测试结构等方法来提高软件的可测试性。

⑴测试驱动设计。这种设计就是直接把软件需求变成测试代码。在确定软件测试性能要求的基础上优先编写测试代码。先写验收测试,再写单元测试,并在开发过程中不断修正。⑵每个操作对应一个方法,使方法小型化。使用小型化方法说明和重载带缺省方法参数的方法,使得测试中调用这些方法变的很容易。⑶显示与控制分离。把代码移到GUI视图的外面,各种GUI动作就能成了模型上的简单方法调用。这样,在修改程序功能不会影响视图,同时通过方法调用测试功能也比间接地测试功能更容易。⑷对于可能要作为参数的类,做一个接口。用接口说明外部程序组件或在需要时改变接口形成一个空类作为参数传入。

2.2选择合适的测试管理模型

模型是系统功能的形式化或半形式化的表示,支持输入状态组合的系统枚举。基于模型的测试主要考虑系统的功能,可以认为是功能测试的一种。测试模型体现了被测试系统的最本质的功能关系。而且要比系统本身更易于开发和分析。一个可测试的模型要能提供足够的信息用来产生测试用例。所以可测试的模型必须满足以下要求:

⑴必须是某种测试实现的完全准确的反映,模型必须表示要检查的所有特征;⑵是对细节的抽象;⑶可以表示所有事件和所有的动作;⑷可以表示系统的各种状态,以便由可知的方法来确定已达到或没有达到什么状态。

2.3采用合理的测试技术

软件测试方法众多,各有优点,但任何一种测试方法都无法覆盖所有测试的需求。这就需要充分掌握软件测试的各种方法,熟悉其优缺点,根据系统需求精心设计组合。我们可以从以下两个方面展开:

2.3.1从代码的特性角度出发展开测试:

(1)单元测试: 按照代码的单元组成逐个进行测试。(2)功能测试: 按照软件的功能或特性逐个进行测试。(3)系统测试:对完整的代码进行编译和连接,以检查程序的主要功能能否达到预期目标。(4)回归测试:对以前修复过的Bug 重新进行测试, 看该Bug是否会重新出现。值得注意的是,回归测试并不是软件测试的一个独立阶段。

2.3.2从用户的角度出发展开测试:

(1)配置测试: 从用户的使用出发进行多方面的测试。(2)兼容性侧试: 主要考虑软件和操作系统的兼容性问题。(3)压力测试: 在各种极限情况下对产品进行测试, 以检查产品的长期稳定性。(4)性能测试: 测试是保证程序具有良好的性能,能否达到预期的性能指标。(5)文档和帮助文件测试: 对文档和帮助文件进行检测, 保证用户可以通过学习文档和帮助文件正常使用产品。(6)Alpha 和Beta 测试: 在正式产品之前将软件测试版发送给用户, 让用户在使用中找到能够存在的Bug或者反馈相关信息, 以便在正式版中得到解决。

2.4建立可复用的测试用例库

软件测试过程中产生的大量测试用例对保证软件的质量起到关键作用,测试用例的复用就显得尤其重要。在测试中应当构造出基于复用的测试用例,并采用测试用例库管理的方法来实现,这样可以大大提高软件测试的工作效率。

⑴基于复用的目的,对所使用的测试用例进行统一的建模组织,有效地将测试用例收集到测试用例库中,并按照行业项目等进行多级合理的分类、组织、存储。对采用不同方式描述的测试用例,将分别实现不同程度的复用。⑵对数据库中存有的测试用例实行有效管理,通过提供有助于复用的多种查询方式,确保测试用例的复用程度,对不同类别的测试用例进行复用频率的统计,为测试人员提供有效的复用信息,在保证软件测试质量的前提下,提高了测试的效率。

⑶对数据库中的测试用例具体实现复用,通过查询出所需的测试用例,得到测试用例信息,针对不同描述方式的测试用例采用不同的复用方式进行复用。

3 结语

本文从技术的角度提出了一种以软件测试性设计为中心,配合合理的软件测试方法来实现提高软件测试质量的方法。但是值得说明的是:软件测试人员的水平高低会严重的影响测试质量,这需要我们在实际工作别加以注意。

参考文献

[1] 宋骏礼.基于行为的软件测试过程模型及其应用研究.华中科技大学论文集.2007.

[2] 朱鸿,金凌紫.软件质量保障与测试.北京科学出版社.2004.

[3] 兰雨晴,高静译.William E.Perry.软件测试的有效方法(原书第二版).北京机械工业出版社.2004.

软件测试心得体会篇3

关键词:软件故障;故障检测;故障定位;检测技术

中图分类号:TP311文献标识码:A文章编号:1009-3044(2011)15-3558-03

The Discuss about Software Fault Detection Technology and its Development

LIU Hui1,2, LI Rui2, JIAO Ge1

(1.Department of Computer Science, Hengyang Normal University, Hengyang 421002, China; 2.School of Computers and Communications, Hunan University, Changsha 410082, China)

Abstract: Software plays an important role in our society. The occurrence of software fault will bring inconvenience to our work and life, even lead to severe disaster. In this paper, the basic testing theory and principles of software are described briefly, and the software fault detection and location of the methods are introduced. At last, the corresponding process of software fault detection technology and its development trend are discussed.

Key words: software fault; fault detection; fault localization; detection technology

随着计算机、网络技术的高速发展和广泛应用,软件行为直接影响到网络和系统安全。提高软件质量、加速软件开发进度、降低软件开发费用是软件工程的三大目标。作为计算机的灵魂,软件在其中起着举足轻重的作用。高可靠和复杂的系统非常依赖于其采用的软件的可靠性,一个未能及时而正确检测到的软件故障可能造成整个系统的失效、瘫痪,甚至导致巨大的灾难性后果。例如,1996年6月,欧洲“阿丽亚娜”号航天飞机因导航系统的计算机软件出现故障致使航天飞机坠毁,造成了数亿美元的巨大损失;2005年4月软件失灵、继而导航失误,导致耗资1.1亿美元的NASA自主交会任务DART实验失败。一方面,软件系统的日益复杂及故障诊断在诸如飞行控制、化工、发电厂等重要领域的应用需求使得软件故障诊断技术激发了国外内研究者的兴趣;另一方面,随着现代科学技术水平的日益提高,软件系统的规模越来越大、功能越来越复杂,人们对其的可用性、可靠性和安全性等可信性质给予了更高的期望和要求。

软件故障是指软件运行过程中出现的一种不希望或不可接受的内部状态。出现软件故障时若无适当措施加以及时处理,便产生软件失效。显然,软件故障是一种动态行为。软件开发的各个阶段都需要人的参与。因为人的工作和通信都不可能完美无缺,出现错误是难免的。与此同时,随着计算机所控制的对象的复杂程度不断提高和软件功能的不断增强,软件的规模也在不断增大。例如,Windows NT 操作系统的代码大约有3200万行。这使得错误更可能发生。人们在软件的设计阶段所犯的错误是导致软件失效的主要原因。软件复杂性是产生软件缺陷的极其重要的根源。

1 软件基本测试理论与原则

软件测试是保障软件可靠性的重要手段,它贯穿于软件开发的整个过程中。与其说软件测试理论是研究性结果,还不如说软件测试理论是一些实践中总结的工程性原则。

1.1 软件测试的基本理论

1)软件缺陷是不可避免的。

2)软件测试是不完全的,即通过软件测试不可能发现所有的软件缺陷。

3)软件测试具有免疫性,即伴随着软件测试的进行,发现软件缺陷会越来越困难,这内在的要求了测试方法的多样性。

4)软件测试是全程的,即软件测试贯穿于整个软件开发过程。

5)软件测试中的社会学理论:80-20原则。如:“80%的软件缺陷常常生存在软件20%的空间里。”,这样的数值规律广泛的存在于软件测试中。

1.2 软件测试的一些工程性原则

最有代表性的就是Myers软件测试十大原则:

1)程序员应避免测试自己编制的程序。

2)测试用例的设计必须包括预期的输出结果。

3)测试用例应包括有效的和期望的输入情况,也要包括无效的和不期望的输入情况。

4)彻底检查每个测试结果。

5)只检查程序是否做了它应该做的事仅仅完成了测试工作的一半,另一半则是要检查程序是否做了它不该做的事。

6)避免不可重复的即兴测试,保留全部测试用例。

7)一段程序中存在错误的概率与在这段程序中已发现的错误数成正比。

8)测试是一项非常复杂、创造性的和需要高度智慧的挑战性任务。

9)不要为了便于测试擅自修改程序。

10)测试工作必须有明确的目标。

2 软件故障检测

软件故障检测是软件故障诊断的前提,只有当检测出软件出现故障后才能进行故障定位工作。软件故障检测是指采集软件系统运行参数,获取系统状态信息,从系统可测量或不可测量变量的估计中,判断被诊断系统是否发生了故障。软件故障检测是通过研究故障与其症状之间的关系来判断被检测软件的状态。由于软件的复杂性以及故障证据可能是模棱两可的、不一致的和不完全的,故障与征兆之间的关系很难用精确的数学模型来表示。现有的软件故障检测主要采用测试、形式化验证及运行时验证等技术手段。

2.1 测试

软件测试是为了发现程序中的错误而执行程序的过程,通过定义各种测试充分性,可以提高我们对被测软件质量的信心,但无法回答系统一定没有错误这样一类问题,因而无法从根本上确保系统的可靠性。传统的测试作为软件开发的一个必要组成部分,一般包括单元测试与集成测试,主要用于软件开发阶段的错误发现,属于一种静态的检测方式。与程序切片形式化验证等技术相结合的测试手段现在得到了较好的应用。

2.2 形式化验证

形式化验证则通过基于数学的形式化方法,揭示系统的不一致性、歧义性和不完备性,可以从某一个角度回答系统一定没有错误这样一类问题,提高我们对系统可靠性的信心,往往被应用于一些关键领域的软件系统。由于其验证对象一般为系统的模型,所以形式化验证一般也属于一种静态检测技术。文献提出利用定理证明的手段来保证软件产品可靠性和正确性。定理证明以逻辑推理为基础,根据公理和形式推演规则来验证设计实现是否满足要求,由于需要人工干预,能处理的软件规模较小。Clarke EM等率先将模型验证技术引入软件故障诊断领域,用某种形式化方法说明系统应拥有的性质和应满足的属性,通过对模型进行检测,判断软件系统是否拥有这些期望的属性。软件模型验证技术可以分为对系统说明(需求分析)的模型检测和针对源代码的模型检测。针对于不同的应用己经开发出来了一些较为成熟的软件模型检测工具,其中比较典型的有加州大学伯克利分校的BLAST系统和MOPS原型系统、卡内基梅隆大学开发的MAGIC系统、美国国家航空航天局开发的JPF、微软的SLAM和Zing项目。

2.3 运行时验证

鉴于现代分布式软件系统具有松散聚合及开放动态等特性,以及软件故障除了由软件本身的错误和缺陷造成外,也可能由运行环境所导致,因此不仅需关注开发期的静态检测,还需注重运行期的在线检测。运行时验证简单地说可以看作软件测试和形式化方法的结合,它是一种保证程序可靠性的轻量化方法,其基本思想是收集软件运行中的相关信息并与软件需求规约进行比照,如不满足预定义的相关需求,则提示检测到故障;或者在软件中设定一些阀值,当软件运行过程中超过阀值设定的范围时,则提示检测到故障。目前的运行时验证技术主要有基于AOP的技术、基于截获器的技术、基于构件包装器的技术及基于框架的技术四种。其中基于框架的技术是目前的热点研究领域,如Monitoring-oriented programming(MoP)、Javwith Assertions(Jass)、Java PathExplorer(JPaX)、Java Run-timTiming-constraint Monitor(JRTM)、基于程序运行形式化分析的软件故障监控模型等框架。

3 软件故障定位

故障定位是软件故障诊断中的关键问题,它的难点是如何在大量的相关故障事件中找到故障源。国内外学者针对故障定位问题,进行了深入的研究,提出了很多行之有效的理论和方法,它们都来源于计算机科学的不同领域,包括人工智能、图形理论等。故障定位技术一般归为三类。第一类是基于人工智能的技术,包括专家系统、神经网络、决策树。专家系统又可以细分为基于规则的系统、基于模型的系统和基于范例的系统。第二类是模式穿越技术。这种技术使用形式化的方法描述分布系统实体之间的关系。故障会依照这种关系在实体间传播,通过探测这些关系,从发生故障的实体开始回溯,即可找到其它相关故障的实体和原因实体。第三类是故障传播模型。这种模型企图在故障之间建立一种因果关系,通过这种因果关系,根据现象和传播模型推测故障原因,也可以用这种模型来预测故障的发生,故障传播模型包括贝叶斯网络、因果关系图和依赖关系图等。在软件故障定位领域目前得到应用的的主要技术是基于模型的定位技术、模式穿越技术等。

当软件发生故障时,需要进行故障定位,深入代码的内部找出故障模块和故障代码。在软件故障定位中一般根据是否需要系统内部结构及行为知识分为白盒技术和黑盒技术[2]。白盒技术需要系统内部构件结构及行为知识,基于模型的故障定位技术是一种典型的白盒技术。在基于模型的定位推理中,它建立系统的形式化模型,从运行时监测器获得运行信息,通过逻辑推理定位故障源。模型反映了实际系统的结构和行为,由于基于模型的方法能够反映系统底层的详细细节,因此这种方法可以用来解决一些新出现的故障;它的诊断知识可以被组织成可扩展的形式,而且容易升级和模块化。不过,由于模型的知识难以获得,这种诊断需要详细的系统底层知识,对于不同的目标系统,它们的模型基本都不相同;同时由于软件系统规模越来越庞大、复杂,系统模型也变得十分复杂,模型的维护将更加困难。易昭湘等提出的基于代码检测的软件故障定位方法也属于白盒定位技术,获取软件发生故障时的模块运行序列,分析出软件故障可疑模块集,在此基础上对故障模块进行代码的分类检测[3]。

黑盒定位技术由于不需要系统内部构件结构及行为知识,得到了更加广泛的应用。基于程序谱的定位技术是一种重要的黑盒技术。基于程序谱的故障定位一般不依赖于输入结构知识,而依赖于程序中能够和源码某个位置关联的程序执行特征,这些特征的整体可被称为程序谱。程序谱特征化程序行为、或者提供了程序行为的信号,如路径谱、分枝谱等,它可为故障定位提供重要知识。Tarantual和AMPLE都是利用程序谱来进行故障定位。黑盒定位中用到的技术还包括动态程序切片技术及近邻模型技术等。

4 软件故障检测技术的发展趋势

4.1 软件的易测试性设计

Voas 将软件的易测试性定义为一定测试策略迫使软件中存在的故障被暴露的概率[4]。软件的易测试性包括可观察、可控制、可理解等几个方面[5]。软件易测试性设计即是在软件的设计和编码中考虑测试问题,它借鉴了硬件易测试性设计的思想。软件易测试性设计的目的是在不增加或者少增加软件复杂性的基础上,将易于测试的原则融合到设计和编码之中[6]。软件易测试性设计符合软件测试的一个原则:尽早开始软件测试工作,不断进行软件测试工作。软件易测试性设计体现软件测试的如下观点:软件产品的质量是生产(包括分析、设计、编码、测试) 出来的,而不是仅仅依靠软件测试来保障。软件易测试性设计也体现了软件测试的一个发展趋势:向软件开发的前期发展,与软件开发的设计和编码阶段相融合。

4.2 构件测试

当前社会的信息化过程对软件的开发方法与生产能力提出了新的要求,软件复用是提高软件产品质量与生产效率的关键技术。软件构件概念的提出为软件复用提供了技术基础[7]。构件的高可靠性是构件能被成功复用的前提。构件测试是保障和提高构件的可靠性的重要手段。构件的开发者和复用者必须对构件进行充分的测试,以确保它在新的环境中工作正常。国际上于20世纪90年代后期对构件测试开展了研究[8]。构件测试成为当前软件工程学术界和工业界的热点问题之一。

构件测试一个重要的发展方向是基于合约的构件易测试性设计。合约可以在运行时被检查,便于捕获构件执行过程中的一些故障,提高构件的易测试性。因此,基于合约的构件易测试性设计不仅为构件开发者开发高质量的构件提供帮助,而且在构件开发者与复用者之间架起一座桥梁,为构件复用者的测试提供支持,也为构件开发者捕获错误提供便利,便于区分构件开发者与复用者的责任。如果众多的构件开发者都采用合约式设计方法生产构件,那么失效时很容易定位到构件和其中的方法。为使基于合约的构件易测试性设计方法能够实用,需要研究解决以下问题:构件合约的描述、表达,构件中合约的获取,对构件合约的自动检查,以及针对构件合约的软件测试。

4.3 Web Services 测试

随着软件产业模式从以产品为中心的制造业转变为以客户为中心的服务业,WWW 从2层体系转变为3层体系,B2B从复杂专用的连接转变为简单通用的连接,分布计算中间件从Intranet 扩展到Internet ,CORBA、COM及EJB等中间件技术已不能适应这些发展需求,因而导致了新型中间件技术Web Services 的产生[9]。

当前,Web Services 越来越受到人们的关注,它使用了包括SOAP、WSDL 和UDDI在内的标准协议。这些标准协议体现了互操作性,并用于应用的开发及运行时Web Services 的选择和调用。Web Services 的测试和评估对服务提供者和服务使用者来说都是相当重要的。Web Services 的测试相当于黑盒测试,可以获得规约,却不能得到设计或源代码。文献[10]从输入和输出的依赖关系、调用顺序、层次功能描述和并发顺序规范四个方面对WSDL进行了扩展,提高了Web Services 的易测试性,并提出了一个支持测试执行和测试脚本管理的测试框架。

5 结束语

软件测试是一项费时、费力并且单调乏味的活动,测试人员需要设计、执行、分析大量的测试用例。软件测试的自动化将有效地减轻测试人员的劳动强度,提高测试的效率和质量,从而节省软件开发的成本,提高软件的质量。随着软件技术的不断向前发展,构件、Web Services 等新技术的应用为软件测试带来新的问题和挑战,也为软件测试的发展带来新的机遇。软件测试技术自身的不断发展对软件开发方法学将产生重要影响。

在今后的工作中,我们将进一步深入研究软件故障的特点和软件故障诊断技术,并且应用于软件故障诊断实践。

参考文献:

[1] 单锦辉,徐克俊.软件故障诊断探讨[J].北京化工大学学报,2007,34(SI):5-8.

[2] Zoeteweij P,Abreu R,Van Gemund A J C.Software Fault Diagnosis[C].Tallinn,Estonia:19th IFIP International Conference on Testing of Communicating Systems,2007.

[3] 易昭湘,慕晓冬,赵鹏,等.基于代码检测的软件故障定位方法[J].计算机工程,2007,33(12),82-83.

[4] Voas J M.Software Testability Measurement for Assertion Placement and Fault Localization[C]//Saint-Malo:Proceedings of the Automated and Algorithmic Debugging1995:133-144.

[5] Martins E,Toyota C M,Yanagawa R L.Constructing Self-Testable Software Components[C]//Goteborg:Proceedings of the International Conference on Dependable Systems and Networks,2001:151-160.

[6] 宫云战,刘海燕,万琳,等.软件测试性的分析与设计技术研究[C].北京:2000年全国测试学术会议(CTC' 2000) ,2000:271-274.

[7] 杨芙清,王千祥,梅宏,等.基于复用的软件生产技术[J].中国科学(E辑),2001,31(4): 363-371.

[8] Voas J M.Certifying Off-the-shelf Software Components[J].IEEE Computer,1998,31(6):53-59.

软件测试心得体会篇4

中图分类号:G642

0 引 言

随着计算机软件在各行各业应用的不断普及与深入,软件开发行业已成为推动社会信息化转型的支柱产业。软件质量逐渐成为行业竞争的核心力量之一,保障软件质量的重要手段是软件测试,因此我国急需大量高素质的从事软件测试的专业人才。

目前,国内高校已将软件测试作为计算机专业的一门重要专业基础课程,面向广大研究生、本科生及专科生等不同层次的学生开设与软件测试相关的课程(如软件测试基础、软件测试方法与实践、实用软件测试技术等)。区别于软件工程课程,软件测试课程在高校的开设大多起步较晚,早期一般是作为软件工程课程的一部分内容合并讲解[1]。无论在课程理论教学内容安排还是学生实训环节组织上均存在着系统性、针对性、实用性方面的不足,课程讲授的知识点来自对原有软件工程知识体系的延伸,常常与软件企业的实际测试需求脱节。

教育的本质是传授知识、培养能力的过程。互联网技术的快速发展给传统的教育带来了变革的新机遇。2014年11月,李克强总理在出席首届世界互联网大会时指出,互联网是大众创业、万众创新的新工具[2]。在“互联网+”背景下,高校是发挥其创新优势的绝佳场所,利用信息通信技术及互联网平台,使互联网与传统教育深度融合,创造新的教育形态。

1 教学过程中存在的问题及改革思路

1.1 对存在问题的分析

通过调研国内多所高校软件测试课程的教学情况,结合南通大学近3年来的教学改革经历,我们发现国内的软件测试课程教学普遍存在以下3点问题。

(1)讲授的知识点分散、繁杂,缺乏系统性。在课程讲授过程中,有必要构建统一的知识框架。国内高校开设软件测试课程起步较晚,所讲授内容一般源于对软件工程课程中软件验证环节知识点的细化和扩充。这种方法尽管介绍了很多知识点,但由于这些知识点之间的联系普遍较松散,学生对这些知识的认识只是停留在“是什么”的层面。在软件测试课程的教学过程中,教师和学生缺乏一个简单明了的指导框架,只能分散地讲解各部分知识点。这种教学方式不利于学生系统地掌握软件测试的核心要点,也不利于学生将所学的软件测试知识建构为一个有机体系。

(2)教学内容与企业实际需求脱节。多数高校的教师经过本科、研究生、博士阶段的学习,毕业后直接到高校工作。这一现实的直接反映是,教师普遍缺乏在企业工作的背景,他们在授课时经常有意无意地侧重于理论讲授而弱化学生的实践训练[3]。在软件测试课程的教学上集中表现为两点:一是侧重讲授软件测试的基础理论、经典的软件测试技术及工具;二是在学生实训环节,侧重安排学生基于已有的代码案例开展测试训练,但这些案例被年复一年地使用,多数案例已与现阶段的企业实际软件项目大不相同,而且教学用的测试工具与企业正在使用的工具也存在很大的差别。

(3)课程教学组织模式需要改革。课程教学组织通常采用“课堂教学+机房实验+课后作业”线性模式。这种模式下的教学互动表现为课堂教学互动、实验教学互动、点评学生作业互动3个环节,但3个环节之间没有或很少有互动。众所周知,理工科课程的学习过程是一个持续、迭代训练的过程,需要师生全方位地开展教学互动、深入交流,以达到持续学习、螺旋式提升知识和能力的目标。现有的互联网技术为实现上述目标提供了便利,有必要将这些技术广泛应用于教学组织过程。

1.2 教学改革思路

在教学过程中强调学生“做中学”的基本原则,融合“互联网+”技术背景,组合运用课堂教学、专题讨论、上机实验、老师点评、助教推进、课后持续改进、项目小组竞赛以及个人和团队得分排位赛等多种教学方法。学生通过教师、助教、团队成员持续推动,迭代改进这种团队和个人的项目实践,能够深刻领会软件测试的方法、技术,同时提升个人技能和团队协作能力。

首先,筛选众多软件测试的相关知识,提炼软件测试课程的核心知识域,构建测试技术教学知识体系;其次,针对知识体系中对应的知识点,选择在企业中广泛使用的测试工具,并尽可能地从企业获取实际项目来构建测试教学的案例库;再次,构建课程综合实训平台,供学生巩固所学的测试方法和技术,并通过系统性训练掌握软件测试基本原理;最后,在促进教学效果方面,不断优化教学评价体系,探索教与学的持续改进方法。

此外,鼓励学生参与与软件开发测试相关的各种竞赛活动,搭建创新型大学计算机教学实践平台[4]。如参加全国大学生软件测试大赛,比赛内容有开发者测试大赛、移动应用测试大赛和嵌入式测试大赛。借助比赛建立软件产业和高等教育的资源对接,探索产教研融合的软件测试专业培养体系,进一步推进高校软件测试课程的专业建设。

2 课程教学知识域构建

2014年的《软件工程知识体系指南(SWEBOK V3.0)》搜集了33个国家近150位软件工程领域专家的意见,将软件工程研究内容划分为15个知识域[5],其中与软件测试紧密相关的知识域是软件测试和软件质量保证。它们从不同角度涵盖了与软件测试研究相关的海量知识,由于时间有限不可能完全纳入软件测试课程的教学。我们的教学改革以这两个知识域的内容为基础,考虑面向本科生的卓越工程师培养要求,筛选其中一部分内容构建教学知识域。

目前可以分为两步:第一步是建构软件测试的理论知识体系,目的是提炼软件测试理论教学知识域,注重各知识域之间的关联,力求知识域的系统性;第二步是测试工具习得案例库的构建,目的是基于已有的软件工具,开展一系列简单的项目实践,让学生掌握课堂讲授的理论知识点。

2.1 软件?y试教学知识体系

同济大学朱少民教授的“软件测试”思维导图,意图描绘软件测试技术的全景图,在学术界和工业界引起了广泛的讨论[6]。 这张“软件测试”思维导图包含9个模块,分别是测试定义、测试层次和类型、测试的流派、测试方法、测试方式、自动化测试、测试技术、测试过程、测试管理。虽然对模块内容的划分依据还存在一些争议,但是该思维导图覆盖了软件测试的理论、方法、技术和实践等诸多方面,9大模块之间也用连线表达模块间千丝万缕的联系。我们借鉴该思维导图覆盖的知识要点,结合卓越工程师培养的教学需要,融合理论、方法、实践3个维度,构建软件测试课程教学的知识体系,如图1所示。

图1展示了软件测试课程教学涉及的知识模块以及各模块之间的关联。如前所述,我们筛选了SWEBOK V3.0中对应的知识点作为各模块的教学内容。此外,结合普通本科院校(如南通大学)学生的实际情况,对各知识模块的学习要求适当调整,各模块对应的知识域见表1。

在课堂理论教学中讲述上述内容时,侧重阐述这些知识点的产生背景、基本原理、目标及相互联系等,在教学实践环节精心组织实践项目,强化所学知识要点。

2.2 测试工具习得案例设计

软件测试的目的是发现缺陷,人工测试与利用工具自动测试有各自的适用场景。一般而言,自动测试可以大幅度降低软件测试代价。目前有大量的测试工具可供教学使用。我们对照图1中的知识体系及表1中的知识点,选择一些有代表性的测试工具构造相应的案例组织学生实训学习,通过工具的学习掌握相应的知识点。现有的软件测试工具使用情况如下。

(1)在学习组合测试时,我们设计了软件安装过程的兼容性测试,设计了一组需要检测兼容性的环境要素(如网络、操作系统、CPU等),用微软的开源软件PICT求解不同组合。

(2)单元测试环节分两组开展教学。一组是从开源网站(Github、SIR等)下载一组Java源程序及与程序对应的Bug版本,练习使用Junit工具或利用集成在Eclipse上的开源插件EclEmma开展单元测试;第二组是从开源网站下载一组C++源程序及与程序对应的Bug版本,利用微软Visual Studio单元测试框架开展单元测试。在测试用例方面,可以直接使用SIR提供的测试用例,也可以应用所学的用例设计方法来构造测试用例。

(3)在性能测试教学环节,选择两组工具(JMeter工具、Visual Studio的性能分析工具),案例选择的是南通大学Email服务性能测试。

(4)代码覆盖测试利用的是集成在Eclipse上的开源插件EclEmma。实训案例与单元测试相同。

(5)移动应用测试应用慕测(mooctest.net)提供的移动应用测试工具(Kikbug),案例采用了来自工业企业的真实案例。

上述案例库构建策略的一个显著好处是:可以从开源网站下载或与企业合作的方式获得工业企业最新的软件开发项目,这使得学生不仅能掌握软件测试基础知识,而且能接触到工业企业最新的软件开发实践,增加学生身临其境的感觉,从而更直观地认识到在现阶段软件测试中需要解决的问题。

3 课程教学实训平台构建

尽管有丰富的测试工具可用于软件测试课程教学,但配置这些工具通常比较复杂,需要耗费师生及员工大量时间和精力。其表现在:①运行环境差异。不同测试工具对运行操作系统、网络配置、运行库等要求往往不同。②支持的编程语言差异。不同的测试工具可能支持不同的编程语言,有的支持Java语言,有的支持C++语言。③支持项目差异。不同的测试工具往往支持不同特征的项目测试,有些仅支持对传统软件项目的测试,有的支持对C/S 或B/S 架构的项目测试,还有的工具用于测试移动应用。

因此,很有必要构建一个用于软件测试课程教学的综合实训平台,将软件工具配置的工作对 师生透明化。如此,教师的工作重心可以集中于构建学生实训的题库,学生则集中精力考虑测试策略、测试用例设计,通过系统内嵌的测试工具验证测试策略和测试用例,进而掌握相应的理论知识点和提升实际动手能力。我们基于慕测科技提供的系统架构,构建软件测试课程教学实训平台[7],其结构如图2所示。

图2这种架构的好处是显而易见的。从开源网站、学术界及软件企业获取项目实践素材,经过筛选转换之后构建测试题库,这种方式保证了教学内容紧贴实际需求,并且在测试项目的构建上有很强的扩展性。学生通过网站提供的统一用户访问接口实现测试环境的构建,测试环境可以跟踪学生的软件使用、开发行为。系统实现了自动化评分、自动化提示、编程行为跟踪等网络服务。此外,系统还提供了微信和博客接口,可以实现基于互联网的课堂测试、课堂调研及课后作业,该功能已被广泛用于教学互动环节。

4 “互联网+”背景下的教学反馈与持续改进

4.1 教学评价体系构建

传统的教学反馈形式有课堂教学互动(提问及点评)、课后答疑、期中调研、期末测验等。其中,课堂教学互动效果好但特别耗时,使得课堂教学内容不够浓缩,并且这种收益是一次性的(下一轮教学仍需重复同样的动作)。教学中及时反馈十分重要,但课后答疑、期中调研、期末测验等形式很难保证实时性,从而降低了这类反馈的效果。

我们基于互联网技术优化教学评价体系,具体做法如下:①在课堂上以讲授理论知识为主,穿插讨论、翻转课堂等形式。此外,可以基于综合实训平台开展微信小测、微信投票等形式的教学活动。②基于教学实训平台组织实验教学。学生在提交实验结果后可以从自动评分模块得到本次实验得分。这在一定程度上降低了教师的工作量,学生还可以根据结果迭代改进。此外,在平台FAQ模块列出学生学习过程中可能会遇到的常见问题,教师和助教负责更新自己课程的FAQ。③实验报告、课后作业以博客的形式提交,教师和助教直接在博客中进行点评。采用内容订阅和推送服务(RSS、Email),方便教师在学生完成博客后收到RSS和Email通知。学生的博客被点评后也会收到RSS和Email通知,这在一定程度上提高了师生交互的效率。

4.2 持续改进

虽然我们基于互联网信息技术初步构建了较为高效的教学评价机制,但是整个系统的整合度还不是很高,教学反馈过程目前依赖于利用一些已有的工具,这些工具需要进一步与教学实训系统整合。目前,我们已完成微信与教学实训系统的整合,下一步需要整合QQ这种在学生中广泛使用的即时通信工具。我们的目标是实现微信、QQ、Email、RSS等互联网工具或服务与整个教学实训系统的融合,不断优化它们之间的接口,以提高师生交流的效率,从而方便学生和教师的使用。

软件测试心得体会篇5

1制约数据库测试技术的因素

1.1从主观方面来说,数据库测试技术的发展很大程度上受到测试工作人员的影响,一些工作人员把重心都放在了对软件测试的功能和编码上,但是却忽略了对软件性能的测试,其中对数据库访问并发的测试尤为简易。究其原因还是在于在他们的思维中固执的认为这些问题对系统性能的影响不足为惧,或者是他们本来就觉得数据库测试技术在软件开发中没有多少分量。可是事实证明,一系列问题证明,数据库测试技术举足轻重。所以作为从事数据库测试技术的工作人员需要有这种紧迫的意识,才能将这项技术运用纯熟,才能给人们带来更多的便利。

1.2客观因素,数据库是软件开发应用的基础,它性能的好坏与软件的性能密切相关,而制约数据库测试的一个重要因素就是其中的规范化设计,范式可分为第一范式、第二范式、第三范式、BC-NF范式、第四范式和第五范式。在众多范式当中第三范式是最符合日常运用的,但是这种规范化仍然存在着缺点,那就是在我们查询资料过程中,表过多,需要长时间的进行链接而导致查询的速度缓慢。

2数据库测试技术的内容和方法

2.1对数据库容量的测试在这个飞速发展的高科技社会,对数据库系统的应用越来越频繁,伴随的是数据量的跨越式增长。而在其中我们需要考虑的是怎样在使用系统前对数据容量的增长进行一个评估,给用户一个放心的参考数据,这个步骤在数据库测试技术的使用当中体现的尤为重要。具体的方法就是通过对数据库设计中基本表的数据大小加上每天数据表的数据产生的量来进行估算。

2.2对数据库性能的测试对于整个数据库系统来说,数据库性能的好还直接影响着整个应用软件的性能,所以对于数据库性能的测试也显得尤为的重要和谨慎。而且在性能的测试上手工测试就不那么重要了,需要的是自动化的软件测试。依靠着强大的数据产生器能够准确的进行测试数据库。不得不提到的是在这个环节的测试当中一定要考虑到测试环境的一致性,包括操作系统、应用软件的版本以及硬件的配置等等。并且在进行数据库测试的过程当中一定要将其中的记录数、配置保持一致。只有在同等的条件之下进行测试,才能得出比较满意的结果。

2.3对数据库压力的测试。在软件开发中,对于数据库测试的影响有很多的因素,软件的功能能够影响测试,同时系统的相应速度也能够影响数据库的测试。由于系统的自身特点不能够满足系统的变化,难以适应快速的响应,在用户使用过程中无法响应的现象。在软件开发中的压力测试,主要是针对系统的响应进行测试的,经过测试,能够有效的反映软件的运行情况与响应速度,使软件的开发更加形象化。

2.4数据库系统一致性和完整性测试通常我们所进行的测试只能对数据库的静态结构给出结论,但对于系统的动态却做不到准确,在我们进行测试的过程中经常会受到以下几个问题的困扰,如:1)在事务处理过程中发生的崩溃。2)对于数据库的并发访问所导致的异常等等。针对这些问题为了保证系统的完整性我们可以采取模拟多用户同事访问数据系统,查看系统是否完整,或者是认为终止程序,查看完整性。

3数据库测试技术在软件开发中的发展趋势

3.1相较于传统的数据库测试技术,新型的数据库测试技术与当下迅猛发展的计算机技术互相结合、互相渗透,不仅丰富了计算机技术的内容,也在一定程度上促使着新的数据库技术的诞生,数据库测试技术与新型的软件相结合,使得原有的许多概念领域都发生了巨大的变化,也逐步透彻的影响着人们的生活。

软件测试心得体会篇6

关键词:金融行业软件测试;测试方法;测试技术;测试模式

中图分类号:F831文献标识码:A文章编号:1009-3044(2012) 02-0309-05

Software Testing Analysis Based on Financial Industry

CAO Yong-chun1, LIU Xiao-jun2

(1.Shenzhen YLINK Computing System Co., LTD, Shenzhen 518040, China; 2.College of Information and Communication Engineering, Guangzhou Maritime College, Guangzhou 510725, China)

Abstract: The article analyze on financial industry software test method and technology. and put forward specific solutions and practical technology in financial industry software testing.

Key words: financial industry software testing; test method; test technology; test pattern

随着金融行业的业务不断增加,金融交易模式的不断变化,金融机构对信息化的要求也越来越高,高质量的金融软件对于金融机构来说显得尤为重要。如何保证金融行业软件的质量,对金融行业软件的测试人员来说,也提出了更高的要求[1][2]。以下针对金融行业软件的测试做出了具体的分析:

1金融行业软件特征分析

金融行业软件系统具有集中度高、规模庞大、数量多、系统之间关联性强、业务复杂、需求变化快等特点,如何有效可行的实现软件测试和软件质量控制,是对金融行业软件测试人员提出的基本要求。

1.1金融行业软件的业务特点

以金融行业软件的典型代表银行系统软件为例:一般的银行系统软件都有一个核心系统,核心系统主要涉及账务的处理、清算、计息等。银行的其它业务系统都会直接或间接的与核心系统进行交互,主要处理一些涉及业务的流程以及系统管理、用户管理等辅助功能。

此外,银行的业务系统也种类繁多。比如:ACE/柜面、网上银行、电话银行、呼叫中心、信贷、资产托管、资金风险分析及风险控制系统、外汇买卖、基金、期货、黄金、汇票、信用卡业务以及其它衍生业务等等。各个系统之间都可能有着密切的联系,之间也会涉及到不同系统之间的接口。

因此,在测试过程中,除了对银行的核心系统、业务系统进行测试之外,还会涉及对接口的测试,而接口测试往往需要测试人员构造一定的测试环境与测试数据来模拟各系统之间的交互。

1.2金融行业软件的复杂性特点

就银行系统软件来说,本身就具有复杂性的特点。首先,银行软件具有不同的客户群,如个人用户、企业用户、银行内部管理人员、业务人员等,因此,银行软件会有针对不同客户所使用的版本或权限控制。此外,对于不同的服务方式,如柜台、电话银行、网上银行等,都必须开发出不同的软件。其次,银行业务种类繁多,业务逻辑也非常复杂,对业务处理要求有很高的安全性和实时性,这些都要借助复杂的技术才能实现。因此,对于测试而言,软件的复杂性也增加了测试的复杂性,对测试者来说要求有相当的经验和测试技术的支持。

另外,由于银行业务的快速发展,当旧的银行软件系统无法满足业务处理的要求时,就必须开发新的系统,对于重新开发的新系统来说,旧系统的用户数据必须保证能在新系统中正常使用,这就涉及到了新旧版本的数据移植问题,由于新旧系统之间数据字典存在差异,数据移植后能否正常,就需要对新旧数据进行比对性测试。比对测试过程往往会涉及数据库的应用及比对工具的开发使用。

2金融行业软件测试的现状

根据某项调查,金融企业应用系统的数量,中小银行应用系统数量普遍在100个左右,有一半银行超过100个应用系统;虽然保险行业应用系统数量相对较少,但大部分保险公司拥有10―50个应用系统;而且这些数量还有进一步上涨的趋势。调查数据也表明,金融行业IT部门的测试能力目前远远低于金融机构对测试的要求[3]。即使是IT成熟度比较高的企业,也难以覆盖所有应用系统的测试需求。金融企业的测试需要和信息科技部门的测试能力之间存在一定的差距。

3金融行业软件测试方法及范围分析

以下主要从功能测试、接口测试、数据移植测试、性能测试、安全性测试、风险监控测试、文档审核几个方面来阐述金融行业软件的测试方法及范围[4]。以下划分主要为了更清晰了解金融行业软件测试所包含的范围,本次分析不涉及白盒测试的内容,主要针对涉及金融行业软件业务特性的测试方法及范围进行阐述。

3.1功能测试

功能测试,主要是对软件的功能进行的验证,对于金融行业软件来说,功能测试主要进行以下功能的验证:

3.1.1业务验证测试

验证业务系统的功能是否正确实现,测试其业务处理的准确性。

1)业务流程测试

金融行业软件测试首先关注的是业务的正确性,业务流程要合理、业务处理正确无误,这些往往需要测试人员具备一定的金融软件测试经验,才能更好的判断业务流程设计是否合理,是否满足客户实际需求,以及业务流程处理过程中可能会涉及到的异常,通常通过正常案例和异常案例来验证业务流程的完整性和正确性。业务流程除了验证流程的正确性,通常对于涉及金额、资金、库存等数据及业务流程中生成的记录是否正确性也是测试的重点。

2)账务处理

对于银行来说,账务处理为核心系统功能,也是这类软件测试的重点,账务处理不仅涉及到资金,还与交易过程相关,在测试系统对账时,必须对账务处理流程有清晰的认识,对于账务处理过程中账务是否处理正确、是否出现错账、是否需要进行调账等案例都要能进行完整的案例设计来覆盖测试点,这一块的测试一般需要有经验的测试人员来进行测试。

3)清算

银行系统清算过程涉及的东西较多,如资金清算、库存清算、计费、计息、对账、登帐、报表生成等复杂的过程,同时涉及的数据量也是非常的大,对于大型系统来说更是如此数据检查的工作量也很大,同样测试人员需要对清算的全过程有清晰的了解。

4)报表

对于银行系统来说,报表是直接呈现给用户最直接的结果,而对一个银行系统来说,报表的数量一般都较庞大,很可能涉及到几十张报表,因此对报表的检查也是测试的重点,这需要测试人员对银行系统涉及的业务非常熟悉,能判断报表的设计是否合理,报表数据是否正确等。

3.1.2客户端测试

客户端主要针对的是软件界面功能的测试,根据功能划分一般涉及以下几类:

1)系统管理类

系统管理主要包括系统参数管理、用户管理、角色管理、权限分配等,测试也包含相应的业务逻辑及页面测试,如查询功能的测试、显示风格、验证客户端页面显示数据是否正确等。

2)数据查询类

主要验证数据查询结果客户端显示是否正确。

3)其它涉及业务操作的功能界面

主要针对客户端界面的录入、查询等功能进行测试。

客户端测试还会对界面的友好性、提示信息的合理性等进行测试。

图1是一个典型的功能测试的流程(一般功能测试覆盖2-3轮测试及回归测试):

图1功能测试业务流程

3.2接口测试

对于银行来说,通常行内系统和与银行外对接的系统是独立开发的,行内与行外系统采用的数据库、通讯协议等都可能存在差异;并且对于银行来说,还可能存在多个系统,如:网上银行、ACE/柜面、电话银行、呼叫中心、信贷、资产托管、资金风险监控分析系统等,并且各个系统之间可能关联特别紧密,存在许多交互;因此,在测试中会涉及到相关系统接口的测试,这时通常需要构造对接系统的测试环境、数据、业务等来模拟对接系统。

接口测试中,由于一方系统在测试过程中不可见,因此通常需要进行环境的模拟,比如开发模拟软件来模拟被测试系统与所交互的系统之间的通讯,并且在测试过程中通常需要测试人员自己组报文,通过模拟发送器收发发送报文来进行测试,并通过后台检查报文转换是否正确,通过数据库来验证数据是否正确。通常来说,接口的测试测试人员主要跟后台和数据库打交道,而很少通过客户端来操作,因此要求测试人员对数据库知识、对应的操作系统命令以及一些中间件具有一定的熟悉程度才能更好的进行测试。

接口测试一般在功能测试阶段完成,功能测试计划中应包含接口测试。

3.3数据移植测试

对于银行来说,软件产品经常存在更新换代或升级的情况,新系统的运行环境和旧系统可能不一致。因此,为了保证系统的顺利运行,在新系统研发出来,准备上线之前,需要把原来旧系统的客户历史数据移植过来,这就涉及到了数据移植问题。数据移植并不是简单的数据迁移,因为新旧系统之间数据字典是不同的,为了保证移植结果的正确性,需要对新旧数据库的数据进行比对,通常可以通过人工方法或开发比对工具进行比对。

举例来说,旧系统采用的SQL SERVER的数据库,而新系统采用ORACLE的数据库;并且就系统可能存在50张数据表,新系统可能有200张数据表,而且,新系统的数据表结构与旧系统可能完全不一样,或者新旧系统的某张表可能对应另一个系统的几张表,这样在数据移植测试中就要进行几方面的测试。比如,两个数据库可能存在有差异的地方,如数据类型不同,位数不同,在数据移植过程中对这部分就应该做详细的检查。此外,表结构的不同,在做数据移植检查时,需要获得新旧版本的数据字典,并且对移植过来对应的所有字段数据是否移植正确做检查。

数据移植测试往往需要测试人员有足够的耐心,能仔细进行比对,发现存在的问题。数据移植测试一般在功能测试阶段完成,功能测试计划中应包含数据移植的测试。

3.4性能测试

性能测试的目的主要是验证业务系统是否满足业务需求的多用户并发操作,是否满足业务性能需求,评估压力解除后的自恢复能力,测试系统性能极限。

随着金融行业软件的规模越来越大、处理能力要求越来越高,进行性能测试成为金融软件测试中必不可少的一个环节。金融行业软件一般在投入使用时,需要接受大批量的业务,并且对于业务的响应处理时间也有很高的要求,这对于应用程序本身、操作系统、中心数据库服务器、中间件服务器以及网络设备的承受力都是一个严峻的考验。任一个环节的问题都可能给用户带来巨大的商业损失。因此,如何保证在压力情况下系统能正常运行是金融行业软件质量保证的关键,同时也是测试人员最需关注的重点。

在性能测试过程中,通过性能测试工具来模拟与真实环境接近的情况,如通过测试程序在同一时间内或某一段时间内,向系统发送预期数量的交易请求、测试系统在不同压力情况下的效率,获得一定的参数(如:(如内存、CPU、缓存、系统响应时间、最大吞吐率、事务平均处理时间),以及系统可以承受的压力情况,进行针对性的测试与结果分析,找到影响系统性能的瓶颈,以便对系统进行优化。

图2是一个典型的性能测试的流程:

图2性能测试业务流程

3.5安全性测试

安全性测试的目的主要是评估业务系统在网络安全、主机安全、应用安全、数据安全、运行维护安全、电子认证安全、业务连续性等方面的能力及管理措施,评价其业务系统的安全防控和安全管理水平。

对于金融行业软件来说,安全性有着重大的意思,尤其对于网络日益发达的今天,大量的金融类交易都是通过网络来实现,确 保信息的安全,对安全性测试提出了更高的要求。如客户数据的安全、资金的安全;银行主机的安全,应用程序的安全以及网络安全,某一个环节出现问题都会给系统带来巨大的风险。安全性测试主要检查出软件存在的安全隐患,确定安全等级,以期得到整改。

通常用的安全性检查手段及检查点如:跨站攻击、弱点攻击、管理界面泄露、敏感信息泄露、跨站点请求伪造、恶意上传等。

对于安全性测试来说,一般需要专业的工具作为支持,因为,大多数的安全性测试都会交给具有一定资质的第三方评测机构来进行。

3.6风险监控测试

主要目的是评估业务系统的风险监控、预警和管理措施,测试其业务系统异常交易、大额交易、非法卡号交易、密码错误交易等风险的监测和防范能力以及系统资源占用的监控。

对于银行的较大型系统来说,一般都会专门开发对应的风险监控系统,一类风险监控主要是对系统的交易、资金、等情况进行监控;另一类则是对主机资源情况进行监控,对于交易、资金类的风险监控测试时主要是根据风险监控需求来验证监控结果是否符合需求描述;对于系统资源类的测试主要关注被监控主机的资源占用情况是否合理。

风险监控测试一般在功能测试阶段或性能测试阶段完成,功能测试或性能测试计划中应包含风险监控的测试。

3.7文档审核

目的主要是验证业务系统的用户文档、开发文档、管理文档等是否完整、有效、一致,是否符合相关标准并遵从更新控制和配置管理的要求。

文档审核最基本的原则是软件实现必须按照用户需求文档来进行设计和实现。对于需求文档审核来说,文档必须覆盖用户所有需求点的描述;对于开发文档,如概要设计文档、数据库设计文档,设计和实现原则应根据需求而定;此外各类管理文档审核包括对项目工期的定义、项目人员的安排与任务分配、项目具体执行的定义等等。在实际应用中,由于用户需求存在经常性的变动已经增加,文档也会存在相应的变更,审核部分也包括对变更部分内容的审核。但是目前金融行业软件没有一个严格的规范来进行约束,因此,在文档审核和实际的开发、测试操作环节都不能得到真正的落实,对测试质量环节也造成了相应的影响。

3.8自动化测试

现阶段实施的自动化测试与手工测试相比较,就是采用程序模拟手工测试的过程。在自动化测试过程中,原来由手工控制的操作,现在由程序来控制,不再进行手工干预[5]。自动化测试主要用于功能测试,测试过程包括脚本的录制、编写及回放。

4金融行业软件测试工具分析

金融行业软件测试与其它应用软件测试流程基本一致,测试过程也涉及到一定的测试工具的使用,以下是金融行业软件常用的软件测试工具:

4.1黑盒测试工具

黑盒测试工具较多应用的是自动化测试工具QARun、QTP。

4.2性能测试工具

常用于金融系统软件,适用于各种体系架构的自动负载测试工具Load Runner,它能预测系统行为并优化系统性能。

对于性能测试来说,很多情况下,商业化的软件不一定能满足性能测试的需求,因此很多时候,需要开发一定的性能测试软件来进行针对性的测试。

4.3测试管理(测试流程管理、缺陷跟踪管理、测试用例管理)工具

常用测试管理工具有:QC、TD、Clear Quest等,主要对测试计划、测试用例、测试实施进行管理,并进行缺陷跟踪管理。

5金融软件测试模式分析

在金融机构内部组织业务测试之前,软件必须经过完整的系统测试、性能测试及安全性测试等才能交付金融机构的业务部门进行业务测试,测试模式可以有以下几种模式:

5.1软件开发方进行的内部系统测试、性能测试和安全性测试

开发方内部进行的测试与本文第三部分描述的软件测试方法与范围分析基本一致,下面主要就第三方测试的模式进行分析。

5.2第三方测试机构进行的系统测试、性能测试和安全性测试

5.2.1第三方测试的优点

第三方测试是指由独立的软件评测机构,根据项目管理方或用户的委托,对被测软件所进行的科学、公正、客观的综合测试及评测活动。在软件工程的整个流程中,用户对于软件的质量非常关注,但用户本身没有足够的能力对软件进行测量的评估,这时,就需要引入一个专业的评测机构,来对软件的质量进行客观的评测。第三方测试不同于软件开发方的内部测试或用户的业务测试,强调由独立于用户和开发方的软件评测机构来承担测试任务,其目的在于保证测试的公正性与客观性。第三方测试主要适用于对行业应用软件的测试及评估。基于以上第三方测试的优点及目前金融机构测试人员与金融系统测试需求的不平衡性,目前,在金融行业,专业评测机构的第三方测试已经显示出诸多的优势,并得到越来越多的应用,如在人行支付系统、商业银行的一些应用系统,都曾引入第三方测试,并获得了很好的效果。

相对于内部测试来说,第三方测试具体有以下几个优点:

1)随着系统规模的日益庞大,软件开发方很难投入足够的人力、物力来参与测试工作。同时,开发方也缺乏专业的测试工具以及经验丰富的测试人员;只有第三方机构才具有这样的实力来完成测试任务。

2)第三方测试以合同的形式制约了测试方,保证了测试工作在一开始就具有客观性。

3)第三方能够通过系统需求来理解整个系统,并从软件工程的角度把握系统,能专业、公正的评价系统中出现的问题。4)第三方机构的权威性能更好的协调第三方、用户以及开发方三者之间的关系。

5.2.2第三方测试的应用

第三方测试机构在测试技术方面一般具有行业内较为专业的测试技术以及较为领先的测试技术、对于被测试项目来说具有技术测试层面的优越性。但是另一方面,第三方测试的管理具有一定的复杂性,整个测试活动的实施,不但需要较强能力的软件测试人员,更需要得到用户及软件开发方的支持,才能确保测试人员对被测软件有较深的认识,确保软件测试的最终质量。

此外第三方测试在整个测试活动中,需要判断开发方的软件是否满足用户的需求,提交最终的测试报告,对所测试软件给出公正、客观的评测结果。

图3是一个典型的金融软件第三方测试的流程。

5.2.3第三方测试常用的测试工具

无论作为内部测试或第三方测试,都必须采用一些自动化的测试工具来进行测试的管理和执行。常用的第三方测试的测试工具主要包含以下几类:

1)测试管理工具

如:Test Director、Quality Center、Clear Quest。

2)性能测试工具

如:Load Runner及第三方自己开发的性能测试工具。

3)自动化测试工具

如:QARun、QTP

5.2.4第三方测试目前存在问题及发展前景

首先,第三方测试作为用户和开发方都放心的测试或评测机构,在客户需求日益增加的情况下,具有良好的发展前景。但是,第三方测试机构所提供的是测试服务,只涉及人工费用,在竞争压力比较大的环境下,价格战不可避免。

6结束语

本文针对金融行业软件的测试现状、测试方法及范围、测试工具、以及测试模式进行了分析,提出了适用于金融行业软件测试的具体方案及实用技术。但随着新的设计模式及开发方法的不断涌现,现有的测试理论及技术必须做出与之相对应的改进才能满足不断变化的用户需求。

参考文献:

[1]刘涌.提高金融软件产品质量催生独立软件测试队伍[J].中国金融电脑,2006(12).

[2]林勇,侯晓勇,刘涌.国际一流金融软件测试中心的内涵和标准[J].中国金融电脑,2010(1).

[3]王晓燕.提升和规范金融行业软件测试[J].金融电子化,2007(10).

[4]蔡立晶,李宽.金融软件测试特性分析[J].中国金融电脑,2009(11).

软件测试心得体会篇7

1 概述

随着国内软件市场不断扩大,软件企业也越来越规范,软件产品正逐渐成为软件企业生存和发展的核心。人才市场需要大量的软件测试人才。高职软件工程专业毕业的学生也绝不仅仅只限于从事低端程序,在软件工程专业,软件测试逐渐成为一个新的就业方向和就业趋势。凭借软件工程专业,加大建设软件测试课程的力度,同时对软件测试的投入力度也要加大,进而使得培养出的软件测试人才都具有扎实软件测试理论知识,同时掌握测试软件的方法,并且具有一定的测试软件的经验。

2 高职院校软件测试课程现状分析

多年来,软件测试技术课程一直按传统的教学方法以讲授为主进行教学,学生缺乏学习动力,依赖性强、易受外界环境的干扰,工程意识、工程素质没有得到有效锻炼,不能利用所学知识和技能对软件项目进行测试实施。软件测试技术方面的教材近年来出现了一些,但质量也良莠不齐,高职的软件测试课程大多设置为选修课或者考查课,课时相对较少,并没有作为重点内容来要求。软件测试课程的教学目前大致为两种状态,一种测试理论和测试方法是高校教师授课的重点,在软件测试案例和软件测试经验方面比较匮乏,在教学过程中很少涉及重要的实践环节,系统的训练相对比较缺乏。与软件公司的测试人员相比,学生还有很长的路要走。另一种是从软件公司聘请多年从事测试的高级人才来任教。他们直接用企业的测试项目对学生进行讲解,但高职软件工程专业的学生之前都很难完成实用性的具体项目,更没有扎实的测试理论和方法做依托,不能将实用的测试技术深入的消化理解,灵活运用。如何将这两种教学现象很好的融合,是软件测试课程能否使高职软件工程专业学生成为软件测试实用人才的关键所在。另外,学生对软件测试技术的掌握程度直接受到对软件测试认识的影响。不懂编程的人才从事软件测试这是所有学生的共识,在一定程度上影响了软件测试技术的学习。恰恰相反的是,能做测试的高端人才,正是对编程有着深刻理解的全能型人才。

3 教学方法

为了确保培养的软件测试人才符合社会的需要,在一定程度上满足高职院校学生职业能力的要求,可以从以下几个方面进行改革:

3.1 加强软件测试的课程建设。可以设立《软件测试理论、方法》、《软件测试系统训练》和《软件测试实战项目》等多门课程。适当增加实验实训的学习时间,对教学目标、教学内容、教学计划和教材选择等进行重新制定。在软件开发过程中,要让学生了解软件测试的重要性,熟悉软件测试的基本概念和理论,同时掌握软件测试的技术和方法,能将软件测试技术用于实际测试问题,并指导软件测试职业的特点和对软件测试人员素质的要求。软件测试课程应该在软件工程课程结束之后开始,安排在第三学年。最好同步能安排生产实习。

3.2 合理组织教学内容,实施案例教学。在知识点方面,软件测试技术涉及的比较多,并且通过大量的规范的训练才能理解和掌握这些知识,最好的办法是进行分阶段教学。前期的基本概念和基本知识、单元测试、集成测试以及自动化测试工具的使用等是教学内容的基础。后期包括需求测试、设计测试、系统测试、可靠性测试、验收测试以及静态测试中的同行评审等。多利用各种测试案例进行教学。建立案例库等。

3.3 严格实践训练,实施实训练习。按照测试对象,要求学生设计相应的测试用例、编写测试程序、测试和书写测试报告。在高职院校教育中,认识实习和实习是两个重要的实践环节,利用这两个环节,组织对软件测试感兴趣的同学进行测试,进而提高技能,在一定程度上激发他们对软件测试的兴趣。生产实习则需要有经验的软件测试工程师能实际指导学生进行项目测试,通过训练使学生认识到实际项目的测试,找出自身差距。

3.4 加大培养与引进软件测试师资的力度。通过派遣的方式,让该课程的授课教师到优秀的软件测试培训机构参加相应的培训,然后到正规软件公司的软件测试部门进行实习。另外,坚持软件测试实战项目聘请有经验的软件公司的测试工程师来校任教。

软件测试心得体会篇8

关键词:计算机专业软件测试平台作用方法

中图分类号:G623文献标识码: A

前言:软件测试的主要目的,就是为了减少软件中存在的漏洞和错误,对于实际使用软件的用户来说,软件中漏洞和错误的减少,在很大程度上提高用户的使用体验。在实际的选择过程中,应该根据软件的特点,针对性的选择几个测试平台,只有这样才能够发现软件中存在的更多漏洞和错误,从而保证软件的质量最大化。

一、软件测试平台

1、软件测试平台的概念

在软件测试平台出现之前,软件的测试的方法是在软件被编写完成之后,在完成的软件上,按照对应的功能输人能使其体现功能的指令,从软件运行之后所得到的结果来反推到软件所有的问题或者缺陷。而这种方法具有局限性,只能对软件是否能具有相应功能进行测试,而无法测试没有体现的功能。

就软件的检测效率来说,这种原始的测试方法测试的效率过于低,需要花费太多时间在软件的测试上,而在这方面抑制了软件开发的发展。由于一个软件具有许多功能,而在软件的测试中必须对所有的功能进行检测。这同时加重了软件开发的负担。这时急需一个方式在进行高效率、高质量的软件检测方法。

而通过不断的研发,将对不同功能的检测、输人指令、软件的运行以及问题的反馈等功能集中到一个平台上,通过这个平台的方式进行测试中所需要的所有步骤,这就是软件测试平台的由来。在软件测试平台的运行中,同样是把功能的测试一步步的来进行。在测试中,会需要用到各种工具,而测试平台则提供这种工具,对要测试的软件进行自行的测试。通过这个平台可以实现快速的对开发的软件功能进行检测,使之能迅速投人市场。

2、软件测试渠道的特色

(1)软件测试渠道是确保软件在运用的是不是会出现疑问的根本,拥有着一个好的运转环境,对于软件的开发运用都有着重要的含义。一个好的环境可以让软件测验渠道更为精确、高效,关于软件自身有的疑问与缺点进行检查,使得软件能疾速的投人到工作运用中。所以为了让软件的功用得到确保,就有必要确保软件的测验渠道有良好的环境。

(2)软件的测验是一个软件在投入运用之前所有必要进行的。现在在信息化的时代软件所具有的功用不断增加,形式也越来越复杂,这就关于软件测验渠道的要求随之也高起来。由于要对软件的每一项功用进行测验,而要确保其每项功用的精确性,就有必要屏蔽在检查一项功用的同时,其他功用的影响。这就需求软件测验渠道具有必定的屏蔽能力,使软件的每一项功用的检查都能非常的精确,以确保整个系统的安稳。

(3)现在的软件测验渠道具有可以对软件的悉数功用进行的检查,这相较于之前的有必要把软件的功用与逻辑的分别检查来说提高了检查的功率,并且可以愈加精确地对软件所存在的疑问与缺点进行检查,提升了软件开发的功率以及软件在运用过程中的精确性。

3、常用的软件测试平台

因为信息化的普及,引发软件职业及相关职业的高速开展。而软件测验渠道即是其间获益方之一,为满意软件职业的需求,使得软件测验渠道品种众多。其间在通用型的软件测验渠道中,TestCellter软件测验渠道是其间最受欢迎的测验渠道之一;而PARASOFTALM软件测验渠道则在集成化的测验渠道中最具人气的。

PARASOFTALM软件测验渠道因为其有适当专门关于测验软件的功用的效果,又能精确的判断软件的疑问所在,所以被很多世界知名软件公司所运用。软件测验渠道关于软件的开发运用具有适当重要的效果,渠道能够添加其软件的开发功率,又能及时的检查出软件所存在的疑问,为软件的研制供给了便利。而因为软件的多功用的特性,使得渠道也有必要具有检查这些功用的效果。所以就有了通用型的软件测验渠道。

TestCellter软件测验渠道即是其间之一,它具有对不一样功用的软件都能对其进行检查的功用,具有很高的全面性。在这种背景下,PARASOFT公司的测验东西,也有了十分疾速的开展,近年来跟着软件测验工作的需求,该公司将一切的测验东西集成到了一个渠道中,这即是现在的PARASOFTALM测验渠道,这个渠道从一呈现,就受到了各大软件公司的重视。

二、计算机专业软件测试方法解析

1、计算机软件测试的作用

在软件测验的进程中,测验渠道的挑选决定了软件在测验后的完好性,因为对软件的高需求,在关于测验渠道的挑选上就要引起重要。首先来谈谈测验渠道的种类,因为信息化的遍及使得软件职业越来越受到大家的期待,而测验渠道也由此变得多种多样,总的对测验渠道进行归类可分为全面型与专业型。全面型的测验渠道着重于测验软件的多种功用,但是在准确性上有所不足;而专业型的测验渠道则专门对软件的某一功用进行测验,这个可以确保软件在所测验的功用上的完好,而这个方法也存在着疑问,因为软件所具有的的功用较多,如果运用专业型测验渠道会使得测验进程变得适当繁琐。所以在挑选测验渠道上,还是看主要想测验啥而去挑选最好的类型渠道。

上段中提及到信息化的遍及使得软件职业的蓬勃发展,而关于软件的准确性的需求也越来越高,所以在软件测验的进程中,要谨慎的对待可以呈现的每一个疑问,及时对其进行完善。确保软件可以正常的表现其效果,然后使得全部软件职业更进一步。

2、计算机软件测试的方法

因为测验办法的多元化使得测验成果的精确性无法得到保证,尤其是不一样的测验的渠道对同一软件进行测验的同时,就会呈现各个测验成果的不精确。其缘由是每个渠道具有在测验方法、上机的流程以及测验者的使用办法的不一样,这些缘由导致了在对同一软件的测验中成果会呈现分歧。

所以在真正的测验中,应该首要对于软件自身的体征进行挑选,选择更为合适的测验渠道进行测验,这样可以极好的削减失误。在进行软件测验时,要先保证软件的中心功用,在保证中心功用的前提下,对其他功用的测验就具有适当的难度。要保证一个软件的功用的完好性是一个适当复杂的进程。

在测验渠道的挑选上,有对应性的找出各个有些相对专业的渠道进行测验,这样得到的成果会相对的精确;因为软件的完好性的需求十分高,所以有必要保证其的精确,在对同一有些进行测验时,在得到软件的缺点后,就当即完善,然后继续进行测验。到多个渠道的测验成果都是没问题的时分,才断定其的完好性。

结语:综上所述,在计算机出现的初期,由于软件的结构比较简单,并没有形成软件测试的概念,随着软件自身的发展,为了提高软件编写的效率,缩短软件开发的周期,人们将软件测试的工具集成到一个平台上,逐渐的形成了软件测平台的概念,现在的软件开发过程中,都会使用到软件测试平台,而且通过多个平台的协同使用,最大程度上减少软件中的漏洞和错误。

参考文献:

[l] 浅谈计算机软件测试技术与保护技术[J].无线互联科技,2013,(3).

[2] 世昌计算机软件的测试及保护技术探讨[J].电子技术与软件工程,20l3,

(13).

[3] 大弘浅谈计算机软件测试技术与深度开发模式[J].中国新技术新产品,2013,

(21).

[4] 冀山,华更新.星载计算机软件自动化测试平台研究[J].航天器环境工

程,20ll,(l).

[5] 维佳嵌人式系统接口转换计算机软件测试平台研制[J].数字技术与应

用,201l,(9).

软件测试心得体会篇9

关键词:企业;信息系统;软件外包;关键因素

1 引言

随着现代信息技术的发展与应用,国内各行业的信息化建设全面展开。信息化建设离不开各种信息系统的支持,如办公自动化系统、管理信息系统、电子商务系统、决策支持系统等。企业在开发信息系统时,有些需要外包给软件开发商来完成,企业只有把握好外包中的几项关键因素,才能成功实施软件系统的外包。

2 企业信息系统软件外包成功实施的关键因素

烟草行业卷烟生产经营决策管理系统(即“一号工程”)是2003年国家烟草专卖局根据行业宏观调控和科学决策信息化建设发展的需要建设的信息化系统。系统建立了行业数据交换体系,通过打扫码、数据库联机方式自动采集行业生产经营基础数据,构建行业业务指标体系和数据分析模型,建立国家局数据中心,实现国家局分析展现应用的界面集成和业务集成。“一号工程”是烟草行业软件外包的一个典型的成功案例[1]。

(1)选择技术实力强、口碑好的软件外包企业

企业在选择软件外包商时,可采取公开招投标方式,对投标单位从技术能力、人员能力及软件过程能力进行综合评估,选择员工作风好、保密观念强、政治觉悟高的企业作为接包方,确保系统数据安全,并与接包方签订《保密责任协议书》,建立安全保密分级管理制度[2]。

如“一号工程”于2003年通过公开招投标,确定由中国计算机软件与技术服务总公司(即中软总公司)作为项目总集成商,中软总公司委托其下属的中软国际承接项目建设工作。中软总公司是国家规划布局内重点软件企业,实力雄厚;中软国际是国内领先的应用软件和解决方案供应商,在国内IT行业享有较高的声誉。

(2)充分调研与沟通,作好项目需求分析工作

企业在软件外包时必须做好项目需求分析工作。业务部门提出用户需求后,通过与技术部门、软件开发人员多次交流沟通,提出系统的综合要求及标准。开发人员通过分析系统需求,了解用户工作流程并对其进行正确分类,确定系统的可接受性、可实施性、可测试性;在形成需求报告之前,对后期发现的不明确、不一致的地方要进行修改或补充;最后项目经理应邀请客户代表共同评审需求文档的正确性、完整性和清晰性,使需求文档正确无误地反映用户需求。

(3)明确各部门职责,选派专人参与开发过程,保证项目进度及安全

企业应明确参与部门(如归口管理部门、牵头部门、协作部门等)的具体职责,避免在软件开发出现问题时由于没有建立合理的分工、反馈和跟踪制度出现多方推诿现象;企业还应选派技术人员全程参与开发过程并建立项目进展情况表。企业参与软件开发,不仅可以培养自己的技术力量,还可以及时协调、解决出现的问题,为项目进度提供保障,还能对项目涉及的保密数据进行脱密处理,进而保证项目安全。

例如,“一号工程”在建设过程中成立了项目领导小组,国家局局长姜成康亲自主抓,副局长李克明任组长,信息中心主任高锦任副组长,各单位负责人是领导小组成员。成立了项目实施办公室,做到了分工明确,各司其责。从公开招投标到各阶段的项目建设,每个方案都经过了专家会议的若干次讨论,每一阶段国家局都召开了专门的会议进行部署。李克明副局长亲自参与布置各个阶段的工作,协调各方关系,为项目建设提供了保障。

(4)做好软件测试工作,进一步提高软件产品质量

从技术角度看,各种信息系统开发的最终目的就是得到高质量的软件产品。企业为保证软件产品质量和可靠性,必须做好软件测试工作。通过制定软件测试计划,做好测试准备工作;组建测试团队,包括测试项目负责人、测试分析员、测试设计员、测试程序员、测试员、测试系统管理员、配置管理员;选择合适的测试方法,静态测试或者动态测试,白盒测试或者黑盒测试,重点要进行可靠性及安全性测试;选择测试工具,如Parasoft、Compuware、Xunit等白盒测试工具,LoadRunner、WinRunner、Astra Quicktest等黑盒测试工具[3];重点做好测试中Bug和需求变更的跟踪和管理,做好Bug分类、缺陷记录、版本控制等工作。

(5)严格做好软件验收工作

软件项目的验收非常重要。企业在接到验收申请后,要认真审查软件系统的运行、文档资料、培训工作等现状,对于符合验收条件的项目,要严格按照验收标准和流程来验收。验收的主要依据是软件需求规格说明书。验收程序分技术测试和文档检查。技术测试由专家组负责。文档检查主要检查招投标书、合同、用户使用报告、信息安全测评报告、系统使用手册等。验收测试范围包括功能项测试、业务流程测试、容错测试、安全性测试、性能测试、易用性测试、适应性测试、文档测试等[4]。

如“一号工程”作为耗时两年半精心打造的信息化项目,验收时非常严格规范。验收委员会由中国工程院院士孙家广、沈昌祥等13名专家组成。中软国际的验收资料齐全完备,在《项目验收总结报告》中详细描述其建设过程,涵盖了从方案论证、软件开发到项目实施与服务、合同完成情况等方面的工作。中烟信息技术公司随即构建了运行维护体系,设立了客户服务、技术支持等部门,在完成日常维护的同时,以电话支持和现场服务等方式为行业基层提供服务或解决操作上出现的问题。

(6)做好商业秘密、核心技术等知识产权保护工作

企业在软件外包开发中,要做好知识产权保护工作。首先,要和接包方签订严格的保密协议,要求他们指定专人负责对核心技术的使用控制;其次,企业要通过技术分析及数据过滤提供尽可能少的核心机密;第三,尽量在发包方本地进行后期的数据装入,以减少商业秘密泄漏的可能。

对于产生的其他知识产权,根据我国《计算机软件保护条例》的规定:“接受他人委托开发的软件,其著作权的归属由委托人与受托人签订书面合同约定;无书面合同或者合同未作明确约定的,其著作权由受托人享有。”对此,企业要与接包方签订书面合同,明确以下3点归属问题:(1)软件作为一个整体的知识产权归属;(2)软件中的代码归属及重用性约束等具体规定;(3)因知识产权归属的法律适用及发生侵权纠纷的具体解决方式,包括责任的承担、损失的追偿等[5]。  3 结语

软件外包对于企业来说,可以提高开发效率、降低成本。充分做好以上几项工作,才能减少外包风险,保证软件产品质量,为企业带来更好的经济和社会效益。同时,企业还要针对软件项目特点,运用适合自身的项目管理模式来加强软件外包项目管理,尤其要规范项目实施过程,才能迅速适应业务需求的变化,提高软件系统的运行效率,提升企业的核心竞争力。

参考文献

[1]袁博.“一号工程”奏完第一乐章[J].中国烟草,2006,(09):23-25.

[2]陈国卫,魏汝祥,吴琴.军用软件外包探讨[J].装备制造技术,2008,(09):14-15.

[3]梁洁.浅谈软件测试工具的选择与使用[J].中国传媒科技,2008,(11):59-60.

软件测试心得体会篇10

关键词:集成测试;测试覆盖率;功能簇

中图分类号:TN407 文献标识码:A 文章编号:1007-9599 (2012) 13-0000-02

一、集成测试的一般定位及范围

随着软件行业的发展,软件系统涵盖了日常生活、生产的各个方面,复杂的软件系统的测试保证越来越成为实现软件需求目标的重要方面。

软件测试根据测试介入时机和测试对象的范围,一般可分为:单元测试、集成测试、系统测试。其中,集成测试是在单元测试的基础上,将所有模块按照设计要求组装成为子系统,进行集成测试。实践表明,一些模块虽然能够单独的工作,但并不能保证连接起来也能正常的工作。 程序在某些局部反映不出来的问题,在全局上很可能暴露出来,影响功能的实现。图1为不同开发阶段驱动的测试类型图。

不同类型的测试的实质是选取不同的测试范围和对象,对对象的属性 (功能分支及其他属性)进行验证的过程。好的测试是针对测试目标选取一个较优的测试对象及范围的组合,以获得较高的测试投入与产出比例,通过对测试目标实现尽量完整的测试覆盖度, 达成测试目标。软件测试没有绝对的覆盖,也不存在无尽的测试资源。

传统的集成测试,属于白盒测试的一种。其主要的问题包括如下方面:

1.较大的测试开销:由于集成测试采用将一个实体分解为多个实体的方式进行,测试接口的数量成级数增加,开销较大,通常的集成测试都是选择性的针对核心功能模块进行。

2.测试输入及构建要求较高: 软件测试总是基于一定的测试输入基础,这里的输入,主要依赖于开发过程。由于软件工程化开发的不同水平,集成测试往往难以获得完整的设计输入,同时由于软件设计成熟度的限制,导致模块级设计的变更频繁,这些都加剧了测试需求输入的恶劣和不可控。同时由于集成测试需要构建模块级的数据环境,属于白盒测试,测试技能要求,测试时间消耗都较大,也是其难以实现高效应用的原因之一。

二、系统级集成测试

(一)系统级集成测试的特点

为了获得更好的测试效益,我们提出一种基于系统级设计构建集成测试的思路。传统集成测试主要以软件模块为测试实体对象,将产品系统打开,基于内部接口和模块级运行环境进行测试设计。系统级集成测试从本质上与传统集成测试基本一致,但是其分析方法,更多强调与系统运行的场景、业务行为、事件对软件运行的影响以及场景异常的构建。

(二)系统级集成测试的对象

系统级集成测试捕获的问题对象本质是数据接口关系,主要分为3种类型,如下图所示:

1.外部输入关联

如图2,次功能模块b的输出是主功能模块a的输入。 整个系统功能自然的形成这种接口关系。例如:初始化是系统的数据准备、装载过程;业务功能消费这些数据。

2.内部输入关联

如图2中,主功能模块的输入条件,除了界面输入,还有一些内部数据输入。这些数据输入可以通过次功能c来构造。 通过次功能c的构造,能够实现对功能a更加完整的分支覆盖。 典型的例子是:业务通讯过程,依赖于其保护密钥的更换功能,这里的保护密钥就是内部输入关联的数据。

3.背景数据依赖

这种集成关系常常是: 基于系统全局的接口,在某种功能分支运行下,发生变化,进而影响主功能模块的运行。例如某个背景数据a是主功能的依赖数据,数据a可能因为某些功能运行或者某些事件改变。从而影响主功能的运行。

例如: 某个应用系统某数据的生产任务已经启动了,但一段时间后该应用系统被删除。则其对应的数据如果没有设计回收机制,就会形成冗余数据,这些数据占据了空间,但是没有被使用。这种情况也可以被理解为一种异常测试。

集成测试所捕获的问题主要来自于上述3种情况,而这些问题,常常是最容易出现测试逃逸的方面。

三、系统级集成测试的分析方法

系统级集成测试分析依赖于白盒接口分析、黑盒场景分析2方面的有机结合,接口分析的目的是分析明确集成测试的边界和目标;而场景分析则帮助我们获得高效的需求选择依据,选取最重要的测试需求。

(一)接口分析

通过对系统级功能核心接口数据进行分析,明确集成测试的实体范围及测试的目标分支。

根据上述2.2节的分析,集成测试的本质是捕获模块内部分支上的bug,所以,集成测试分析首先应明确测试功能或模块对象,以及与之存在接口关系的相关功能或模块对象,形成功能簇。功能簇有2种来源方式:

1.由软件概要设计文档,软件分支流程图,而导出的数据接口关系。在软件系统设计中,各个分支所共有的数据以及数据接口关系,就是要测试的目标。

2.基于系统业务而划定的一组关联功能,这些共同实现某种业务的功能,通常具有密切的数据接口,输入与消费的关系。

功能簇的选取,应针对每个重点的核心功能,逐一进行分析,形成若干功能簇。这里的核心功能,常常是那些系统中,长期或者频繁运行的,与核心业务密切相关的功能。如管理系统的管理服务端,通信系统中的业务通讯功能。

(二)场景化分析

通过接口分析,明确了测试的目标接口;而动态的场景分析,则是有效的选取、过滤这些接口获得最优测试覆盖率的手段。同时也对系统级的主要异常测试设计提供的依据。

测试中常常提到分支覆盖、语句覆盖,其实最有效的是场景覆盖。因其视角最高,也能获得最好的覆盖效率。

场景分析的要素包括:业务模型、应用模式、承载环境等。是对于软件系统完整运行环境的建模和构建。

下表列出了典型的加密通信系统的主要业务及场景的关联分析表:

四、结束语

笔者在多年的产品测试实践中,体会到大量的测试逃逸来自于接口测试构造不足。软件系统的内外接口数量是巨大的,总是让测试者无法穷举和覆盖。成功有效的测试,并非依赖测试容量、压力的构建,更多的依赖于对业务的理解,以及对核心的软件设计内在机制的把握。系统级集成测试的深入分析和应用,为我们寻求高质量的测试提供了一条有效途径和思路。