软件质量与测试

2024-08-26

软件质量与测试(精选12篇)

软件质量与测试 篇1

随着软件产业的发展及应用需求的不断提高,软件系统的规模和复杂性与日俱增,软件缺陷导致的各类损失不断增加,甚至带来灾难性的后果。目前,软件质量问题已成为政府相关部门、软件企业、软件用户关注的焦点,作为软件质量保证和控制的有效手段,软件测试受到了越来越多的关注。

国外的软件厂商极为重视软件测试。在欧美等软件产业发达的国家中,软件企业的测试人员与开发人员的配置比例一般已达到或超过1:1。[1]而我国企业对于软件测试在整个软件行业中的重要作用认识较晚,在国内被调查软件企业中,能够基本达到该比例的企业仅占22%。[1,2]随着国内大多企业的软件成熟度能力的不断提高,多数企业对于软件测试环节的要求大幅提升,产生了对软件测试人才的大量需求。[3]据前程无忧网数据显示,2011年国内软件测试人才缺口高达20万,2012年缺口突破30万人。[4]造成软件测试人才供不应求的根本原因在于国内高等院校对测试行业的市场需求反应迟缓,应届毕业生的能力与企业需求脱节,直接使用很难;而社会培训机构举办的各类软件测试技术培训价格不菲,质量良莠不齐,难以缓解人才市场的紧缺状况。[1,2,3,4]作为人才培养的主要基地,高校成为企业挖掘软件测试人才的主要关注地。[4]如何解决计算机专业尤其是软件工程专业软件测试课程理论与实践严重脱节的问题,是高校亟需面对的重要挑战。[5]

为适应我国软件产业发展对人才的需求,提高毕业生就业率,我校信息工程学院于2011年在最新的本科生培养方案中,将计算机科学与技术专业细分为计算机工程、软件工程和网络技术三个方向,并将“软件质量保证与测试”课程列为软件工程方向的学生的专业必修课之一。以下结合市场需求,针对教学实践过程中发现的问题,从理论教学、实践教学、教学方法与手段等方面,对该课程的教学进行了初步的探讨与实践。

1 教学目标与教学内容

我校计算机科学与技术专业的学生多数来自疆内。经过四年专业学习后,从事软件开发或测试的学生人数约占当年毕业总人数的一半。结合生源、就业以及市场需求的特点,本校计算机科学与技术专业的软件质量保证与测试课程的教学目标定为:以就业为导向,培养应用型人才,使学生掌握软件质量保证与测试的基本概念和理论,了解软件质量保证与测试在整个软件开发过程的地位和重要程度,建立正确的质量文化和理念,掌握软件开发和维护过程中的质量保证措施和管理方法,为将来从事软件开发和软件测试工作打下坚实的基础;授课时间定为48学时,其中理论教学32学时,实践教学16学时。

软件质量保证与测试是一门理论与实践并重的课程,既需要深入的理论知识,又需要丰富的实践项目经验。[5]根据课程教学目标的定位特点与要求,可将该课程的教学按软件质量保证、软件测试基础、自动化测试技术和测试管理四部分组织。各部分的具体教学内容和学时安排见表1。

实践教学的目的是巩固课堂所学,并引导学生扩展学习。为了使学生熟悉软件测试的流程,正确认识软件开发与软件测试的关系,“软件质量保证与测试”课程的实践教学以基于完整项目的形式开展,并在此基础上熟悉主流自动化功能测试工具的基本使用。具体的实践教学内容设计与学时安排见表2。

2 教学方法与手段

2.1 引导学生正确看待软件测试工作

要培养能够适应市场需求的优秀软件测试人才,首先必须引导学生正确看待软件测试工作,树立积极的学习观念。目前,国内的软件测试行业正处于起步阶段,还没有一个相对成熟的模式,对于测试究竟要做什么工作没有一个正确的认识。人们普遍认为“软件测试的技术含量不如软件开发”“软件测试工作是一种简单的、重复性的劳动”……这导致企业在招聘测试人员时,往往门槛较低;一些企业甚至因为追赶进度、节省资源等原因而忽略测试工作。[4]这样的大环境使得软件测试人员不能真正认同测试岗位,主动参与到产品改进、开发与测试流程改进等工作中,更多地发挥他们的作用。企业高层感觉不到测试人员的价值,就不会重视他们,从而使得软件测试进入了恶性循环的怪圈。要摆脱这样的恶性循环,必须纠正测试行业中的错误观念,正确看待测试工作。高校学生作为未来软件测试人员的主力后备军,引导他们正确看待测试工作尤为重要。在实际教学过程中,与学生讨论由于软件缺陷引发的质量事故,如“千年虫”问题、“7.23”温州动车组列车追尾事故等,从软件测试角度分析避免事故发生的措施,可引起学生对软件质量问题的关注,让他们认识到软件测试的重要性,激发对“软件质量保证与测试”课程的学习兴趣。

2.2 讲述与案例教学并重

“软件质量保证与测试”课程讲解涉及许多基础理论知识,尤其是软件质量保证部分。脱离案例讲解 基础概念 和理论 , 不仅枯燥 乏味 , 学生也难以 消化、理 解 ; 而结合丰 富的实际 案例进行讲 解 , 不仅可以 激发学生 的学习兴 趣 , 加深学生对 具体的质 量保证概 念、测试 基础等认识,而且可以帮助学生完成初步的迁移。例如,在讲解能力成熟度模型集成CMMI时,可以引用业内比较流行的“吃饭CMMI”案例,帮助学生理解5个CMMI成熟度等级,使他们明白“为何CMMI”“怎样CMMI”。

2.3 以就业为导向加强实践能力训练

理论教学脱离市场实际,不利于教学质量的提高,也影响高校学生就业工作。以“基于完整项目”和“小组工作”相结合的形式开展课程实践教学,一方面可以让学生正确认识软件开发与测试的关系,熟悉实际测试流程,另一方面可以增强学生的团队意识,提高学生的协作能力。据不完全调查,国内软件企业进行功能测试,常用自动化测试工具QTP或Win Runner。在实践教学中,增加对这二者之一的训练、学习,可以加深学生对自动化测试理论的理解与认识。而熟练使用自动化测试工具的一技之长,将为提高学生就业率添砖加瓦。

2.4 启发式教学

传统的填鸭式教学中,教师与学生之间缺乏互动,学生完全成为知识的被动接受者,缺乏主动的探索精神和独立思考能力,容易产生“高分低能”现象。启发式教学以启发学生的思维为核心,从学生的实际出发,调动学生的学习主动性与积极性,引导学生应用所学发现问题、解决问题,利于开发学生的智能。比如,在讲解“基于边界值分析的用例设计”时,可以通过“创建包含10个元素的数组”的简单代码分析,引导学生思考“如何验证代码的正确性”“如何设计用例以发现是否存在数组溢出”等问题,从而让学生明白基于边界值分析的用例设计既要考虑程序的功能正确性,又要考虑程序的健壮性,加深对边界值分析方法的认识和理解。

2.5 讨论式教学

讨论式教学由教师提出论题,学生以小组为单位,围绕论题进行调查研究,通过讨论或辩论活动获得知识或巩固知识。例如,在讲解“如何建立质量管理体系”时,可将学生分成若干小组,分组讨论“如何做好产品和客户调查分析”“如何策划、编制、试运行、审核质量管理体系”。在具体讨论某一个问题时,可抛出实际案例,引导学生进行问题分析、提出解决方案。例如,在讨论“如何做好产品和客户调查分析”时,可提出如下案例:“XX公司为了建立质量管理体系,由管理代表XX总经理亲自带队调查分析公司现状,他特别重视产品研发和生产过程质量分析,并为此更换了新设备,更改了生产工艺,结果体系建立完成并通过了认证后,客户投诉情况的改善却不明显,XX总感到十分纳闷”,让学生分析客户投诉情况得不到改善的原因,并提出可行的解决措施。最后由任课教师针对讨论中没有分析清楚或提到的部分进行补充。通过实际案例的讨论、分析,不仅可以提高学生的课堂参与度,增强学生的学习积极性,巩固理论学习,还可以提高学生分析问题、解决问题的能力。

3 结束语

兴趣是最好的老师。只要学生对课程产生了兴趣,就会积极主动地学习。作为教师,只有持续改进教学方式与方法,增强师生间的互动,才能长久地吸引学生,使学生主动地参与到课堂教学中,从而达到教书育人的目的。针对“软件质量保证与测试”课程教学中存在的问题,以就业为导向安排理论教学内容和实践教学内容,通过丰富的实际案例引起学生对该课程的重视,以启发式教学、讨论式教学等多种教学方法与手段相结合的方式提高学生的学习主动性与积极性,吸引学生对课堂教学的持续关注。实践证明,学生的学习兴趣与学习效果均得到了极大的提高。大多数的学生还能够学以致用,将所学应用到毕业设计当中,并取得良好的效果。

软件质量与测试 篇2

现如今,软件行业快速发展,然而与其形成鲜明对比的是软件测试行业却发展缓慢,跟不上软件开发的步伐。

软件测试在软件开发中是十分重要的,应该与软件开发在平等的地位上。一个软件开发的质量如何,与软件测试是密不可分的,靠的是软件测试环节的层层把关。软件开发质量与软件测试间是密不可分的关系,软件测试是软件开发质量的保障。随着软件行业的快速发展,并认识到软件测试对于软件开发质量的意义,软件测试地位有所提高,但是总体而言这些还是不够。

1软件可靠性

1.1软件可靠性概述

软件可靠性是软件产品在规定的条件下和规定的时间区间完成规定功能的能力。软件可靠性不但与软件存在的缺陷和(或)差错有关,而且与系统输入和系统使用有关。软件可靠性的概率度量称软件可靠度。

1.2软件可靠性的影响因素

软件可靠性是关于软件能够满足需求功能的.性质。软件不能满足需求是因为软件中的差错引起了软件故障。从上游到下游,错误的影响是发散的,所以要尽量把错误消除在开发前期阶段。

1.3软件可靠性的相关分析

随着信息化的不断深入,渗透在各行各业中,尤其是在一些关键的应用领域,对于可靠性的要求是尤为重要。在一些行业中,软件系统的可靠性直接关系到行业自身的荣誉和生存发展竞争能力,例如银行,如果银行软件系统不可靠会带来不可估量的损失和伤害。

2软件测试

2.1软件测试简介

软件测试是为了发现错误而运行程序的过程。软件测试是软件开发过程中的一个十分重要组成部分,它贯穿于软件定义和开发的整个过程。其目的是尽快尽早地发现在软件产品中所存在的缺陷。

2.2软件测试的常用工具

(1)软件错误管理工具Bugzilla。

(2)功能测试工具WinRunner。

(3)负载测试工具LoadRunner。

(4)测试管理工具TestDirector。

2.3软件测试现状及前景

(1)现状。软件测试是新兴的行业,如今在软件开发的过程中出现错误或缺陷的机会越来越多,市场对软件质量的重要性的认识越来越看重,对软件质量的要求越来越高。所以,软件测试在软件开发的项目中的作用地位日益突出和重要。但是,如今软件测试行业还没有真正的受到重视和足够的关注,对于很多人甚至软件开发人员认为软件测试是可有可无的,乃至认为可以忽略软件测试,这进一步影响了软件测试的发展。

(2)前景。软件测试发展空间很大。就目前行业发展来说:软件测试人才存在缺口,开发人员和测试人员的比例严重失衡。随着软件产业的不断发展,软件产品的质量成为软件企业的核心之一,软件产品在发布前都需要大量的软件测试以保证质量,而这些工作必须依靠拥有娴熟技术的专业的软件测试人才来完成。

3软件可靠性与软件测试

3.1件缺陷与软件测试

软件测试的目的就是发现错误、找出缺陷,并且尽可能多的发现错误。通过软件测试,采用各种测试的手段和测试的工具,对软件进行严格的检查测试,使软件的可靠性越来越高,达到客户的满意。

3.2软件可靠性与软件测试

软件测试与软件可靠性之间的关系是密不可分的:

(1)软件测试对于软件可靠性的贡献是十分大的,学习软件测试知识,熟练使用软件测试的工具,尽可能多的找出软件的缺陷,及时对软件缺陷修正,避免日后花费更加大的代价去修复软件,提高软件的可靠性。

(2)在测试过程会产生许多软件测试的日志脚本这类数据,上面会记录着软件测试缺陷,长期积累这些数据成为经验,建立可靠性的度量模型。反过来帮助测试更好更有效的完成测试工作。

(3)存在问题:软件测试在国内被受重视的程度远远不够,很多公司并不重视软件测试工作,不愿意投入更多去做软件测试。软件测试人员与开发人员之间的比例严重失调,往往多个软件开发人员才搭配了一个软件测试人员。

总之,软件测试是软件可靠性提高的保障,软件可靠性提高也会反过来促进软件测试的提高和发展。

参考文献:

[1]李晓,等.软件功能测试[M].清华大学出版社,.

[2]李金凤.软件测试与可靠性评估[J]..

软件质量与测试 篇3

关键词:软件质量;软件测试;软件产品

中图分类号:TP311.5 文献标识码:A文章编号:1007-9599 (2010) 09-0000-01

How to Effectively Improve Software Quality in Software Testing

Wu Guofang,Wang Zhongsheng

(Shaoxing Vocational&Technical College,Shaoxing312000,China)

Abstract:Software quality is the soul of software products.Software design,software testing is an effective way to improve software quality.

Improve the quality of software products from the enforceability investment rate of return considerations,to ensure the software quality in a significant way is through effective software testing,to improve the efficiency of software testing.This article show an overview of how software testing to improve software quality from the perspective of software testing.

Keywords:Software quality;Software testing;Software

随着信息技术的快速发展,企事业单位对IT软件的需求越来越强烈,软件质量已成为开发商和用户共同关注的焦点,同时软件项目的规模和复杂程度也在不断增加。对于软件质量管理人员来说,提高软件开发质量的重要手段是把质量管理的理论和方法落实到工作实践中去。

软件质量要达到国家标准软件质量的功能性、可靠性、易用性、效率、可维护性、可移植性等六个方面的要求,就必须对软件开发过程中各个环节进行全过程的质量管理,从需求分析、设计、编码、测试到上线验收进行控制。本人主要是从软件测试工作方面来阐述在测试过程如何确保提高软件质量。

一、必须正确理解用户需求

软件产品质量应该和用户满意度划上等号。考虑一个产品是否满足质量要求就是考虑一个产品是否满足用户的要求。

软件需求需要关注客户和用户。简单的来说,客户是真正能够决定是否购买软件的人,而用户是实际使用软件的人。了解这类区别后,我们可在分析需求的重要性和在产品质量验证的时候根据需要做出不同的权衡。另一方面我们在考虑用户需求的时候,往往只考虑了实际使用软件的人员,而忽略了其它一些人员对软件的要求或对软件造成的潜在竞争,包括维护人员、系统管理人员、软件上下游人员的要求、先前版本的情况、竞争对手的软件情况。为保证软件产品的质量,我们必须准确把握软件需求。软件开发项目的提出,应由迫切的业务需求来驱动。软件项目业务需求的迫切性、技术实现的成熟性、经济效益的可行性等方面的因素,都是软件项目考虑的要素,将对项目的成败产生直接影响。

软件版本管理

目前的软件开发技术更新迅速,开发人员流动频繁,因此对软件版本的管理就显得尤其重要。为了最大限度地满足客户的需要和适应应用的要求,软件在其生命周期中会频繁地被修改和不断推出新的版本,新版本的软件会添加一些新的功能或者在软件功能上产生某些变化。随着软件的改变,以及时间的推移,开发人员对自己机器上的不同版本间的差异就会模糊不清,导致代码版本和现场版本混乱现象。另外可能由于软件开发工期的压力,开发人员只将注意力集中在设计和编码上,未将文档纳入到版本控制中。为了解决这些问题,软件质量监督就要注意跟踪记录整个软件的开发过程。通过应用软件版本管理的工具软件实现对源代码和整个项目的管理,从而建立正常的软件版本管理机制。

二、软件测试

软件测试是保证软件质量的重要方法。软件测试是否充分、有效,直接影响到软件产品的质量。随着软件开发规模的增大、复杂程度的增加,以寻找软件中的错误为目的的测试工作就更加复杂和困难。不足的测试势必使软件带着一些未揭露的隐藏错误投入运行,这将意味着更大的危险让用户承担。为了保证软件的开发质量,软件测试应贯穿于软件定义与开发的整个过程。因此,对分析、设计和实现等各阶段所得到的结果,包括需求规格说明、设计规格说明及源程序都应进行软件测试。对于测试过程的质量来说,应该从以下几个方面来着手:

(一)目标——本次活动要达成什么样的目标(测试标准),什么样的情况下可以开始,什么样的情况可以视为结束?测试通过的准则是什么?在活动策划时这些都应明确下来。

(二)计划——有了目标后,就需要开始定制计划了,要包括测试过程的时间,什么时候开始,什么时候结束,本期要分几次迭代,有几个时间点,可以按照项目的需要制定这个测试过程需不需要裁剪或增加哪些过程的迭代,并且建议在各时间点期间都要经过评审,还有测试所需资源、工具、测试工作所需的配置管理和保证方案、初始的测试策略、任务划分等等。

(三)执行——测试执行期间需要跟踪其执行效率,随时根据需要调整测试策略,以及从缺陷的产生到结束的生命周期管理过程,收集测试过程中产生的各种有效数据,分析并评估问题对用户和系统的影响等等。

(四)检查——对上述过程需要随时跟踪以便于及时发现测试期间发现的问题并着手解决问题。

(五)行动——当测试结束后,需要对测试工作进行分析与总结,测试报告里要有两个方面的分析,一种是对测试产品的质量分析和评估,一种是对测试工作过程自身的分析与评估,因为只有有效的过程才能保证有效的输出结果,同时总结经验与教训,对下一次测试活动的过程进行改进。

总的来说,软件质量、软件测试和配置管理都逐渐被各软件公司重视起来,软件测试的方法、技术和标准都还在探索阶段。国内软件行业普遍规模偏小,缺乏大型软件产品经验,开发过程不够规范,这决定了国内软件质量和测试行业,必须根据国内行业现状,确定软件质量目标和测试策略方法。“软件质量保证并不能够保证软件的质量”,但是我们可以把提高软件的质量作为我们从事软件质量保证工作的目标。

参考文献:

[1]杨缙峰,王晓巍.软件开发的缺陷预防手段.自动化技术与应用.2010,5

[2]郭运宏.对软件测试工作的几点思考.郑州铁路职业技术学院学报,2010,1

作者简介:吴国芳(1978.2-),女,浙江东阳人,硕士,绍兴职业技术学院计算機系讲师,研究方向为软件工程,数据库技术。

软件质量与测试 篇4

随着计算机软、硬件技术的发展, 计算机技术已经渗透到社会各行各业中, 什么都离不开计算机, 而且计算机软件的功能非常强大, 无处不在, 无所不能, 计算机软件也变得多样化、复杂化, 软件运行出现的错误和缺陷的几率越来越大, 为了保证软件的质量, 需要测试人员反复测试论证, 软件测试工作在软件项目生命周期中的重要性日益突出。当前, 我国的软件开发能力比欧美发达国家差不了多少, 主要差距就是软件质量。国外的大型软件开发公司中软件测试人员和软件工程师一般是1:1的比例, 我国目前还不是很规范, 但也正在向这方面靠拢。软件测试在我国越来越趋于标准化科学化, 是一个很有发展前途的职业。

2软件开发与软件测试

通常我们理解的软件开发可能只是程序员通过一定的专业技术, 如编程语言、数据库技术创造出一个新的应用程序。其实软件开发是一个系统的工程, 包括需求分析、设计、编码、测试、维护等等几个环节。软件测试是整个软件开发流程中的一个重要的环节, 主要包括白盒测试、灰盒测试和黑盒测试。白盒测试一般用于单元测试, 需要测试人员对于代码结构有很好的理解, 黑盒测试也就是我们通常说的功能测试, 主要检测软件功能是否满足用户的功能需求。灰盒测试则是界于白盒和黑盒测试之间的一种测试方法。在现代软件开发流程中, 测试工作是贯穿于整个开发流程, 并不是在程序员编码完成以后才开始的。在软件开发前期, 测试人员需要根据用户的需求, 编写测试计划, 准备测试方案, 编写测试用例, 甚至根据业务需要编写不同的测试工具, 为后续的测试工作做好准备。在软件开发中后期, 测试人员需要利用测试工具按照测试方案、测试用例和流程对软件产品进行功能和性能测试。在执行完测试方案、测试用例和流程后, 需要跟踪软件缺陷, 以确保最后开发出来的成果能够真正满足用户的需求, 尽量以最小的代价来发现尽可能多的错误。

在整个软件开发过程中, 软件测试要尽可能早的参与到项目活动中, 最好是项目初期就要界入其中, 这样就可以尽可能早的并且多的发现软件缺陷。如果在软件研发后期发现框架问题, 可能会导致很多功能模块需要返工, 越晚开始, 测试人员对软件的了解就会越少, 就无法深入测试, 可能漏测掉很多重要的功能, 可能会在短时间内发现大量的软件缺陷, 不利于软件的版本稳定。

软件测试不象编程技术那样发展那么迅速, 可参考借鉴的东西非常少, 软件中每一个功能模块的测试方案都需要测试人员多方面的考虑, 所以这意味着测试更需要人的创新能力。验证程序的正确性, 远不象普通人想象的机械重复性的操作那样简单。验证程序的正确性更是需要人们大量的创造性劳动。

3软件测试策略

要做好软件测试工作, 会遇到很多挑战和困难。这就需要我们软件测试人员通过自己专业的知识和想法不断提高自己。通常认为软件测试人员具备的基本素质按重要等级依次是:技术、沟通能力、自信心、责任心、耐心和细心等。

首先技术是基础, 作为测试人员, 测试人员应该比开发人员掌握更多的知识, 在测试过程中, 你必须了解软件的生命周期, 知道什么阶段进行什么类型的测试。

其次是沟通能力, 沟通能力是测试工作顺利进行的保障。在技术基础的保障下, 测试人员必须充分了解用户的需求, 知道哪些问题是软件问题, 能够清楚描述软件出现问题的场景, 最好是知道为什么会出现问题, 最最好是知道如何修复这个问题, 这样的话, 就会更好的与开发人员进行沟通, 测试工作也就会进行的更加顺利。

再次, 测试人员必须有自信, 软件测试是一项技术要求很高的工作, 测试虽然基本不实现编码 (当然, 也会写测试脚本或测试代码) , 但特别要求对系统的整体把握能力。测试其实是很有内容的, 只是目前没有受到足够的重视, 没有被提高到它应有的地位。在技术基础的保障下, 你应该非常自信地进行自己的测试工作, 理直气壮地向开发人员提出软件问题, 并坚持自己的观点, 明确各方责任。最后, 测试工作非常重要, 你担负着软件质量验收责任, 你必须有责任心, 耐心和细心地工作, 争取不放过任何一丝一毫的软件错误和缺陷。

在整个软件测试过程中, 是否能够准确充分的发现足够多的软件错误和缺陷, 软件的测试管理工作非常重要。

第一, 严格遵行测试过程。首先进行需求分析, 了解用户的需求, 并且充分了解软件的测试范围和测试内容, 准备好测试所需要的数据, 然后经过评审, 这一个过程可以避免测试人员对测试需求的理解错误, 遗漏测试内容。其次进行软件测试用例的设计, 明确对每一项功能应该怎样进行测试, 包括选择什么样的测试工具、操作流程、输入数据和输出结果等, 再次评审。这一过程可以避免测试人员选择工具错误, 操作流程或输入数据错误, 遗漏测试内容等。第三个阶段是执行测试用例, 在执行过程中最好详细记录测试结果, 在什么样的输入情况下产生什么样的输出结果, 仔细比对软件原始需求, 确定软件是否发现问题。测试用例执行完毕后, 也需要进行评审, 主要检测测试是否进行充分, 记录是否准确, 软件问题提出是否正确。

第二, 真实模拟客户环境。随着开发技术的不断进步, 诸如多线程, 虚拟化, 大数据量的并发, 安全性, 软件间、不同系统平台间的交互响应这类环境的搭建, 对测试人员来讲都很有挑战。在执行测试前, 我们得尽可能真实的模拟客户的使用环境。这样才能真正的发现软件的缺陷。

第三, 有效验证程序正确性。测试人员要比开发人员考虑更多的东西, 在设计测试用例的时候, 要充分考虑到其他功能以及本功能的关联关系, 要有大局观。需要扎实的软件测试理论, 尽量自己分析问题, 多涉猎一些项目之外的知识.

第四, 积极跟踪软件缺陷。测试不仅仅是发现程序中的缺陷, 更重要的是跟踪解决这些缺陷, 因为只有缺陷被解决了, 软件质量才有可能提高, 我们的成绩才能得以真正的体现。事实确实是这样, 测试人员提交了软件缺陷, 如何说服开发人员修复这个缺陷, 才是关键。只有缺陷被修复, 软件的质量才会提高, 这样才能体现测试人员的工作价值。

4总结

总之, 软件测试是整个软件开发流程中重要并且不可缺少的环节, 做好了软件测试工作, 才能保障软件的质量。

参考文献

[1]朱少民.全程软件测试[M].北京:电子工业出版社, 2007 (09) .

论软件测试在质量保证中的作用 篇5

论软件质量保证与测试

一:我对软件测试的认识:

软件测试是为了发现程序中的错误而执行程序的过程。具体的说,软件测试是根据然间开发个阶段的规格说明和程序的内部结构而精心设计出一批测试用例,并利用测试用例来运行程序,依法向程序错误的过程。

软件测试的目的和意义在于发现程序中的错误,有效定义和实现软件成分由低到高的组装过程,验证软件是否满足任务书和系统定义文档所规定的技术要求,为软件质量模型的建立提供依据,具体说来如下:1确认软件的质量。一方面是确认软件做了你所期望的事情,另一方面是确认软件以正确的方式来做了这个事件;2提供信息。比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息;3软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第3个目的是保证整个软件开发过程是高质量的。

作为软件测试人员,在软件开发过程中的任务就是寻找bug,避免软件开发过程中的缺陷,衡量软件的品质,关注用户的需求,而其最终目标就是:确保软件的质量。

软件测试在软件生命周期中占据重要的地位,在传统的瀑布模布模型中,软件测试学仅处于运行维护阶段之前,是软件产品交付用户1

论软件测试在软件质量中的作用

使用之前保证软件质量的重要手段。近年来,软件工程界趋向于一种新的观点,即认为软件生命周期每一阶段中都应包含测试,从而检验本阶段的成果是否接近预期的目标,尽可能早的发现错误并加以修正,如果不在早期阶段进行测试,错误的演示扩散常常会导致最后成品测试的的最大困难。

软件开发过程可分为:需求,实际,实现和测试4个阶段在开发大型软件系统的漫长过程中,面对纷繁复杂的各种现实情况,人的主观认识和客观现实是之间往往存在差距,开发过程中各类人员之间的交流和配合也往往并不是尽善尽美,所以,在软件生存周期的各个阶段都有可能产生差错。软件测试时对软件规格说明,设计和编码的最后复审,是软件质量保证的关键步骤,因此我们一定要重视软件测试工作。

测试是所有工程学院的基本组成单元,是软件开发的重要部分。自由层序时记得那天起测试就一直伴随着。统计表明,在典型的软件开发项目中,软件测试工作量往往占软件开发总工作量的40%左右。而在软件开发的总成本中,用在测试上的开销要占30%-50%。如果把维护阶段也考虑在内,讨论整个软件生存周期时,测试的成本比例也许会有所降低,但实际上维护工作相当于二次开发,乃至多次开发,其中必定还包含有更多的测试工作。

作为软件测试这个行业,最重要的一件事就是从客户的需求出发,系统的问题越早发现,改正的成本越低,破坏性越小,所以,在系统发布前,要尽量多的把系统的问题找出来,其手段就是有计划,有组2

论软件测试在软件质量中的作用

织的进行充分的测试。系统投产后发想的问题,其危害性被成倍的放大,直接损坏了客户的利益和声誉,同时客户将毫不留情的将板子打在开发商身上,这是开发商费钱费力也可能难以挽回失去的市场。软件测试是软件质量保证的重要手段。二,软件测试的具体方法与测试模型

1、V模型

在软件测试方面,V模型是最广为人知的模型。V模型已存在了很长时间,和瀑布开发模型有着一些共同的特性。V模型中的过程从左到右,描述了基本的开发 过程和测试行为。

V模型优点:在于它非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。

局限性: 把测试作为编码之后的最后一个活动,需求分析等前期产生的错误直到后期的验收测试才能发现.2、W模型

V模型的局限性在于没有明确地说明早期的测试,无法体现“尽早地和不断地进行软件测试” 的原则。在V模型中增加软件各开发阶段应同步进行的测试,演化为W 模型(如下图)。

W模型由Evolutif公司提出,相对于V模型,W模型更科学。

论软件测试在软件质量中的作用

优点:W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。

缺点:W模型和V模型都把软件的开发视为需求、设计、编码等一系列串行的活动,无法支持迭代、自发性以及变更调整。

3、X模型

X模型也是对V模型的改进,X模型提出针对单独的程序片段进行相互分离的编码和测试,此后通过频繁的交接,通过集成最终合成为可执行的程序。

X模型的左边描述的是针对单独程序片段所进行的相互分离的编码和测试,此后将进行频繁的交接,通过集成最终成为可执行的程序,然后再对这些可执 行程序进行测试。己通过集成测试的成品可以进行封装并提交给用户,也可以作为更大规模和范围内集成的一部分。多根并行的曲线表示变更可以在各个部分发生。

优点:X模型定位了探索性测试,这是不进行事先计划的特殊类型的测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现更多的软件错误。

论软件测试在软件质量中的作用

缺点:可能对测试造成人力、物力和财力的浪费,对测试员的熟练程度要求比较高。

4、H模型

H模型中, 软件测试过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段。软件测试可以尽早的进行,并且可以根据被测物的不同而分层次进行。

这个示意图演示了在整个生产周期中某个层次上的一次测试“微循环”。图中标注的其它流程可以是任意的开发流程,例如设计流程或者编码流程。也就是说, 只要测试条件成熟了,测试准备活动完成了,测试执行活动就可以进行了。

H模型揭示了一个原理:软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。H模型指出软件测试要尽早准备, 尽早执行。不同的测试活动可以是按照某个次序先

论软件测试在软件质量中的作用

后进行的,但也可能是反复的,只要某个测试达到准备就绪点,测试执行活动就可以开展。

三.软件测试的重要性及存在的误区

软件测试很重要。

在很多情况下,软件开发人员同用户的思路是完全不同的。开发人员由于接近硬件底层,更多的是从机器的“思维”来考虑问题,而用户只是为了使用。很多软件开发人员抱有这样的思维,认为用户很笨,“你这样用就不会出现错误了!”但事实上,作为一种产品,必须要能够考虑到用户使用的方方面面,并考虑进行各种容错处理。为了记录下用户使用软件的习惯用来提供软件的易用性和发现潜在的问题,微软和国外的很多大型软件开发公司甚至会采用专门的测试房间,用仪器记录用户的使用过程来加以改善使用的界面和出现的问题。

软件测试是软件质量保证的重要手段。有些研究数据显示,国外软件开发机构40%的工作量花在软件测试上,软件测试费用占软件开6

论软件测试在软件质量中的作用

发总费用的30%至50%。对于一些要求高可靠、高安全的软件,测试费用可能相当于整个软件项目开发所有费用的3至5倍。由此可见,要成功开发出高质量的软件产品,必须重视并加强软件测试工作。

国内很多企业还处在探索阶段,小企业的运作方式造成主要精力是要尽快完成初始资本积累。有些企业也了解软件测试的重要性,很努力、很认真地学,但因为很多原因而学不到精髓,不知道如何去做。于是只能局限于书本上学来的简单测试方法而已。即便有些人知道有压力测试和性能测试等测试方法,但如何针对产品实施并不清楚。

软件测试存在的误区:

(1)误区之一:软件开发完成后进行软件测试

人们一般认为,软件项目要经过以下几个阶段:需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。据此,认为软件测试只是软件编码后的一个过程。这是不了解软件测试周期的错误认识。软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。因此,软件测试贯穿于软件项目的整个生命过程。在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。软件开发与软件测试应该是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试。如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,如果要修复该类错误,将会耗费大量的时间和人力。

(2)误区之二:软件发布后如果发现质量问题,那是软件测试人员的错

这种认识很打击软件测试人员的积极性。软件中的错误可能来自软件项目中的各个过程,软件测试只能确认软件存在错误,不能保证软件没有错误,因为从根本上讲,软件测试不可能发现全部的错误。从软件开发的角度看,软件的高质量不是软件测试人员测出来的,是靠软件生命周期的各个过程中设计出来的。出现软件错误,不能简单地归结为某一个人的责任,有些错误的产生可能不是技术原因,可能来自于混乱的项目管理。应该分析软件项目的各个过程,从过程改进方面寻找产生错误的原因和改进的措施。

论软件测试在软件质量中的作用

(3)误区之三:软件测试要求不高,随便找个人做都行

很多人都认为软件测试就是安装和运行程序,点点鼠标,按按键盘的工作。这是由于不了解软件测试的具体技术和方法造成的。随之软件工程学的发展和软件项目管理经验的提高,软件测试已经形成了一个独立的技术学科,演变成一个具有巨大市场需求的行业。软件测试技术不断更新和完善,新工具,新流程,新测试设计方法都在不断更新,需要掌握和学习很多测试知识。所以,具有编程经验的程序员不一定是一名优秀的测试工程师。软件测试包括测试技术和管理两个方面,完全掌握这两个方面的内容,需要很多测试实践经验和不断学习精神。

(4)误区之四:软件测试是测试人员的事情,与程序员无关开发和测试是相辅相成的过程

需要软件测试人员、程序员和系统分析师等保持密切的联系,需要更多的交流和协调,以便提高测试效率。另外,对于单元测试主要应该由程序员完成,必要时测试人员可以帮助设计测试样例。对于测试中发现的软件错误,很多需要程序员通过修改编码才能修复。程序员可以通过有目的的分析软件错误的类型、数量,找出产生错误的位置和原因,以便在今后的编程中避免同样的错误,积累编程经验,提高编程能力。

(5)误区之五:项目进度吃紧时少做些测试,时间富裕时多做测试

这是不重视软件测试的表现,也是软件项目过程管理混乱的表现,必然会降低软件测试的质量。一个软件项目的顺利实现需要有合理的项目进度计划,其中包括合理的测试计划,对项目实施过程中的任何问题,都要有风险分析和相应的对策,不要因为开发进度的延期而简单的缩短测试时间、人力和资源。因为缩短测试时间带来的测试不完整,对项目质量的下降引起的潜在风险,往往造成更大的浪费。克服这种现象的最好办法是加强软件过程的计划和控制,包括软件测试计划、测试设计、测试执行、测试度量和测试控制。

(6)误区之六:软件测试是没有前途的工作,只有程序员才是软件高手

由于我国软件整体开发能力比较低,软件过程很不规范,很多软件项目的开发都还停留在“作坊式”和“垒鸡窝”阶段。项目的成功往往靠个别全能程序员决定,他们负责总体设计和程序详细设计,认为软件开发就是编写代码,给人的印象往往是程序员是真正的牛人,具有很高的地位和待遇。因此,在这种环境下,软件测试很不受重视,软件测试人员的地位和待遇自然就很低了,甚至软件测试变得可有可无。随着市场对软件质量的不断提高,软件测试将变得越来越重要,相应的软件测试人员的地位和待遇将会逐渐提高。在微软等软件过程比较规范的大公司,软件测试人员的数量和待遇与程序员没有多大差别,优秀测试人员的待遇甚至比程序员还要高。软件测试将会成为一个具有很大发展前景的行业,软件测试大有8

论软件测试在软件质量中的作用

前途,市场需要更多具有丰富测试技术和管理经验的测试人员,他们同样是软件专家。这两年来国内软件测试人员的需求不断增大,越来越多的IT企业认识到了软件测试的重要性。

四,软件质量保证与测试课程对我的帮助

软件测试方法的分析与研究 篇6

【关键词】软件测试;测试方法;黑盒测试

【中图分类号】TP306 【文献标识码】A 【文章编号】1672-5158(2013)03-0026-01

随着软件产业的迅速发展,软件产品的质量已成为软件企业生存与发展的关键。软件缺陷自软件诞生的那一日起就跟随着出现,软件测试就应运而生。随着软件内容和结构的不断丰富,软件缺陷也日趋多样化,引起更为严重的质量问题。软件测试方法的研究正是本着提高软件质量,降低软件缺陷的影响。随着人们对软件质量的重视,软件测试也不断得到加强和持续发展。

1、软件测试的定义

软件测试应该是以查找软件缺陷为目标的一种过程,测试用例设计和缺陷管理是软件测试中提高缺陷查找效率和缺陷处理效率的两个有效手段。软件测试依靠的是强大的逻辑和条理性来完成工作,也同时存在着一定的风险。软件的应用形式多样,输出和实现功能的方式也不止一种,而产品设计中缺乏客观的标准,就使得软件缺陷的标准也变的多样,没有任何一种方式能够对软件进行完全测试。这样,就无法通过软件测试显示隐藏的软件缺陷,只能尽量查找软件缺陷,找到的软件缺陷越多,说明软件本身的缺陷就越多,同时尚有在测试过程中被发现和断定的缺陷,这也是软件测试的局限性。

2、软件测试的基本方法

软件测试过程包含几个阶段:测试需求的分析和确定;测试计划;测试执行;测试记录和跟踪;回归测试;测试总结和报告。狭义的测试是指在代码编写完成后对代码进行测试,而广义的测试开始于需求阶段,伴随着设计、实现阶段。如测试需求规格说明书,测试设计框架等。可以从不同角度来划分软件测试方法。

2.1静态测试和动态测试

软件测试从是否需要执行被测软件的角度,可以将软件测试分为静态测试和动态测试。静态测试是指依据需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行,对软件进行分析、检查和测试,不实际运行被测试的软件,约可找出30%到70%的逻辑设计错误。这种方式不通过程序运行就能够寻找代码中的缺陷或对程序中的代码进行评估,可以由人来操作,发挥了人的逻辑思维的优势或测试经验,能够批量性地发现问题,并直接定位到缺陷或错误的具体位置。静态测试可以分为静态分析和代码走查。静态分析是一种计算机辅助静态分析方法。主要对程序进行控制流分析、数据流分析、接口分析和表达式分析等。静态分析的对象是计算机程序,程序设计语言不同,相应的静态分析工具也不尽相同。代码走查是一种人工测试方法,它一般依靠有经验的程序员根据需求分析、设计规格等来执行。动态测试是指通过运行软件来检验软件的动态行为和运行结果的正确性。动态测试有两个基本要素:被测试程序和测试数据。

必须生成测试数据来运行被测试程序,取得程序运行的真实情况、动态情况,进而进行分析测试质量依赖于测试数据。

2.2黑盒测试、白盒测试、灰盒测试

从测试是否针对系统的内部结构和具体实现算法来看,可以将软件测试分为黑盒测试、白盒测试、灰盒测试。

黑盒测试又称功能测试,数据驱动的测试或者基于规格说明书的测试。黑盒测试可以从软件的功能为起始,根据功能的需求说明测试所用的方式,并依据该方式的需求来运行被测试的程序。从名字上来解释,就是将软件看成是不透明的黑盒子,对于盒子内部的结构不理会,只关注软件的实用功能,并对这些功能进行测试。

白盒测试又称结构测试,玻璃盒测试或基于覆盖的测试。相比较于黑盒测试,它更关注于软件内部逻辑结构,其测试的重点是测试用例的覆盖程序结构的程度。白盒测试,是将软件比作透明可见的盒子,测试人员可以根据程序内部的逻辑结构来设计测试用例,来测试程序的逻辑路径。

灰盒测试,也称跟踪法测试,是指介于白盒测试和黑盒测试之间的一种测试方法,它关注输出对于输入的正确性,同时也关注内部结构形式的程度,它跟踪程序的运行过程,特别是输入数据在程序中的“流程”。比如,测试人员输入数据后,软件会将其转换为代码并通信至服务器,服务器经过一系列的处理,将数据传送给客户端,并最终显示给测试者。灰盒测试能够对整体的过程进行追踪,对每一步的数据进行测试。。但较白盒测试而言,灰盒测试没有深入解析程序的结构,但也不像黑盒测试那样只关注输入和输出,它也关心程序中间的某些流程是否正确。

3、软件测试用例设计

传统软件测试用例设计是从软件的各个模块的算法细节得出的,而面向对象的软件测试用例则着眼于适当的操作序列,以实现对类的说明,主要有基于故障的测试、基于脚本的测试和类层次的分割测试等形式。

3.1基于故障的测试

软件系统最终是以实现用户的需求为目的的。基于故障的测试是从模型分析开始,逐步来测试软件可能发生的故障,为了确定故障的类型和存在方式,一般设计用例去执行代码。基于故障的测试核心问题是测试者怎么来判定错误的性质。“可能的错误”可以是意料之外的结果,不正当的操作,错误的引用等。如果是操作不当引起的错误或故障还需要对操作进行检查,排除操作因素引起的故障。这种方法除用于操作测试外,还可用于属性测试,确定其对于不同类型对象行为是否赋予了正确的属性值。

3.2基于脚本的测试

基于脚本的测试主要关注用户的需求,并从用户任务中找出用户要做什么及去执行。这种基于脚本的测试有助于在一个单元测试情况下检查多重系统,所以基于脚本用例测试比基于故障测试更实际也更复杂。

3.3类层次的分割测试

类层次的分割测试可以减少用完全相同的方式检查类测试用例的数目,这与传统测试中的等价类划分测试很相似。类层次的分割测试主要分为:基于状态的分割,按类操作是否改变类的状态来分割;基于属性的分割,按类操作所用到的属性来分割;基于类型的分割,按完成的功能分割。

4、结语

软件设计中出现的缺陷是无法完全消除的,却可以通过软件测试来降低缺陷的发生,随着市场对软件质量要求的提高,软件测试在软件开发中的地位越来越重要。软件测试的最终目的不是为了找出软件设计中的错误和故障,而是通过测试来发现缺陷,找出缺陷的分布特征和出现的规律,以期在新的开发项目中寻找更优的方式来避免缺陷的出现,改进设计结构,同时也能够通过设计有针对性的检测方法,改善软件测试的有效性。

参考文献

[1]侯衍龙.基于UML的面向对象建模技术与应用[D].南京,南京航空航天大学,2002

软件质量与测试 篇7

随着武器装备的信息化程度不断提高, 软件的“核心地位”和“中枢神经”作用也日益突出。统计数据显示, 现代武器装备90%以上的功能通过软件实现, 军用软件正呈现出多样化、复杂化和智能化等特点, 在提升信息能力方面扮演着越来越重要的角色, 其质量直接影响着军事指挥和武器装备作战效能的发挥。为确保军事装备能够最大限度地发挥其作战效能, 提高军用软件质量管理水平已经成为一项十分紧迫的任务。

软件测试是提高软件产品质量的有效手段, 从20世纪70年代就在软件行业得到广泛应用。目前, 软件测试已发展成为一个独立的专业学科。根据有关数据, 通过使用正确的软件测试方法, 软件产品的缺陷数至少降低80%。在微软等大型软件公司, 软件测试人员与程序员的比例为1:1, 甚至达到2:1。

为了规范军用软件测试工作, 1995年总装备部就发布了《GJB 2423军用软件测试与评估通用要求》军用标准, 2004年又更新为《GJB 141军用软件测试指南》, 明确了军用软件测试的内容、方法、程序和要求, 有效的保证了军用软件的质量。但随着军用软件开发规模不断扩大、应用范围不断增加, 对软件质量管理提出了新的挑战, 对软件测试工作提出了新的要求。

2 军用软件测试存在的主要问题

目前, 随着军用软件种类、功能和复杂性的增加, 软件测试在各开发单位越来越受到重视, 对确保军用软件质量、提高软件可靠性起到了积极的促进作用。但由于大部分开发单位的软件测试起步较晚, 测试技术落后, 专业测试人员匮乏, 测试管理不完善, 与军用软件质量管理的要求还有较大差距, 存在许多亟待解决的问题。

(1) 对软件测试的认识不充分, 简单的将软件测试等同于验收测试。软件测试是一个贯穿于整个软件开发过程的系统工程, 测试工作应在需求分析和系统设计阶段就开始展开。但部分开发单位的软件测试工作是在编码完成之后和软件产品交付运行之前进行, 主要针对成型软件产品开展验收测试, 无法及时发现软件单元和组件内部的错误, 并且发现错误返回修改的代价也相当高昂。有关数据表明, 如果在验收阶段才发现内部错误, 其修改代价是单元测试阶段发现错误的300到400倍, 并且许多错误还会因修改代价过高而被有意忽略, 从而带来更大的隐患。

(2) 软件测试管理的水平不高、随意性大, 专业管理人员紧缺。有关数据显示, 软件测试成本已占到软件开发总成本的40%以上, 并且应在软件开发的初期就进行测试设计, 剪裁测试标准, 制定测试计划, 规范测试流程, 明确测试重点, 分配测试资源。因此, 高水平的测试管理人员是决定测试工作效果的关键因素。由于目前各单位普遍缺乏专业测试管理人员, 测试工作普遍缺乏系统分析和整体设计, 测试人员往往根据自己的理解和经验来决定取消或增加测试的步骤, 并且测试管理人员也不能明确当前测试进行的状态, 给测试工作带来了极大的随意性和不确定性。

(3) 测试技术和测试手段单一, 缺少自动化测试工具。先进的测试技术和自动化的测试工具能够有效提高测试的质量和效率, 这也是确保软件质量的重要条件。受经费投入的限制, 绝大部分单位主要采用人工测试的方法, 测试效率低、覆盖率有限, 无法充分发现软件中存在的问题和错误。缺乏自动化的测试数据管理工具, 对测试过程中发现的软件缺陷缺少数据库管理手段, 不能对发现问题及时进行统计、分析和处理, 导致新旧问题混杂, 问题修改后也无法及时进行验证, 软件质量无法保证。

3 对策与分析

军用软件测试是一项跨部门、覆盖多学科、涉及多技术领域的复杂系统工程。要有效解决存在的困难和问题, 就必须根据软件项目的自身特点, 运用系统工程方法, 建立综合解决方案。

3.1 推进软件测试队伍专业化建设

要根据软件测试的专业特点, 建立以专业人员为骨干的软件测试队伍, 负责从需求分析到交付用户的全寿命周期测试组织与管理工作。要随着软件生命周期各阶段的转换, 及时调整软件测试人员组成。在需求分析阶段, 测试人员应由项目管理者、系统分析员和软件测试管理者参加, 负责对软件的需求进行审查, 确保需求的正确性;在系统设计阶段, 测试人员应由项目管理者、系统分析员、系统设计员和测试管理者参加, 对软件的体系结构、功能结构和数据结构等进行审查, 确保设计的正确性;编码阶段则由测试管理人员、程序员和测试人员组成;最后的验收阶段则全部由测试人员组成。

3.2 加强专业测试手段应用

测试手段包括测试工具和测试方法两部分, 采用先进的软件测试手段是提高军用软件测试工作质量和效益的根本途径。在测试工作中, 要根据不同的系统架构采用相应的测试工具。例如对于B/S结构应选择对客户端并发操作、网络性能和服务器端数据库压力进行测试的工具, C/S结构应选择对分布式事务的处理逻辑、系统输入边界条件等进行测试的工具。同时, 还要根据不同系统要求采用相应的测试方法。例如, 对于安全和抗毁性较高的作战软件就要加强对系统的恢复性测试、安全性测试和强度测试;对于实时性、界面友好型要求较高的仿真训练软件就要加强网络通信测试和UI界面测试。软件测试要贯穿问题定义与规划、需求分析、软件设计、程序编码、运行维护等软件生命周期全过程。通过利用专业测试工具对软件生命周期的各阶段所形成的体系结构模型、功能结构模型、业务流程模型和数据流程模型等以形式化的方法和工具进行模型检测, 尽早地发现需求和设计中的错误, 不仅可有效提高软件质量, 还可大大减少软件开发成本。

3.3 大力建设专业软件测评中心

在软件测试过程中, 测试人员自身素质和测试工具质量将直接影响软件产品质量。受单位规模和经费所限, 绝大部分军用软件研制单位无法建立专业的测试人员队伍, 也无力承担昂贵的专业测试软件。软件测评中心作为从事软件测评工作的第三方专业机构, 具有专业化程度高、工作效率高、过程管理水平高的显著优势, 可以建设高质量的测评管理体系、专业化的测评人员队伍和高水平的软硬件测试环境, 不仅可以承担各类测试任务, 还可指导协助各软件开发项目组开展测试工作。因此, 各单位可以从自身情况出发, 建设本单位的软件测评中心或专业软件测评中心开展合作, 提高软件测试工作的专业化、正规化水平, 有效评价软件产品的质量情况, 满足军用软件产品质量管理的要求。

4 结束语

在军用软件质量管理工作中, 软件测试是软件质量保证必不可少的重要手段。随着军用软件质量管理要求的不断提高, 软件测试工作也要不断改进工作方法, 提高工作标准, 才能满足未来军用软件开发的需求。

参考文献

[1]尹平, 许聚常, 张慧颖, 软件测试与软件质量评价[M], 北京:国防工业出版社, 2008.

[2]刘易斯, 维拉皮莱.软件测试与持续质量改进[M].陈绍英译.北京:人民邮电出版社, 2008.

[3]单锦辉, 姜瑛, 孙萍.软件测试研究进展[J].北京大学学报 (自然科学版) , 2005, 41 (1) :134-145.

[4]Myers G J.软件测试的艺术[M].王峰, 陈杰译.北京:机械工业出版社, 2006 (01) .

[5]Harrold M J, Testing:a roadmap[M].ICSE-Future of SETrack, 2000:61-72.

软件质量与测试 篇8

从第三方出发, 在整个软件生命周期中对软件工程过程及阶段产品进行监督和检查, 来确保软件质量符合用户需求, 是软件质量保证的目的所在。软件质量保证可以减少并纠正实际软件开发过程或产品与预期的不符, 向软件人员提供反映软件质量的信息和数据, 提高项目进展的透明度, 辅助工程组取得高质量的软件产品。

目前, 国内外备受关注的软件质量保证体系有ISO9000认证、CMM/CMMI认证等。ISO9000是国内任何行业参与国际化竞争的通用标准, ISO9000-3是软件行业的指南, 可作为软件企业发展过程改善框架, 主要面向合同环境, 站在用户立场对质量要素进行控制。CMM侧重于软件开发过程中的管理及工程能力的提高, 主要从软件组织内部过程的逐步改善入手, 为软件企业提供一个过程管理和过程改善的基础, CMM在ISO9000-3的基础上强化了具体过程, 更能够帮助软件企业改进和优化管理, 实现软件生产的工程化。

依据认证标准努力提升企业竞争力, 在认证等级上面步步上升是一个企业的发展方向与奋斗目标, 而获得成功晋级的本质要求还是在软件质量产品及其生成上面多下功夫, 即应该从软件生产的整个过程出发, 在开发、测试、质量控制等各方面进行严格的限制与管理。在开发阶段能否体现质量保证体系的要求主要表现在编码是否规范化, 如设计模式与惯用法的引入;测试阶段能够有助于质量保证体系的实现主要表现在能否进行更加完善高校的测试, 如可靠性测试;质量控制过程能否做到质量保证主要取决于质量控制方法与控制技术的应用, 如风险管理与目标问题度量, 全面质量控制模型等。三个方面有机结合可以使质量保证体系更加系统更加完善, 可以发动团队各层人员协同进行质量保证, 而非仅仅是SQA的单方面努力。

规范编程、可靠性测试、质量控制三方面协同开展质量保证, 即本文提出一种基于“编码-测试-控制”三方为一体的协作式质量保证, 下面分别就三个方面展开论述。

2 强化规范编程, 巧妙引入惯用法

规范编程是程序设计的基本要求, 是有效开发的前提, 是产品质量保证的基础, 是协作式质量保证的首要环节。编程阶段可以充分发挥开发人员的责任感与工作热情, 强化规范编码的要求, 加强规范编程的培训。系统化程序设计项目, 需要较高的代码可读性与代码的健壮性, 充分发挥面向对象的抽象化、层次化、多态性、封装性、继承性等优势, 同时要加强代码的依赖性管理, 因此, 规范编程不仅要从常规的规范要求做起, 也要引入做好依赖性管理的规则与方法。

2.1 基本的编程规范

常规的编程规范要求可以从命名规定、注释规范、编程风格等各方面, 如表所示。

2.2 设计规则与模式

对于代码处理好依赖性管理就要处理好设计规则与设计模式的使用, 常用设计规则与设计模式如表2所示。

例如:面向对象的可复用设计的开闭规则 (OpenClosed Principle, OCP) , 该设计规则的本质在于设计一个模块的时候, 通过抽象化与封装使这个模块在不被修改的前提下进行扩展。其优势在于软件系统有一定的适应性、灵活性、稳定性与延续性, 这样就保证了系统的可复用性与可维护性。Factory Method定义一个用于创建对象的接口, 让子类决定将哪一个类实例化。

总之, 编码阶段作为软件过程的基础阶段, 直接决定了软件的本质属性, 作为协作式软件质量保证的第一步, 需要加强编码规范的培训, 处理好依赖性管理, 灵活使用惯用法及设计模式。

3 加大测试力度, 适量强化可靠性测试

在对软件工程进行系统的传统软件测试基础之上, 基于软件质量的提高与过程的改善引入软件可靠性工程, 软件可靠性工程是以保证和提高软件可靠性为目标, 采取系统化的技术, 通过工程化方法加以实施并对其过程进行工程化管理的过程技术, 软件可靠性工程的基本内涵可概括为软件可靠性的度量, 软件可靠性的分析与设计, 软件可靠性的测试与验证, 软件可靠性管理。

软件可靠性测试是指为了满足用户对软件的可靠性要求, 通过对软件进行测试发现并纠正软件中的缺陷, 提高软件的可靠性水平并验证它能否达到用户可靠性要求的一种软件测试方法。包括软件可靠性增长测试和软件可靠性验证测试。

软件可靠性增长测试目的是为了发现程序中影响软件可靠性的故障, 并排除故障实现软件可靠性增长。软件可靠性验证测试目的是为了验证在给定的统计置信度下, 软件当前的可靠性水平是否满足用户的要求。两者都是基于操作剖面形成测试数据展开测试, 其流程图如图1所示。可靠性增长测试应用于软件系统测试阶段的末期。可靠性验证测试应用于软件验收阶段。

总之, 测试阶段不仅仅要通过bug的查找与排除来提高软件质量, 也要重视软件其他特性的保证, 尤其软件可靠性保证, 因此应该引入软件可靠性测试完善协作式质量保证的第二个环节。

4 全面质量控制, 高效使用控制技术

SQA人员既要检查过程是否符合规范, 还要制定质量管理计划、实施“过程检查”与“技术评审”, 参与开发与测试, 跟踪缺陷, 改进过程等。引入日式的全面质量控制 (TQC) 或美国式全面质量管理 (TQM) 强调对质量的全面性和全过程的质量控制。美国式全面质量管理 (TQM) 类似于TQC, 是一种基于顾客需求与期望驱动的管理理念, 以质量为中心, 建立在全员参与基础之上的一种管理方法, 其目的在于长期获得顾客满意以及组织成员和社会的利益。从TQC到TQM, 已经将质量管理目标从追求企业最大化利益转移到体现企业的社会责任。

用于软件质量控制的一般性方法包括目标问题度量法、风险管理法、PDCA质量控制法等。由质量管理专家戴明提出的PDCA之一种科学的工作程序, 即“P (plan) 计划—D (do) 实施—C (check) 检查—A (action处理”这样一个循环过程。四个阶段迭代循环, 没有终点只有起点。通过这样的循环能够提高产品、服务或工作质量。

对于大型软件项目的开展, 全面质量管理具有举足轻重的作用, 它强调以产品质量为核心, 通过企业中所有部门全部成员协作, 将管理方法、控制技术等引入质量保证体系, 从而想用户系统满足需求的产品。

总之, 软件质量控制作为质量保证的主要环节需要从编码、测试环节入手, 加强控制方法与测试方法的结合、控制技术与编码方法的协作, 全面开展质量控制。

5 协作式软件质量保证

基于“编码-测试-控制”三方面的协作式软件质量保证, 从软件过程出发, 表现在人员协作, 过程协作, 方法协作。

人员协作:SQA不应该仅仅包括软件质量保证小组及部分测试人员, 而应该以责任感要求项目组每位成员, 做到质量第一, 各尽其职, 协同工作。基于“编码-测试-控制”的协作式软件质量保证可以实现人员上面的高效协作。

过程协作:ISO/EIA 12207提出, 软件生命周期过程包括主要过程、支持过程、组织过程。主要过程包括获取过程、供应过程、开发过程、运行过程、维护过程支持过程包括文档编制过程、配置管理过程、质量保证过程、验证过程、确认过程、联合评审过程、审核过程、问题解决过程等;组织过程包括管理过程、基础设施过程、改进过程、培训过程等。基于“编码-测试-控制”的协作式软件质量保证提出将以上各项过程协调开展, 共同完成质量保证。

方法协作:编码、测试、控制均有其经得起验证的有效方法策略, 比如编码方面的命名规则、惯用法及设计模式使用, 测试方面的白盒测试技术与黑盒测试技术及可靠性测试等, 控制方面的控制技术、容错技术、复用技术等。基于“编码-测试-控制”的协作式软件质量保证强调将不同方法之间的协作, 全面进行质量保证。

基于“编码-测试-控制”三方面的协作式软件质量保证, 可以组成一个稳固的质量保证正三角, 编码、测试、控制分别为相互交叉的三条边, 同时从人员、过程、方法三个维度着力, 协同作业, 共同保证产品的质量。如图2所示。

6 结束语

规范编码是基础, 深入测试是关键, 全面控制是保障, 三方有机结合发动工程组所有成员协作开展全面软件质量保证。质量控制与质量保证不能等同, 但是通过质量控制和质量度量可以很好的对软件状况进行评估与预测, 同时进行控制改进。可靠性测试, 是对软件可靠性度量、验证、预计的有效测试方法, 有待于进一步的研究与推广应用。规范编程从开发者的角度, 再次强调代码的可读性与健壮性的重要性, 是软件质量保证的基础, 需要强化管理与要求。总之, 软件质量保证体系不是一个封闭的系统, 需要编码, 测试, 控制等多方面的参与, 通过系统化的协同工作才能够更好完成其内在的任务与职责。然而, 实现协同工作还需要进一步探究与实践, 也是一项值得开展后续研究的课题。

摘要:本文从传统软件质量保证分析入手, 针对软件质量保证的目的, 提出基于“编码-测试-控制”三位一体的协作式软件质量保证理念。接着, 从编码、测试、控制三个环节展开分析, 强化规范编程巧妙引入惯用法, 加大测试力度适量强化可靠性测试, 全面质量控制高效使用控制技术, 通过三个阶段多方面协作开展软件质量保证。

关键词:规范编码,可靠性测试,全面控制,协作式质量保证

参考文献

[1]孙中华.MC公司软件质量管理研究[D].西北农林科技大学.2013.5

[2]高翠芬.刍议软件质量保证[J].电子技术与软件工程.2013.10

[3]徐敏.基于CMMI的A公司软件测试管理研究[D].中央民族大学.2013.5

[4]刘逻.软件可靠性设计技术应用研究[D].中国科学院研究生院.2013.5

[5]秦航, 杨强.软件质量保证与测试[M].北京:清华大学出版社.2012.1

软件测试技术与测试管理研究 篇9

在计算机行业,为了保证软件产品的质量,就需要对软件的运行过程进行控制,同时在软件开发过程之中以及在被投入使用之前,都需要对软件进行多次的检测,保证在软件开发过程中就发现问题,解决问题,防止软件安全漏洞,将最好的成果展现给客户。目前,形式性的方法和软件正确性的证明都还不是使用较多的实用性方法,因此,在相当长的一段时期之内,软件测试仍然是保证软件质量的有效方法。软件测试的工作量很大,根据有关统计,一些要求较高的正规软件,用于软件测试的时间甚至占据了软件开发时间的一半以上。并且软件测试的许多操作都是重复性的、非智力创造的。因此,在针对这些操作进行检测时,就可以运用计算机的自动化技术,这样既可以提高软件开发团队的开发效率,也可以促进自动化技术的发展。

1 关于软件测试管理

在软件测试的过程之中,为了保证软件测试的各项工作能够安全有序地进行,就要对整个测试过程进行有效的干预或管理。在这个过程中,就形成了规范化的软件测试管理方案及技术。测试管理工作在各个阶段都有所体现,包括了各阶段的测试计划、具体测试案例、管理测试流程,并且对结果进行跟踪记录,最后将软件测试的结果反馈给软件开发公司或管理者。其间,测试管理人员如发现软件的任何错误或漏洞,首先必须记录在案,然后对软件漏洞进行跟踪,寻找漏洞生成的原因,并提出解决方案,在一系列的事情完成之后,统一整理成报告,上交给软件开发的管理者审阅。其目的是最大限度地将软件错误减少到最小,保证软件的可靠性。当然,在软件测试管理过程中,如果没有相应的辅助工具,仅仅依靠人工进行处理,可以说是不现实的。下文会继续简述软件开发行业常用的测试管理技术。

2 我国软件测试管理工具研究现状

目前在我国使用较为普遍的是i-Test管理系统,属于中科软科技股份有限公司研发;还有Test Center管理系统,属于上海泽众软件科技有限公司研发。以下就比较完善的i-Test管理系统为例,简述软件测试管理系统的功能特点。

大部分的软件测试管理系统都可以有效地提高软件测试的工作效率,从而极大地降低工作人员的工作负担,并且有利于加强管理层的监督,协调软件测试过程的能力。其最终目的是保证软件的质量,减少成本,i-Test管理系统的功能特点有以下几点。

2.1 运用B/S结构

B/S结构的主要特点在于其可以有效地安装在网络服务器上,这样做的作用是保证相关软件测试的人员可以无论何时何地,通过互联网登录正规工作软件,输入软件测试相关工作人员独特的账号和密码进行查询,为工作人员的工作带来了很大的便利,也大大地较少了人员集中造成的错误和麻烦。

2.2 资源共享

在软件测试管理过程中,软件开发负责企业会提供以往测试用例数据库资料和软件缺陷的数据库,并且负责软件开发的相关技术人员可以申请访问权限,从而共享和使用这些资料。通过对以往软件管理成功经验的吸取以及对失败经验的反思,才能进一步开发出优质的软件,提高软件测试技术,并且提高软件测试管理水平。

2.3 提供相应的自动化功能

软件测试的过程是一个涉及面广且比较复杂的过程,其中难免会有一些重复、无须智力创造的测试步骤。在实际软件测试的过程中,如果这些步骤全部依赖于相关项目人员,则会大大增加工作人员的负担,导致出错。而自动化功能则能代替人工去处理简单的重复、无须智力创造的步骤,可以实现高效率的编写,运行,查询测试用例;在编写软件测试缺陷报告时,能够快速地填写并且修改、查询相关资料,协助分析缺陷原因;另外还能够自动化计算软件研发的进度,输入相关数据自动生成所需的统计图表,还能进一步测试文档的模板,传送到工作电脑中进行排版并打印出来。总之,自动化功能极大地减轻了工作人员的负担,提高了工作效率。

2.4 改善测试过程中存在的缺陷

针对软件测试过程中存在的缺陷,并将其分为6个周期进行详细记录,跟踪、管理每个软件缺陷的研发过程,直到提出解决缺陷的建设性意见,并且按照严重的程度,逐一进行解决。

2.5 加强工作人员的沟通

所有的相关人员随时可以查看相关测试文档、成功用例、缺陷的信息以及测试图表,并且随时可以参与软件的讨论,提出自己的意见。这样也增强了工作人员的团队协作精神,创造了良好的工作氛围。

2.6 加强了软件测试管理的透明度,提高了管理层的监控

软件开发的管理者能对软件测试的过程进行动态的检测,如果发现问题,其有权利协调软件调试的过程。

3 相关的软件测试技术与测试工具

软件测试的核心是测试用例,测试用例的重要性在于其质量与测试的效率息息相关,并且具有良好的发现问题的能力,因此,在软件测试管理的过程中,对测试用例的管理是最核心的功能,而软件测试管理工具则需要协助测试用例的编写。常用的测试软件的方法有黑盒实验、白盒实验、灰盒实验。

3.1 黑盒实验

一般来说,软件的黑盒实验是在软件的接口处进行,即在外部进行,不考虑内部的特征和逻辑结构。这种方法就相当于将测试的对象看成是一个黑盒子,相关工作人员只需按照说明,检查软件的功能是否符合软件的说明介绍。黑盒实验的主要目的包括以下几个方面:

(1)是否存在错误或者遗漏的功能。

(2)在测试对象的接口处,输入的信息是否能被接受,接手之后能否输出正确的信息。

(3)是否存在数据结构方面的错误,或者访问权限错误。

(4)检查软件性能上能否满足客户要求。

在使用黑盒实验时,需要注意要通过制定测试用例起到对软件测试的指导作用,保证软件测试能够有计划、有目的、有条不紊地进行。还有一点就是,在黑盒实验过程中,必须加以量化,只有这样,才能真正提高软件的质量以及客户满意度。在计算机行业,具体的黑盒实验具体量化的方法包括:等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交实验设计法、功能图法、特点图法等。

3.2 白盒实验

与黑盒实验不同,软件的白盒实验主要是对软件的细节作细致的检查。这种方法就相当于把盒子打开,让盒子里的东西展现在人们眼前,由此让工作人员了解到软件的内部逻辑结构以及相关的信息,并且可以利用这些信息,设计或选择测试用例,同时对程序中所有的逻辑路径进行测试。最后通过在不同的检查点检查程序状态,确定实际的状态是否与预期中的状态一致。

白盒实验的主要功能有:

(1)在所有的软件程序中,对于独立的软件路径,每条路径至少测试一遍。

(2)对于所有的关于逻辑的判定,取“真”和取“假”的情况至少都要测试一遍。

(3)对于循环的边界或者是运行的界限内,则选择执行循环。

(4)测试软件内部结构的数据有效性。

白盒实验的具体测验方法有静态结构分析法、代码检查法、静态质量度量法、逻辑覆盖法、基本路径测试法、符号测试、域测试、程序变异等方法。

3.3 灰盒实验

所谓灰盒实验,即是介于白盒实验与黑盒实验之间的,同时具备两者的功能。也就是说,灰盒实验既关注接口处输入以及输出信息的正确性,同时也关注内部结构的逻辑性和联系性。灰盒实验不像白盒实验般详细和完整。只是通过一些特征性的现象来判断内部的运行情况。但有时候灰盒实验又是必需的,特别是在黑盒实验检验表示不存在问题,但是软件又不能正常运行时,这时候如果进行白盒实验,则工作量比较大,但是如果先进行灰盒实验,可能会发现问题,提高检测效率,也就是分担白盒实验的工作效率。

4 软件测试管理工具设计

软件测试管理系统采用的是浏览器/服务器,B/S三层软件体系结构,其中B/S结构是随着互联网技术的发展兴起的,在B/S体系结构下,客户界面可以通过WWW浏览器实现。其有一部分的逻辑结构是在前段体现的,但是主要部分的逻辑结构是在服务器端实现的。

浏览器/服务器,B/S三层结构主要是利用浏览器技术,同时结合浏览器的多种语言,在这个过程中,仅仅使用浏览器就完成了以往多种复杂操作才能实现的功能,从而大大地减少了软件开发成本。

5 结语

近年来,伴随着计算机技术的快速发展,人们对软件的要求也越来越高。本文探讨了一些软件测试的常用实验方法,能够有效地测试软件的可靠性,保证软件的实用性和精确性。同时对软件测试管理方法也有了大概的认识,可以说,在一款软件的开发过程中,对软件的测试是非常重要的,它直接涉及软件的质量,而设计软件的初衷就是为了打开市场,获取利润。同时软件的质量与市场使用量息息相关。因此,在这个过程中,只有充分关注软件测试技术,做好测试管理工作,才能开发出用户满意的优质产品。

摘要:近年来,经济的发展与社会的进步,极大地促进了计算机技术的发展。由于当今社会互联网的普遍使用,人们生活的方方面面越来越依赖于互联网,因此也对计算机软件提出了更高的要求。在这种情况下,就要求计算机行业必须具备先进的软件测试技术以及相应的测试管理研究,前者属于技术层面,是在互联网普遍发展潮流中的必然选择,也是为了满足客户的多种要求,从而取得竞争优势;而后者则属于管理层面,软件测试管理发挥着一种整体的技术,体现在软件测试过程的每个步骤之中。文章认为,两者协同作用,可以有效提高软件测试的管理水平以及软件测试水平。

关键词:软件测试,技术研究,测试管理

参考文献

[1]张德平,聂长海,徐宝文.基于Markov决策过程用交叉熵方法优化软件测试[J].软件学报,2008(10):2770-2779.

[2]蒋芃,李健.计算机软件测试管理应用研究[J].湖南理工学院学报:自然科学版,2007(1):42-44.

[3]闫茂德,许化龙,訾向勇.软件测试技术及其支持工具介绍[J].集美大学学报:自然科学版,2003(2):154-159.

[4]柳永坡,邹磊,金茂忠,等.软件测试领域的知识管理及模型研究[J].计算机应用研究,2009(1):143-145.

[5]王君,管国红,刘玲燕.基于知识网络系统的企业知识管理过程支持模型[J].计算机集成制造系统,2009(1):37-46.

探究软件测试技术与测试管理 篇10

社会经济和科学技术的不断发展极大地促进了国内应用软件的进一步壮大和发展,并在互联网信息时代中占据重要的市场地位。尽管如此,我国应用软件的技术水平相对于国际市场还存在一些提高空间,产生差距的主要原因是软件测试还不成熟。因此,在新时期的背景下,要使应用软件得到进一步的发展和提升,必须要从软件测试方面入手。本文主要研究软件测试技术与测试管理,进而为软件质量的提升提供重要保障。

2软件测试技术和具体方法

2.1测试软件说明书

检查说明书是软件检测技术的重要环节,为后续软件检测环节做好充分的准备。首先,对软件说明书采用高级检查与属性检查的方式。从软件测试的实质上看,测试软件说明书的目的不是要快速找到软件存在的漏洞或者问题,而是在某一高度上对软件的整体情况进行审视,进而找到软件存在的根本性问题。在基础上,检测人员要站在客户的角度上检查软件,检查被检测的软件是否符合客户的要求,在这个层面上对软件说明书的各个属性进行测试。其次,明确标准和规范。在软件测试技术中,标准与规范具有一定的差异性,标准比规范更具确定性,在实际的软件测试过程中,测试人员要对软件说明书进行观察,先要检查软件说明书是否符合标准,即公司要求、行业规定、国家标准以及硬件网络标准等条件。最后,在检查环节中,测试人员要身检查软件的规模和复杂性以及可靠性,检查软件是否严格按照质量标准计划要进行研发制造的,明确软件的可靠程度,进而对软件的质量进行有效的控制。

2.2等价类划分

在实际的软件测试中,测试人员要选择最具代表性的案例来对软件进行功能和各项性的测试,在进行选择测试案例的过程中,测试人员可以利用等价类划分的方式来实施软件测试。等价类划分主要是解决如何选择适当的数据子集来代表整个数据集的问题,通过降低测试的数目去实现“合理性”覆盖,覆盖了更多的可能数据,以发现软件心存的缺陷。有效等价类指对于软件测试来说,可以合理地输入数据构成,进而反映出测试数据的集合,利用等价类划分可检查软件是否实现了软件说明书预先规定的各项功能以及性能。就一般意义上来说,等价类划分可以是一个,也可以是多个,根据软件的输入域分布成若干部分,然后从每个部分中选取少数有代表性数据当做数据测试的测试用例,形成软件输入域的集合。

2.3数据测试

软件主要是由数据与程序两部分组成,在数据中有键盘输入和鼠标单机以及硬盘文件等部分构成,程序则是软件可以操作的流程、转换以及逻辑运算。在测试数据的过程中,测试人员要检测输入信息和返回结果,还要保证在过程计算中结果的准确性。进行数据测试过程中有以下测试技术:第一,边界条件测试。在进行边界条件测试中要先对临近边界的数据进行测试和分析,也就是对最后的合法数据进行测试,之后依次测试超过软件边界的一些非法数据,并不断探索软件的测试边界,进而发现软件测试边界,找出软件中“隐身”的各种问题和障碍。第二,通过默认、空白以及无等方法来进行软件测试,也就是说,在输入界面中,输入错误的信息或者是输入空值的情况下,点击回车键,有些软件就会产生错误提示或者是其他情况,这样的情况下一般是由于测试人员忽略了对软件说明书的检查引起的。第三,利用非法、错误以及垃圾数据对软件进行测试,测试人员可以利用这样的数据信息输入,找出软件现存的问题和漏洞,进而提高软件测试技术的水平和效率。

2.4软件状态测试

软件状态测试主要是利用软件的各种状态来检查软件的逻辑性,以及使用流程的准确性和可靠性,状态测试可在以下三方面中进行测试:一是测试人员要让软件进入一个全新的状态,检查软件在进入新状态时的反应和逻辑程序,进而测试软件的稳定性和逻辑性。二是测试人员测试软件从一种状态中迅速转变为另一种状态,主要测试软件在状态切换中的反应速度和灵敏度,并注意观察在转换过程中软件需要的输入数据以及转换条件。三是在进入或者是退出某一状态时,软件需要的设置条件以及最终结果。

2.5黑盒实验

黑盒实验主要在软件接口位置进行,也就是说,黑盒实验是在软件外部进行,不考虑软件结构特点以及逻辑流程。黑盒实验软件测试技术主要是将软件视为黑盒子,测试人员可以根据黑盒子的相关操作说明进行,具体检查软件实际功能是否满足软件说明书上的标准和规定,包括遗漏功能、访问权限错误以及数据结构等方面的错误。在进行黑盒实验的过程中,测试人员要制定科学的测试用例,进而引导整个黑盒实验软件测试过程,尽可能保证测试流程的计划性、目的性和有序性,提高软件测试的效率和质量。

2.6白盒实验

相当于黑盒实验来说,白盒实验更加倾向于软件测试中的细节处理,在软件的细微之处进行检查。因此,白盒实验的优势在于可以让测试人员了解软件的具体结构以及逻辑流程,同时可以通过这些信息的了解和掌握,对测试用例进行有效设计和测试,测试软件程序中的逻辑路径。在进行白盒实验的过程中,测试人员要根据各个检查点对软件程序进行测试,确定软件在测试中的实际状态与预期状态的差距,以便于对软件进行进一步完善和优化。

2.7灰盒实验

灰盒实验主要存在于黑盒实验和白盒实验的中间节点,也就是说灰盒实验具备黑盒实验和白盒实验的共同特点和功能,灰盒实验不仅可以测试软件接口处的信息准确性,还可以测试软件内部结构以及逻辑流程。虽然具有二者共同的优势,但是不具备二者的极致性。灰盒实验没有白盒实验对结构和程序测试的完整性和细致性,只是根据一些具有代表性的特征来测软件内部结构和程序的完整与详细。因此,灰盒实验的主要用途是在黑盒实验测试不出任何问题的情况下,先使用灰盒实验要测试软件的问题,提高软件测试的质量和效率。

3软件测试管理

3.1采用B/S结构

B/S结构可以在网络服务器中实现对软件的测试,促进软件测试的自动化和现代化,测试人员可以在任何时间和地点进行软件的测试,打破了传统软件测试管理在时间和空间上的局限性。测试人员可以利用互联网登录到软件工作页面中,输入测试人员的账号与密码登录网页进行软件的测试,给测试人员的工作带来了很大的便利,提高软件测试效率和质量。

3.2测试资源共享

在进行软件测试管理中,软件开发企业要提供测试用例以及软件缺陷等数据库,软件开发的技术人员可以具有测试用例以及软件缺陷等数据库的的访问权限,在这样的环境下,测试人员可以利用测试管理系统实现测试资源共享,利用以往软件测试管理的实践经验,在现有软件测试管理的基础上不断地进行优化和完善,提高软件测试的技术水平和管理水平,为高品质软件的研发提供打下坚实的基础。

3.3加强工作人员的沟通

所有软件测试的工作人员可以在任意时间地点查看测试资料、成功用例和软件缺陷等信息,可以针对软件测试信息数据进行讨论,并积极发表自己的意见,从而有效增强软件测试相关工作人员的团队能力和协作精神,营造一个良好的工作氛围。

4结束语

综上所述,软件测试对软件整体质量和性能的展现具有非常重要的意义和作用。本文首先对软件测试技术和软件测试管理进行了分析,其次对软件测试技术中出现的问题提出了具体方法。对于软件测试和管理人员具有一定的参考价值。

参考文献

[1]黄莹.软件测试技术与测试管理[J].工业控制计算机,2013(05):36-37+47.

[2]林天华.软件测试技术及其管理工具的研究与实现[D].华北电力大学(北京),2014.

[3]罗霄.基于过程的软件测试管理技术及支持工具的研究[D].西北大学,2013.

[4]梁巧清,范耀明.分析软件测试技术与测试管理[J].电子技术与软件工程,2016(11):80.

软件质量与测试 篇11

保证需求与软件的统一

Richard Bender是基于需求的软件测试方法创始人。他认为:改进软件系统测试方法的最佳途径在于改进软件需求定义开发过程和功能测试设计过程,基于需求的测试是一种最根本的软件测试。

软件需求分析解决的主要问题是“软件产品必须或应该做什么”,软件需求分析的最重要成果就是需求说明书,需求说明书是软件产品的雏形,软件产品是需求说明书的最终展现成果。由于需求和软件之间是相互对应的,编码和测试用例之间也是相互对应的,所以需求和测试用例之间是互相对应的,在本质上也是互相关联、密不可分的,可以实现需求和测试用例之间的双向跟踪追溯。

值得一提的是,在软件开发过程中,编程和测试是紧密相关、相辅相成的活动,两者同等重要、缺一不可。测试的目的是为了发现尽可能多的缺陷,并期望通过修改完善缺陷以提高软件的质量。成功的测试在于发现了迄今尚未发现的缺陷,测试人员的职责是设计这样的测试用例,它能有效地揭示潜伏在软件里的缺陷。

然而,在企业应用软件项目的实施过程中,普遍存在重编码轻测试、缺乏高素质软件测试人员的现象。事实上,设计与测试应该完全分离,好的开发者构建事务,好的测试者破坏事务,一个好的软件测试工程师应该要比开发工程师对整个系统的理解更加透彻。目前很多软件测试工程师处在软件项目组的最低职级,缺乏高层的重视和支持,自身对于整个应用系统“该做什么、要做什么、必须做什么”并不清楚,如果再加上与设计人员的沟通交流协作过程中不讲究原则性、策略性,其工作成效可想而知。

基于需求的软件测试方法

要实施基于需求的软件测试,其正确的工作步骤如下:

1.全面清晰地掌握用户需求

全面、清晰、准确地认识理解用户需求、软件平台架构是软件测试工程师开展一切测试工作的前提和基础。软件测试工程师应认真阅读、研究、分析《用户需求说明书》、《软件产品设计说明书》(分为概要设计和详细设计)等关键文档,清晰掌握平台架构设计、数据库结构设计、模块功能设计、核心算法、界面展现、人员权限角色分配、输入输出数据等要素,将业务操作流程和以上要素分别逐一对应关联。

2.明确测试的目标和任务

软件测试的任务就是验证软件是否准确地实现了用户需求,检验需求和软件之间是否一致。好的测试用例能发现软件中潜在的新缺陷,糟糕的测试用例在目标及任务尚不明确的情况下盲目进行评测,不仅效率低下,而且毫无效果。

3.分阶段制订测试计划方案

测试计划方案不是从头到尾一成不变的,应根据企业应用软件项目所处的不同阶段制订,不同的项目阶段所需的测试方法是不一致的。可以借鉴RBT理论关于基于需求的测试方法的最佳实践(参见链接)。

4.设计基于需求的复合测试用例

在很多情况下,单一的测试方法很难实现软件缺陷或错误的全面检查,在软件工程中使用最多的往往是组合多种测试方法的复合测试用例。例如黑盒测试和白盒测试两者的功能作用就可以互相弥补,实践中可以将两种测试方法组合起来设计复合测试用例。

5.妥善处理测试和设计之间的关系

测试是“破坏性”的,而开发却是“建设性”的。从行为学角度看,开发与测试是对立的。如果测试人员对开发人员的错误批评指责过多,容易导致双方的关系对立隔阂;如果测试人员对开发人员的错误疏忽怠慢,容易导致软件质量的隐形下降,实践中需要找到一个平衡点。

6.建立测试报告审批通报制度

建立测试报告审批通报制度对于提升软件质量具有明显作用。作为一名优秀的测试工程师,要养成书面起草测试工作报告的好习惯。将已经定位发现的缺陷或错误进行分析汇总,用统计数字、图表等方式说明缺陷或错误的根源,及时将测试工作报告提交上级主管领导审议,并通知研发设计人员,使设计人员做到对缺陷心中有数、控制有道,以防患于未然。

链接

基于需求的测试理论的五项最佳实践

1.转变“编码后进行测试”的传统观念。在软件编码开始之前的设计阶段就根据需求文档和设计文档开发出90%以上的测试用例,尽早发现和排除绝大部分的缺陷。

2.根据各项应用功能的优先级、重要性制订不同等级的测试方案、测试用例。重要的模块投入较多的测试资源(人力、时间、物资),次要的模块投入较少的测试资源。

3.尽早测试,频繁测试。测试进行得越早,缺陷发现越早,修复缺陷的代价越小;测试进行得越晚,缺陷发现越迟,修复缺陷的代价越大。

4.摒弃“经验至上”的想法。设计系统、严谨、合理的测试用例才能使测试达到实效。

软件质量与测试 篇12

关键词:软件测试流程,KPI,考核体系,教学体系

1 软件测试重要性及KPI考核体系构建意义

软件测试是保证软件质量的一重要手段,其在软件生命周期中的重要性日益凸显。IT企业对软件测试人才需求量不断增多,软件测试岗位迅速扩张。

基于软件测试人才需求旺盛的现状,推进基于KPI的多元化绩效考核体系的管理模式并在试点企业中试行和同步改进,将有助于最大限度地调动工程师的工作热情、提高效率。此外,高校软件测试人才的培养往往注重知识的提升、技术的锻炼,而易忽视综合素质的培养。据企业测试人才绩效考核体系的要求,映射到软件测试体系化教学中,进一步优化软件测试教学体系,改进教学知识与技能架构,从而提升高校人才培养及实习就业质量,校企对接更加紧密。

2 软件测试KPI考核现状及应对策略

2.1 科学管理技能尚有不足

IT企业管理层往往为技术出身,具有技术背景和深厚技术功底做支撑,但对于企业管理、团队管理领域大多未经历过系统的学习,故在管理技能和技巧上较为欠缺。据了解,一些测试经理仅关注软件缺陷的发现与跟踪,在程序员提交完整系统后才开展测试工作,从而忽略了规范化的软件测试流程及需求评审、测试计划制订、测试用例设计、测试环境构建、测试实施、测试总结与评估等关键环节的管理与人员技能的考核,与一线岗位工作内容严重脱节。

2.2 不同岗位同标准导致KPI指标雷同

不同岗位工作内容及考查点存在差异,应依据软件测试工程师、自动化测试工程师、性能测试工程师、测试组长、测试经理等分岗位、分级别制定不同层次的考核标准。否则无法高效引导,指导各岗位履行岗位职责。

2.3 考核评价人的单一性与考核全面性欠缺

大多企业对于基层测试人员的KPI考核仅依靠直接领导的评价意见,此考核较片面,应全方位、多角度比较,同步综合直接领导、部门经理、同部门乃至同项目组员工等量化评分,并参考其他部门员工是否有负面意见等开展考核;亦应结合“员工自评”方式,给予自主辩解环节,进一步提高考核评价的客观性、准确性,使考核评价结果更具说服力。

2.4 考核沟通机制与制度透明化不健全

就现状而言,多数测试工程师往往仅知被考核了,对具体考核指标及措施等全然不知,此状况不利于测试工程师改进和提升,也会降低被考核人对考核结果的信任性。

建议就制定出的KPI考核体系,开展基层交流讨论、修订与完善、公示及反馈等环节;推广绩效考核管理系统的应用,“个人”考核结果实现系统可视化,实现透明化的同时又明确了工程师改进方向;并行“阶段考核”及“年终考核”,且融入年终述职环节,增设“绩效面谈”流程,进一步调动测试人员的积极性,加强考核的行为导向作用。

3 软件测试KPI考核体系构建

KPI考核体系的构建,重中之重在于KPI关键业绩指标的选定,合理的KPI指标是企业绩效管理和改进的关键,本文重点结合企业软件测试核心工作流程对KPI指标进行选取及考核方式规划。构建测试工程师KPI考核体系如表1所示,具体分析如下。

一是“测试执行”考核项:主要针对测试执行情况进行考核,细化为6项考核点:①提交有效BUG数量:基本考核指标,取被考评者所参与项目中当月或同一考核阶段中所提交BUG数与当月总BUG数之比,本条计分方式为:10×(个人BUG数量/总BUG数量)。②提交BUG的质量:重要考核标准,无效BUG提交数量过多,说明员工测试基础欠扎实,本条计分方式为:10×(有效BUG数量/总BUG数量)。③提交BUG的严重等级比例:按公司质量规范中对BUG严重等级的分类,排序权重为A至E,权重越高、BUG比例越高,得分越高。④提交BUG的规范性:涉及BUG描述是否清晰且可否复现,BUG严重程度是否正确,BUG相关附件是否提交等。⑤回归BUG数量:考评期间回归BUG数之和。⑥执行用例数量:考评期间执行用例数之和。

二是“文档编写与用例设计”考核项:主要针对测试流程中关键文档的制定与测试用例设计质量进行考核,细化为4项考核点:①测试用例数量;②设计用例的质量;③外部文档制作规范性(用户手册、系统帮助等);④内部文档规范性(测试计划、评审报告、测试报告等)。

三是“专业技能”考核项:主要针对测试工程师的实践能力及操作成熟度进行考核,体现为2项考核点:①测试工具掌握程度;②测试环境搭建能力。

四是“工作态度”考核项:非技术性考核指标,重点考核测试工程师职业素养与品质,细化为4项考核点。①工作积极性:工作的速度,完成工作的迅速性、时效性,有无浪费时间或拖拉现象。②沟通能力:与各方面关系协调,说服他人及人际交往的能力。③学习创新共享能力:改进工作的主动性及效果,主动研究新技术,并积极与团队共享。④执行力:对公司及上线领导的战略、决策、计划的执行程度。

五是“其他”考核项:为上述各项考核的补充和完善,进一步检验测试工程师日常基本工作规范,激励工程师具备良好的客户服务意识等,主要涉及出勤、奖励、惩罚3项考核点。

此外,对于软件测试管理层岗位,亦应对接日常测试管理及质量管理等岗位职责,分层制定KPI考核指标。①工作完成情况。涵盖本部门当月实际工作完成情况、部门人员工作分配与考核、工作日志等考核指标。②测试技术改进情况。涵盖新技术研究与应用、团队培训等考核指标。③部门配合协调情况。涵盖沟通协调、意见收集及反馈等考核指标。

4 高校软件测试教学体系优化与改进

以科学合理的考核体系为基准,进一步改进和规范化软件测试课程体系,融入KPI考核中涉及的实战技能和职业素质等培养要求。技术层面和职业素养层面,进一步提升应用技术型人才的企业适应能力及职业素养。

5 结论

综上所述,对接企业测试流程探究了软件测试KPI考核体系,此体系亦于部分软件企业测试团队中进行试行,取得一定效果,在一定程度上调动了企业测试团队的工作热情、提高工作效率;此外依托企业测试人才KPI考核体系的各项要求,映射到日常软件测试体系化教学中,进一步优化教学课程体系,并在部分高校中进行了订单班式培养,在提升应用型人才培养质量上得到校企双方充分肯定。

参考文献

上一篇:文化系统下一篇:新形势党员教育培训论文