欢迎访问发表云网!为您提供杂志订阅、期刊投稿咨询服务!

软件开发试用期总结大全11篇

时间:2023-03-06 16:01:36

软件开发试用期总结

软件开发试用期总结篇(1)

1 概述

彩超研发是一项涉及生物学、医学、物理学和计算机等多学科交叉的工作,对该领域的研究需要投入巨大的人力、物力和财力,而且一些基础研究的投入需要一定周期。在一些发达国家,许多科研机构和跨国企业做了大量前瞻性的基础研究工作,为彩超技术不断的深化与完善,奠定了一定的理论和实践基础。随着整个超声行业技术的发展和企业自身研发能力的提高,海鹰医电实现了从黑白超声到彩色超声的跨越,成为国内能够完全自主完成彩超研发、生产为数不多的企业之一。彩超软件与以往的黑白超软件相比具有更多的软件功能、提供更复杂的用户操作,如何保证规模庞大的彩超软件的质量成为一大挑战性问题。保证软件的质量的重要途径就是制定和实施贯穿于开发全过程的技术与管理规范,实施工程化管理,运用软件工程的原理、思想和标准,通过技术规范与管理规范的有效实施来提高软件产品的可靠性及开发效率[1][2]。

2 软件生命周期分析

软件生命周期是软件的产生直到报废的生命周期,周期内有问题定义、可行性分析、总体描述、系统设计、编码、调试和测试、验收与运行、维护升级到废弃等阶段,这种按时间分程的思想方法是软件工程中的一种思想原则,即按部就班、逐步推进,每个阶段都要有定义、工作、审查、形成文档以供交流或备查,以提高软件的质量。但随着新的面向对象的设计方法和技术的成熟,软件生命周期设计方法的指导意义正在逐步减少[1][3]。常用瀑布模型来描述软件生存周期的各项内容,如下图1:

图1 软件瀑布模型

结合软件生存周期和企业实际研发、生产水平,彩超软件质量控制可以在软件计划、软件实现、软件测试三个过程着重把关,控制软件质量。

3 在软件计划过程中控制软件质量

软件计划以软件需求分析为母体分解实施。软件产品以满足用户需求为软件开发的主要任务,而需求分析正是用户需求的提炼。在项目初期及开发过程中,经常会碰到不能很好理解用户需求及用户需求频繁变更的情况,正确地对待这些变更并在计划中灵活安排可以保证软件产品在预计的进度内完成,可以保证计划工作的严肃性,可以维护软件计划、产品和活动与需求的一致性,从而从制度上控制软件质量。

4 在软件实现过程中控制软件质量

软件的实现过程对于软件产品的质量有着重要影响。统一软件过程(RUP)框架和面向对象(OO)程序方法在软件开发中的运用能明显提高软件开发效率,降低整个项目风险,从而提高软件质量。

4.1 RUP框架。RUP框架由Ratinnal公司在吸取多种软件过程和模型的长处的提出,利用用例驱动、以系统架构为中心、迭代增量的开发模型,能全面支持面向对象的开发方法,所以一经推出市场,就迅速得到业界广泛的认同[4]。

传统的软件开发模型瀑布式模型是一个单维的模型(如图1所示),在RUP框架中,软件开发生命周期根据时间和RUP的核心工作流,划分为二维空间,可以用二维坐标来描述。横轴通过时间组织,体现开发过程的动态结构,用“周期”、“阶段”、“迭代”、“里程碑”等术语描述;纵轴以内容来组织,体现开发过程的静态结构,即在某一时刻软件开发所要进行的工作,可以用“活动”,“工作流”,“产品”,“工作者”等概念来表示[3][4]。

RUP中的软件生命周期在时间上被分解为四个顺序的阶段,分别是:初始阶段、细化阶段、构造阶段和交付阶段。每个阶段结束于一个主要的里程碑,在每个阶段的结尾执行一次评估以确定这个阶段的目标是否已经满足。如果评估结果令人满意的话,可以允许项目进入下一个阶段。

在彩超软件中,初始阶段的目标是根据医生对彩超的软件需求建立模型并确定模型的边界条件。本阶段具有非常重要的意义,在这个阶段中关注的是整个超声软件中总体需求的风险。细化阶段的目标是分析超声软件各模型领域,建立健全的体系结构基础,编制超声软件计划。在构造阶段,实现所有模块并集成为产品,所有的软件功能被详细测试。交付阶段的重点是确保软件对最终用户是可用、易用、好用。交付阶段可以跨越几次迭代,包括为做准备的产品测试,基于用户反馈的少量的调整。

4.2 OO程序方法。OO程序方法一个重要的优点是支持信息隐蔽、数据抽象与封装,使得软件的开发、修改和维护易于进行;OO程序方法的另一个重要优点是,它可以在整个软件生命周期达到概念、原则、术语及表示法的高度一致,这种一致性使得各个系统成分尽管在不同的开发与演化阶段有不同的形态,但可具有贯穿整个软件生命周期的良好映射[3]。

在彩超软件制作过程中,采用这两种开发过程和开发方法可以使整个超声软件开发、维护、升级更为容易,提高软件生产效率、降低软件生产成本,控制软件质量从而提高软件的整体质量。

5 在软件测试过程中控制软件质量

软件测试是保证软件质量和可靠性的重要手段。在西方软件发达国家,软件测试受到普遍重视。在国际著名软件企业中,软件测试的费用占到了整个开发过程费用的40%以上。特殊情况下,对于性命枚关的软件,如飞行控制、核反应堆监控软件等,其测试费用甚至高达所有其他软件工程阶段费用总和的3-5倍[3][5]。

5.1 彩超软件的测试项目。针对彩超软件,需要制定和不断修订严格的测试项目,其主要包括性能测试和功能测试两大部分。每个测试项目由可定量描述的测试项组成。

超声软件的性能测试包括每个探头的黑白分辨率,选取标准模块两个不同深度对横向分辨率和纵向分辨率进行定量检测;性能测试还包括每个探头的频谱分辨率,选择人体两个不同器官进行血流定性检测。

超声软件的功能测试包括每个探头的功能调节的测试,有声功率、发射频率、扫描密度、动态范围、平滑处理、帧平均、二次谐波、焦点数、扫描范围、图像优化、边缘增强、灰阶曲线、深度、扫描范围、2B切换、4B切换、黑白翻转、图像旋转等测试项目;探头的预设值测试;测量功能测试,有2D常规测量、M常规测量、Doppler测量、产科测量、男科测量、妇科测量、泌尿科测量、外周血管测量、多胞胎测量、小器官测量、矫形外科测量、心脏测量等测试项目;内置工作站测试,有妇科、男科、泌尿科、小器官、血管、心室、二尖瓣、主动脉、左心室、常规报告、检索、诊断模板、等测试项目;其他功能测试,有回放功能(自动\手工,速度调节)、语言调节、日期、时间设置、图像存储格式选择、图像存储模式、体标目录、患者信息输入、iTouch(预设值)保存/回调、穿刺功能、体标选择、Dicom传输、3D/4D、宽景成像、注释功能、字符输入、输入法切换等测试项目。

5.2 彩超软件的测试主体。彩超软件的测试主体包含软件开发人员内部自测、研发团队总体测试、生产检验二次把关三级。不同的测试主体使用同样的测试标准,但合理的测试结果是,不同的测试主体发现的问题应该不尽相同。软件开发人员内部测试的工作重点是软件功能错误的检测,在内部自测将绝大多数功能错误解决的基础上提交研发团队总体测试;研发团队总体测试的工作重点是软件性能指标的检测,在将绝大多数性能误差解决的基础上提交生产检验进行二次测试;而二次测试的工作重点是绝对软件在批量生产过程中的问题。

6 总结

随着彩超的发展,功能越来越复杂,彩超软件的总体规模越来越大。通过在计划、实现过程、测试三个环节的科学管理,可以有效控制彩超软件的质量,提高产品的可靠性。

参考文献:

[1]张海藩.软件工程导论[M].北京:清华大学出版社,2012.

[2]赵爱静.软件质量评价在航天测控软件中的应用[J].无线电工程,2009,39(8).

[3]熊策.软件质量控制技术的研究与应用[D].长沙:中南大学,2004.

[4]丁峰,等.RUP软件工程过程研究及应用[J].计算机工程,2000,

26(10).

软件开发试用期总结篇(2)

二、软件测试课程实践构建的主要思路

软件综合实践安排在大三课程开始之前的实践学期进行,为期4个星期,每天4学时的实践教学指导,软件测试专业的学生已经学过专业基础课《Java程序设计》、《计算机文化基础》、《网页设计》、《数据库设计》、《软件开发过程实践》,专业课《软件测试概论》、《功能测试》,学生初步具备了参与综合实践的专业素质能力。在综合实践开发团队中,将软件开发专业、网站规划与设计专业、数据库管理专业、软件测试专业和网络技术的同学,以3:1:1:1:1这样的比例进行团队建设,从中选出一位同学兼职项目经理,实现学生自主管理,配备具有双师素质的专业老师,一位教师负责指导5-7个团队的项目开发,当需要进行专业指导时,临时进行专业化实践指导,全方位分阶段、分岗位进行进行全程交叉技术指导,同时邀请合作单位的软件工程师,同步进行项目过程的跟踪,给予学生岗位最精准的实践指导。采用项目驱动的方法开展实践教学,通过开发真实的软件项目,以软件工程开发过程为导向,制定软件综合实践——软件测试方向的实践方案,分阶段进行实践,选择有较强的实践性和创新性的项目给学生选题,选题要贴合实际项目,需求相对容易获取,具有一定的创新性,能够激发学生的学习兴趣。首先需求的调研,需求的评审,编写测试计划,设计测试用例,测试执行,测试记录的跟踪和测试总结报告,对每个测试阶段进行教学设计,不断的将所涉及到的知识点融入到实践中,增强学生职业岗位素养能力,团队合作的意识,同时探索以学生管理学生的模式进行实践探索。

三、软件综合实践测试岗位的工作过程与方法

在软件综合开发实践过程中,对软件测试岗位的同学依据软件工程的理论进行指导,结合企业的工作流程,采用分组的教学模式,采用软件测试常用的W模型,进行教学指导,培养学生的团队合作能力,沟通能力,实践能力。测试岗位的工作主要分成两个三个部分,第一部分是需求的调研和评审,测试计划中测试策略的选择、任务的时间安排和测试用例的设计;第二部分主要是测试执行,安装测试工具,部署测试环境,按照测试所设计的测试用例进行手动功能测试,尝试利用自动化测试工具QTP进行自动化测试,运用所学过的黑盒测试方法,进行web测试,兼容性测试等方法的测试工作,将所发现的问题记录到测试管理平台(QC)的缺陷缺陷跟踪表中,修复后,进行验证性测试,第三部分就是测试总结报告。

四、软件综合实践的考核

1.答辩委员会的组成。立体化全方位的考核方式,采用学生团队答辩的方式进行最终的考核,答辩委员会成员由软件开发方向教师、网站规划与开发教师、数据库管理方向教师、软件测试技术方向教师和企业工程师共同组成。2.软件测试岗位的知识点的考核。每个专业都设计了一套科学有效的评价体系,从三个部分对学生的能力进行全方位评。第一部分IT职业素养能,占总成绩比例的30%,考勤、项目管理能力、文档编写能力、团队合作与沟通能力、演讲与答辩能力;第二部分团队实践成果,占总成绩比例的30%测试环境部署、测试工具软件的安装、测试执行中缺陷报告的跟踪、测试总结报告的编写;第三部分岗位技能成果,占总成绩比例的40%,软件开发过程文档:需求评审报告、测试计划报告、测试用例报告。

五、软件综合实践教学实践的意义

1.软件综合实践项目分组教学的意义2.软件测试岗位同学的收获3.综合实践教学的后续影响4.软件综合实践教学的改革未来方向

作者:张彤宇 李晶 姚庚梅 单位:广东东软学院计算机科学与技术系

参考文献:

软件开发试用期总结篇(3)

探索性测试(Exploratory Testing)具有在时间短和文档不完善的情况下,充分发挥测试人员的经验和能力,快速、高质量完成软件测试等优点。已形成了一套管理方法和应用模型,并在微软等多个企业开展了成功的实践。探索性测试方法关注于实用,对它的研究也多数集中在实际应用方法而不是理论研究上。

探索性测试是解决嵌入式系统软件测试需求变化快、软件文档缺乏、测试周期短等现实问题的可行手段之一。为了恰当运用,需要总结探索性测试的一般性应用方法体系,并探讨其与嵌入式系统软件测试体系的联系和冲突。在此基础上提出适用于嵌入式系统软件测试的探索性测试应用模型。

1 探索性软件测试的基本原理

探索性测试的概念形成较早,经过随后的发展已形成了一定的应用体系。

1.1 探索性软件测试的概念

传统的软件测试分为测试需求分析、测试策划、测试用例设计、测试执行和测试总结等主要阶段,依次开展。传统软件测试流程依赖于完整、详实的软件需求和设计文档作为输入。而在现实的测试任务中,软件需求和设计文档往往有误或不完备,这导致脚本测试活动无法正常有效开展。

“探索性测试是同时进行学习、测试设计和测试执行的一种测试方法;也就是说,测试没有事先通过确定的测试计划定义,而是动态地被设计、执行和修改”。探索性测试(也称为探索式测试)最早于1983年提出,并在实践中发展 。与传统脚本测试相比,探索性测试具有以下技术特点:

(1) 测试活动的同时性。鼓励在测试执行的过程中,同时进行对被测软件的学习和测试设计。

(2) 关注测试任务。更关注于被测软件本身和需要测试的问题。

(3) 测试中的演绎推理。通过前一个测试活动的结果来指导后期测试的开展。

(4) 利用人的优势。关注于人本身的优势,如判断、分析、应变和协作的能力。

作为一种敏捷软件测试方法,探索性测试弱化了对测试的预先设计和测试流程的严格要求,而强调测试的同时性以及人的经验和创造性,关注于发现软件缺陷,持续优化测试工作。测试人员在测试?理解?再细化测试的迭代中,通过测试活动本身不断深入学习被测软件,从而能够缩减测试准备时间,发现更多缺陷,并使得软件测试可以在被测软件说明或文档不齐全的情况下开展。

1.2 探索性软件测试的主要方法

探索性测试的概念提出后,经过工业界和学术界人士的工作,已初步形成包含经验运用、执行策略、管理模型的体系。

1.2.1 探索方法

探索性测试强调对测试人员的知识和经验的运用。这些经验和知识可分为领域知识、系统知识和一般的软件工程知识。领域知识指领域规则、客户流程和操作场景等,包括用户使用和具体应用领域知识。系统知识是关于待测软件的特性和技术细节的具体知识,包括系统级的交互以及个体功能细节。一般的软件工程知识即不需要对被测软件系统和应用领域的具体知识。

丰富的知识和经验是对探索性测试人员的基本要求,以此为基础,探索性测试的发挥人的创造性,并由此增强了测试过程的适用性。从工程应用的实践中,已总结出了一些有用的启发式方法。运用这些策略和启发式方法,可以帮助软件测试人员在具备了基本的知识和经验的情况下,尽快熟悉被测系统,并在测试过程中充分运用经验和创造性。

在开展具体的测试活动时,测试人员则可以借助一些启发式方法在测试活动中“探索”被测软件。这些启发式的方法是测试中为了发现可能的缺陷,测试人员常用的一些技巧 。这其中典型的有Hendrickson的检查单以及Whittaker的漫游方法。这些方法的共同特性是提醒测试人员:

(1) 应关注软件最主要的功能,并在测试的过程中对软件的行为进行联想、质疑并发散,充分利用逆向输入、边界情况、近似值、错误输入和特殊值(如0),通过软件行为的原因、表现等举一反三;

(2) 应刻意构造一些特殊的行为,如尝试遍历所有输出、尝试最长操作路径、尝试关注关键数据的演化、打散或集中事物、长时间运行软件等;

(3) 应构造测试检查软件主要功能往往不关注的情景,例如启动和退出、全选、空值、资源过量和紧张、取消操作、重复、同时运行等。

传统方法假设软件文档中说明了软件的各种预期行为,因而可以通过分析文档来提取测试预期(Test Oracles)。然而,在软件信息不完备的情况下,测试预期则无法提前预知。HICCUPPS的启发式方法,从历史(History)信息、顾客形象(Image)在软件中的恰当映射、类似软件的对照(Comparable Products)、与软件和商业声明(Claims)、用户预期(User’s Expectations)、同类产品本身(the Product itself)、明显的意图(Purpose)和法律规章(Statutes)等角度,帮助测试人员在判定测试是否通过。

1.2.2 管理模型

良好的测试管理模型是保证测试质量、提高测试效率的必要保障。基于会话的测试管理(SBTM)是探索性测试领域中最常用的管理实践。SBTM将软件测试活动分解为若干会话(Session)。会话特征如下:

会话围绕主旨(Charter)开展:即待测试的任务和目标;会话时间较短:时间长度在90 min左右;会话需要记录:借助会话记录单;每轮会话需要计划和总结:一轮会话执行通常是一天,其中包含若干个会话测试。

基于会话的测试过程如图1所示。当接到测试任务时,测试小组通过对测试任务进行分析讨论,确定各会话的主旨。会话主旨包含被测软件的主题、测试人员的角色、目的、条件、优先级、参考文档、 数据、思路、预期等信息。测试项目负责人分配各会话测试人员,随后开展首轮会话执行。一轮会话执行通常为一天。每轮会话执行结束后,需组织会话总结,主要借助以下维度进行:会话执行情况、笔记、缺陷、问题、数据、时间分解、人员安排等。通过总结确定下一轮会话、资源分配。下一轮会话执行按照相似的方式开展。在测试达到预期时间和充分度要求后,测试结束,并根据每轮会话报告单整理测试报告。

图1 基于会话的测试管理示意图

会话还可以根据需要进行扩展,例如可以包含对会话的风险评估和资源统计,也可以将会话延伸为对特定问题的关注,形成测试的线索。

1.3 探索性测试工具

探索性测试的有效开展同时依赖于工具的辅助。已有一些探索性测试的工具可供参考,例如Microsoft Test Manager(与Visual Studio组件),BBTestAssistant、TestExplorer,Session Tester,Rapid Reporter,Wink。这些工具通过基于录制回放、截屏和辅助文字信息的方式帮助测试人员记录探索性测试的执行过程,其中Session Tester、Rapid Reporter和Wink是免费的,Session Tester和Rapid Reporter则专门针对会话机制进行了设计和优化。

虽然这些基于录制回放原理的工具能够辅助测试人员整理测试报告,但是却缺少对测试人员运用其知识和经验的指导,对探索性测试的执行也缺少引导作用。目前没有专门的探索性测试流程管理工具,不能起到控制测试流程的作用。有必要针对具体应用研发相应的辅助工具。

2 探索性测试的应用及其效果

经过发展,探索性测试已在多个企业运用。人们对探索性测试方法的优缺点也有了更加明确的认识。

2.1 探索性测试在工业界的应用

微软是较早实践探索性测试方法的软件企业。微软在Windows 2000系统徽标认证、必应搜索引擎和地图、Visual Studio、Windows Media Player等系统、网络和桌面应用中广泛使用了探索性测试的技巧和方法,尤其是漫游探索法。在其他公司,探索性测试也成功的运用于互联网应用行业以及信息系统的软件测试中。这些测试任务往往在软件文档不全、测试时间紧、企业对采用传统的脚本测试流程不满意的背景下开展,通过运用基于会话的方法,测试团队都能够高效的完成测试任务,甚至发现了采用传统方法在类似项目中遗漏的缺陷,在系统上线后也没有发生重大问题,软件项目组对测试团队的满意度有提升。

虽然可能没有直接说明采用探索性测试,开源软件的测试往往具有探索性测试的特点。这些测试往往在没有详细的软件文档和测试用例设计的基础上,利用志愿测试人员的经验和兴趣开展 。在敏捷软件研发团队中,探索性测试的方法也多有运用。成功案例包括与XP和Scrum敏捷软件开发的结合。

除了在工业界的运用,也有学者对敏捷软件测试的应用进行了系统的研究和讨论。Itkonen等人在芬兰多个软件公司中研究了测试人员对探索性测试的使用方法、效果和评价,对探索性测试的优缺点、应用条件合场景以及推荐的方法进行了总结;通过研究和实验,发现了探索性测试在缺陷检测能力上能达到甚至超过传统脚本测试的水平。Naseer,史亮和高翔也总结了探索性软件测试在瑞典软件公司、国内的微软和淘宝等企业运用的经验,对探索性测试的活动进行了总结。Bach等人还成立了公司专门从事测试方面的研究和推广。另外,也有一些研究将探索性测试思想与测试自动化方法结合,或利用探索性测试的思想提高测试效率和质量的工作。

从目前的应用情况来看,探索性测试技术多数是在桌面应用、B/S架构信息系统等领域的应用,在嵌入式系统软件测试中的应用较少。

2.2 探索性测试的优缺点

经过实践,总结上述对探索性测试的应用,能够发现,探索性测试尤其适用于要求在短时间内发现被测软件一些重要缺陷或事先没有能够进行详细测试设计的情况;但也具有测试过程不易控制、测试文档不全等问题。因此,在具体领域中运用探索性测试技术时,有必要根据领域特性,设计适合的测试流程,扬长避短。

一般认为探索性测试的主要优点和缺点如下:

优点:便于利用人员经验;适合于从用户角度的测试;适用于缺少软件文档、测试时间紧情况;灵活且适应性强;对测试人员和开发人员的反馈较快;能够为测试带来新内容,降低“杀虫剂”效应。

缺点:缺少足够的文档,不易度量覆盖率;测试统计数据不足,不利于决策;对测试人员经验要求较高;在测试人员经验不足、管理不严格的情况下,可能会影响测试质量;如缺少恰当工具,则不利于缺陷复现。

3 探索性测试在嵌入式系统中的应用

探索性测试技术却是能够应对嵌入式系统软件测试中软件需求变化快、测试周期短、软件文档不全等现实问题的可行方法之一。本文首先分析探索性测试在嵌入式软件测试中应用的需求和困难,然后探讨探索性测试技术与嵌入式系统软件测试体系的结合方法,对应用模型提出建议,并对应用中可能的问题和后续研究进行讨论和展望。

3.1 探索性测试一般性方法的适用性

随着IT技术的发展和各国在国防、智能电网、物联网、智能手机等行业投入的加大,嵌入式软件产品越来越多,测试任务越来越重,往往难以保证充裕的测试时间。软件需求和开发文档存在不准确、不完备的情况。而同时,嵌入式软件的测试具有较强的领域特性,领域内测试人员对被测系统的经验比较丰富。因此,需要也有条件在嵌入式系统软件中开展探索性测试,以降低对软件需求和设计规约的依赖、发挥探索性测试对软件变化的适应性和充分利用测试人员经验的优势。

然而,探索性测试技术在嵌入式领域中的应用却较少。探索性测试的通用方法没有直接用于嵌入式系统软件测试的原因主要是 :

(1) 软件测试文档:探索性测试不鼓励测试花费精力在策划和准备上,而测试执行记录风格随意性较大,不利于形成统一、完备的测试文档;这与按照国标和军标中对完整的软件测试文档的要求冲突。

(2) 软件测试充分性度量:不易度量测试覆盖率,不易评价测试质量。

(3) 软件测试过程控制:缺少对配置和测试流程的系统性管理,可能造成测试过程失控。

3.2 探索性测试应用模型探讨

为了解决嵌入式系统测试中软件需求变化快、测试周期短、软件文档不完备等现实问题,有必借鉴探索性测试技术在信息系统、网络应用、操作系统等方面的成功经验,将其融入嵌入式系统软件测试体系中来。为了与相应的软件测评体系和标准匹配,必须对探索性测试通用方法进行调整,设计探索性测试在嵌入式系统软件测试的应用模型。

一种可参考的“脚本会话模型”如图2所示,是以探索性测试一般性理论、探索性测试各特性在各型产品软件的适用性研究为基础,将探索性测试与传统脚本测试相结合的软件测试模型。为充分利用两者的优势,脚本会话模型的整体仍以传统脚本方法为基础,从而利用脚本测试管理中测试文档完备和过程管理控制完善等优点,而在测试执行过程中充分发挥探索性测试的灵活、高效优点,引入会话、漫游测试法等探索性测试等方法,同时借助嵌入式系统软件测试典型数据复用库来实现对测试人员经验的固化和复用。

图2 嵌入式系统软件脚本会话测试模型

如图3所示,脚本会话模型整体流程遵循经典的脚本测试流程,但发挥了探索性测试对经验的利用和灵活性的特点。

图3 脚本会话测试模型流程框架

包含以下步骤:

(1) 测试策划和设计阶段;借助领域软件测试典型数据复用库(测试人员经验的固化体现)形成测试项、构造测试用例,降低对软件需求和设计文档的依赖,初步完成测试需求的提取和测试用例的设计。

(2) 测试执行阶段:测试执行以基于会话的方式开展,并对一般会话进行扩展。根据测试设计和计划,确定每个会话的主旨、用例和测试方法。在每一次会话中,测试人员可以结对开展测试执行,根据预先指定的漫游策略和启发式方法,针对一个测试项进行探索,并补充测试用例。测试人员在会话结束后整理会话记录单。根据本轮会话执行情况,记录缺陷、改善测试设计,并准备下一轮会话。如此迭代直到测试结束条件满足,测试执行结束。

(3) 测试总结阶段:借助测试执行中各个会话报告单,总结和报告缺陷。

3.3 讨论和展望

探索性测试在互联网和桌面应用已经成功实践,而在嵌入式领域应用仍然较少。在嵌入式系统软件测试中运用诸如脚本会话模型的探索性测试技术时,应注意以下三点问题:

(1) 测试过程管理和文档。必须重视探索性测试的过程管理以保证测试过程受控。同时在适当的阶段应编写相应文档作为测试阶段性成果,并在测试执行完成后更新相应文档。

(2) 结合具体领域。具体领域的软件测试典型数据复用库可以看作是对该领域软件测试人员测试经验的固化,是软件测试团队的组织资产,有助于团队新成员快速熟悉被测系统,提高探索性测试的效率。

(3) 针对测试团队和项目制定具体策略。制定探索性测试中的典型方法的应用策略,并注意收集反馈,在实践中持续改进。

探索性测试作为一种在互联网、操作系统等领域成功运用多年的测试技术和理念,可以与其他软件测试技术结合,共同推进嵌入式软件测试质量的提升。可能的结合方向包括(但不限于):

(1) 基于模型的测试和验证。借助软件模型可发现隐藏在软件界面和正常使用流程下的交互,其中可能隐藏了大量的缺陷;借助模型检验工具提供的反例,测试人员还可以对软件进行更加深入的探索;

(2) 测试自动化。嵌入式系统软件需要处理传感器送来的大量数据,采用自动化方法能够有效减少测试人员的工作量;结合探索性测试的技术,也能够为测试用例约简和测试预期问题提供解决途径;

基于剖面的测试:构造嵌入式系统的操作剖面和用户剖面,辅助测试人员能有选择性地对系统进行探索。

4 结 语

探索性测试技术经过研究和发展,已形成了一套可行的体系。探索性测试在嵌入式系统软件测试中的应用还较少。经过对探索性测试体系的全面研究,能够更好的理解这种方法在嵌入式系统软件测试中的适用性,并为融合探索性测试与传统嵌入式软件测试方法,形成适用于嵌入式系统软件测试的探索性测试应用模型提供思路和方向。

参考文献

康一梅,张永革,李志军,等.嵌入式软件测试.北京:机械工业出版社,2008.

BACH J. Session?based test management . Software Testing and Quality Engineering, 2000, 2(6): 1?4.

WHITTAKER J A.探索式软件测试.北京:清华大学出版社,2010.

LYNDSAY J, VAN EEDEN N. Adventures in session?based testing . . http://stickyminds.com/articl.

TUOMIKOSKI J, TERVONEN I. Absorbing software testing into the scrum method . Lecture Notes in Business Information Processing, 2009, 32: 199?215.

软件开发试用期总结篇(4)

中图分类号:G642

文献标识码:B

文章编号:1672-5913(2008)02-0055-02

1软件开发团队建设

在进行软件工程教学活动初期,我们对学生按小组建立相应的软件开发团队。

1) 团队建设的目的:如何将软件工程原理、方法和过程应用到实践中,体验软件工程各阶段的主要工作,特别注意吸取教训;学会与他人合作,培养团队精神。

2) 软件开发项目:由于针对的是专业基础知识不全面、缺乏工程经验的大三学生,因此要求各小组根据自己的特点选择最适合的项目,同时强调小组的实践重点的是学习过程与活动的实施技巧,而对具体的技术不做特别的要求,从而更能发挥学生的主动性与团队的优势。

3) 团队建设要求:全班分为若干小组,每组6~8人。各组角色分配及其职责如下。

■项目经理(1)

■系统分析员、软件设计师(1+1)

■软件开发工程师(软件开发经理1+3)

■测试工程师(测试经理1+1)

为了更好地实施基于软件团队的软件工程实践,通过对实践结果及评分标准加以限制,从而更好地指导学生的实践活动。实践结果及评分标准如下。

团队提交的实践结果:需求规格说明书、概要设计说明书、详细设计说明书、测试计划、测试分析报告、项目开发总结报告、开发进度周报;个人总结报告;演示Demo。

评分标准:项目文档描述80%;个人总结报告15%;Demo 5%。

上述的评分标准表明团队是评分的基础,这样就克服了传统教学单一实践结果的考评模式,而且评分的重要内容是软件开发过程。通过上述以团队评分为主,个人表现为辅的评分体系,达到培养学生学会与他人合作,培养团队精神的目的;通过以软件过程文档资料评分为主,以实践结果为辅的评分体系,达到学生对软件工程过程及软件工程化方法的掌握。

2教学内容

1) 软件工程概论:主要包括软件的定义、软件的特点、 软件的种类以及软件工程的定义、软件过程。其中重点和难点是软件和软件工程的基本概念、软件生命周期及软件开发的几种模型。

2) 需求工程与管理:主要包括需求分析的任务、需求分析的步骤、需求规格说明与评审以及需求的管理。其中重点和难点是各种需求方法的理解和掌握。

3) 软件设计:主要包括软件设计的概念、技术和方法。其中重点和难点是系统的体系结构设计、分布式样体系结构,以及面向对象设计方法的理解和运用(方法)。

4) 软件测试:主要包括软件检验和有效性验证、软件测试的概念和测试技术。其中重点和难点是软件检验和有效性验证概念、方法。

5) 软件变更:主要包括软件变更的定义、分类、特点、软件维护。其中重点和难点是认识到软件维护的重要性、软件维护的方法和步骤。

6) 软件管理:主要包括软件项目特点、相应的管理技术。

3教学实践

根据上述教学内容及软件开发团队的建设,采用如下的教学策略。

1) 职业道德与行为规范:对于职业道德与行为规范并不单独安排时间讲解,而是将相关的内容融入到需求分析、软件设计、软件测试及软件变更的具体实施过程中。

2) 软件项目管理:安排专门的时间对其进行讲解,目的是让学生对软件项目管理有一个框架性的认识。在讲述需求分析、软件设计、软件测试及软件变更的具体实施过程中,再将软件项目管理的相关知识融入其中。

3) 软件过程:对于软件过程是我们讲述的重点。该部分将安排比较充裕的时间对其进行讲解,使学生对软件的开发过程有一个总体的认识,同时也对现在的几种开发模型加以分析与对比,从而达到在实际项目中软件的过程的真正含义。

4) 需求分析、软件设计、软件测试及软件变更:这是我们讲述的重点,在讲解需求分析、软件设计、软件测试及软件变更的基本理论、方法的同时,也要将这些理论、方法如何运用到学生的团队中,从而真正让同学们在学习理论、方法的同时,也将相关的知识运用到具体的实践中,克服了传统的单纯理论、方法的讲解。

图1是从立体上展示教学内容与时间的先后顺序。

4教学效果

按照上述的教学实践进行了两届学生的尝试,达到了较好的教学效果。正如同学们的反映:“把软件工程这门课列为最喜欢上的课”,“上了软件工程这门课我感觉非常有收获,尤其是那些深入浅出的例子给了我很多启发。课后的课程设计更是给了我很大的锻炼。”“总之做完这个系统,我感觉自己又加深了对团队精神的理解,也让我对自己有了一个更加清楚的认识。”

收稿日期:2007-10

参考文献

软件开发试用期总结篇(5)

中图分类号:TP311.53 文献标识码:A

1 软件测试课程教学现状及分析

1.1 软件测试课程教学现状介绍

软件测试是软件工程专业本科生的一门重要的必修课程。在本校的课程设置中为56学时,其中理论教学为32学时,上机实践为24学时,由于软件测试的各个环节分别对应于软件工程的相应环节,使得软件测试课程的内容庞杂,而其实践环节也相应地具有内容杂,任务重的特点。

软件测试的教学目标是通过理论及实践教学,让本科生熟悉软件测试的工作流程、常用软件测试方法及常用工具的使用及软件测试过程管理。

教学过程中的主要参考书目为机械工业出版社出版,原著为Paul C.Jorgensen,韩柯等译的《软件测试(原书第2版)》,原书的英文名为《Software Testing A Craftsman''s Approach(Second Edition》。授课基本流程基本也是依据以上教材的流程,首先介绍软件测试的概论,介绍什么是软件测试,软件测试的意义、软件测试的基本流程和基本概念等内容。接着介绍贯穿全书的软件测试需要的示例以及软件测试所需要的基本理论知识,包括测试人员使用的离散数学及图论相关知识。介绍完以上知识以后,按照软件测试流程依次介绍单元测试、集成测试和系统测试的测试用例开发方法和技术。其中在单元测试部分分别介绍单元测试部分的黑盒测试和白盒测试内容,黑盒测试部分包括边界值测试、等价类测试和基于决策表的测试,在白盒测试部分介绍路径测试、数据流测试等结构性测试方法的测试用例开发技术。介绍完以上内容以后,又介绍了面向对象的软件测试方法。

课程的上机实践基本上也是配合上课的流程进行安排,在相应的知识点介绍以后,安排学生按照指定的技术开发测试用例以进行测试活动,附带掌握相应的软件测试的各种管理和自动化工具。

1.2 软件测试课程教学现状分析

通过以上教学流程的描述结合以往毕业生工作以后反馈,可以总结其教学过程的特点为:通过系统的学习,同学们基本上能掌握软件测试用例开发的各种技术要点,对所有的知识点都有所触及,通过学习同学们基本上能够掌握各种实用的软件测试用例的开发方法,也能将各种方法应用于实际软件测试中。

而在实际软件测试实践中,软件测试工作具有以下特点:

首先,依据测试工作越早开展越有利的原则,软件测试一般从开发的初期就开始介入。例如在开发初期,需要编制测试计划进行时间人员和物力上的计划;在需求分析阶段需要进行软件测试的系统测试用例的开发;在设计阶段需要进行集成测试用例的开发,随着设计粒度越来越细,相应的路径及数据流集成测试用例也向下扩展;到达软件编码阶段,主要依据相应白盒技术进行单元测试用例的开发。其次,现代化的测试管理技术需要利用软件全面管理软件测试过程中的环节,包括测试计划的建立及管理、测试用例的管理、测试过程评价管理等。最后,因为人力资源成本的提高及各种技术限制,各种自动化的软件用例的运行软件的使用越来越多等。

通过比较教学过程及实际软件测试的开发过程很容易发现以往教学过程具有以下限制:

首先,没有将软件测试作为软件开发的有机部分进行介绍,而是将软件测试过程从软件开发过程中割裂开来。知识点没有按照实际应用过程展开,容易造成同学们掌握各个知识点,却无法形成知识实际应用能力。其次,缺少相应的测试管理软件的介绍和实践,影响了同学们对软件测试管理的重要性的认识。最后,教学课程缺乏同学们比较感兴趣的各种软件测试自动化工具的介绍。降低了同学们的学习兴趣。

2 软件测试课程教学改革方法探讨

通过上文的现状介绍和分析,针对以上教学方法进行改造,同时本着扬长避短的原则,在中国石油大学(华东)软件工程专业2009级软件测试课程教学过程中进行了教学改革。

教学改革的契机为本校软件工程专业和IBM公司开展教材合作编写项目,软件测试作为软件开发的重要部分获得了空前的发展良机。

具体的有利因素可以概括为:首先,学校向IBM公司购买JAZZ开发平台及相应的专业软件测试管理软件。通过和业界领先的最新的软件测试管理软件接触,了解了最新的软件测试管理理念;其次,通过IBM公司对教工的业务培训,了解了IBM公司的各种软件测试工具的使用情况;最后,通过本文作者共同努力,将平时用于开发的实际应用软件例如体育公共课管理软件等进行整合,用于软件测试用例的案例教学。

有了以上基础前提以后,结合以上有利条件,教改的主要做法如下:首先进行案例化教学,通过自己开发的软件这样生动的实例向同学们介绍软件开发过程中的软件测试的重要性和各种原则,避免了介绍知识的空洞和乏味,提高了同学们的学习兴趣;其次,在案例化教学的指导思想下,重新安排各个教学点的教学顺序,主要脉络为依照软件开发的实际流程,首先介绍系统用例开发技术,然后介绍继承测试用例开发,到最后介绍单元测试用例开发方法。在运行测试用例的过程中,充分结合IBM公司提供的各种软件测试用例运行工具,使得学生能够活学活用。最后,充分利用IBM的软件平台,介绍业界领先的软件管理工具的使用,使得学生学习兴趣得到极大提高。

通过以上的教学改革,理顺了教学和实践的关系,使得教学过程紧密联系实际软件的开发过程,同学们对软件测试课程的理解得到了加深。

3 结论及下一步工作

通过上文对教学现状的总结,以及针对教学现状的利弊进行分析,本文充分利用外部优势大胆进行了软件测试的教学改革,取得了预期的改革目标。同时也注意到改革工作才刚刚开始,还有很多需要完善的地方。接下来的工作主要包括:进一步丰富用于软件测试教学的案例及密切关注业界测试技术的最新发展以用于教学。总之,本文的教改工作达到了预期的目标,使得同学们对于软件测试的理解较之以前更加条理化、系统化和实用化。

参考文献

软件开发试用期总结篇(6)

中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)17-31397-02

Based on CMM Software Development and Testing

YANG Guang

(Northeastern University College of Software,Shenyang 110004,China)

Abstract:Demand for software development, including design, programming and testing, and software quality assurance testing software is the key steps have been more and more people's attention. Currently, the CMM (Capability Maturity Model, Capability Maturity Model) has become the world's most popular, most practical kind of software production process standards, received international recognition software industry has become in today's enterprise-scale software as an indispensable. In software development and testing process, the characteristics of the enterprise itself, using the CMM software development management processes, to improve software development quality and efficiency.

Key words:CMM;software development;software testing

1 引言

软件开发包括需求、设计、编程和测试,而软件测试是软件质量保证的关键步骤,已经得到人们越来越多的重视。目前,CMM (Capability Maturity Model,能力成熟度模型)已经成为国际上最流行、最实用的一种软件生产过程标准,得到了国际软件产业界的认可,成为当今企业从事规模软件生产不可缺少的一项内容。2000年,国务院的《鼓励软件产业和集成电路产业发展的若干政策》中第17条中表示,将对软件出口型企业CMM认证费用予以适当支持。如今,国内企业也越来越重视基于CMM的软件开发和测试。

2 CMM简介

20 世纪 80 年代中期,国际软件产业界对软件过程的研究十分重视,因为在采用软件工程方法克服软件危机的过程中,人们已认识到,软件过程是否完善是软件风险大小的决定因素。1986 年 11 月,美国卡内基梅隆大学的软件工程研究所( Software Engineering Institute , SEI )应美国联邦政府的要求,针对美国国防部对软件承包商的能力评价问题,研究 “ 过程成熟度框架 ”。1987 年 9 月, SEI 开发了一套软件能力成熟度框架和软件成熟度问卷,用来评估软件供应商的能力。1991 年, SEI 自己总结了成熟度框架和初版成熟度问卷的实践经验,并以此为基础推出了 “软件能力成熟度模型( Capability Maturity Model For Software , CMM ) 1.0 版 ”。1993 年, SEI 在广泛听取美国政府和各界软件专家的意见后,推出了目前世界上比较流行的通用的 CMM1.1 版。

CMM是一个用来描述软件组织的模型,用于评价软件承包能力并帮助其改善软件质量的方法。CMM是评估软件能力与成熟度的一套标准,它侧重于软件开发过程的管理和工程能力的提高与评估。CMM表现了软件组织能力成熟度的特称,确切的说,CMM是在软件流程上的能力成熟度。 CMM将软件组织抽象为能力成熟度模型。能力成熟度是软件组织解决“按时,按计划,高质量”这一问题的关键因素,而CMM的目的,就是要帮助软件组织在进度和预算范围之内生产出高质量的软件产品。

CMM标准共分五个等级(5级为最高级别),是一个动态的过程,企业可根据不同级别的要求,循序渐进,不断改进。从第一级到第五级分别为:初始级、可重复级、定义级、管理级和优化级,从低到高,软件开发生产的计划精度越来越高,每单位工程的生产周期越来越短,每单位工程的成本也越来越低。

3 基于CMM的软件开发与测试

CMM是一种管理方法,是一个软件过程改进框架,这个框架与软件生命周期无关,也与采用的技术无关。CMM目前代表着软件发展的一种思路,一种提高软件过程能力的途径。尽管它存在着某些不足。例如,成熟级别、关键过程域、公共属性和关键实践还需要在软件行业进一步深入地讨论和修订,但它确实为软件行业的发展提供了一个良好的框架,而且是浓度软件过程能力提高的有用工具。增强我国软件企业的竞争力,提高国产软件的水平是国人的共同愿望,但目前我国软件水平,尤其是软件开发能力和软件生产能力还很差。那么,如何提高我国软件的开发和生产能力,从而提高软件整体水平?软件企业实施基于CMM的软件开发与测试也许不失为一条有效的途径。

按照CMM要求将开发分为九个阶段:项目规划、小组启动、需求分析、概要设计、详细设计、编码调试、系统集成与测试、验收、项目关闭。其中软件的测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审。

下面从各个阶段主要项目活动、阶段交付文档和评审点出发,详细描述项目开发的各个阶段。

(1)项目规划

项目规划要对所要解决的问题进行总体定义,包括了解用户的要求及现实环境。计划阶段要从技术、经济和社会等3个方面研究并论证本软件项目的可行性,编写可行性研究报告,探讨解决问题的方案,并对可供使用的资源(如计算机硬件、系统软件、人力等)成本,可取得的效益和开发进度做出估计,以制订完成开发任务的实施计划。另外,项目的相关人员提出创新性的想法,并对自己的想法进行可行性分析,研究新想法的问题范围,探索这个问题是否值得去解决,是否有大概的解决办法,并对需要的资源进行估计。

本阶段的交付文档是立项说明书,立项说明书必须提交工程委员会进行评审。如果评审不通过,项目就此结束。

(2)小组启动

在项目立项评审后,根据先前的资源估计成立项目开发小组,确立开发小组中各个角色的成员,然后对项目开发需要的软件和硬件资源进行分配,并搭建好项目开发环境。结合项目最后的期限要求以及分析CMM 历史度量库,确立项目开发的一级计划,确定以下各个开发阶段的评审点。本阶段的交付文档主要有项目计划书和小组启动说明书。项目计划书必须经过工程委员会的评审,如果评审通不过,必须参考CMM的历史度量库来修改项目计划直至通过评审。

(3)需求分析

需求分析是一个对用户的需求进行去粗取精、去伪存真、正确理解,然后把需求用软件工程开发语言(形式功能规约,即需求规格说明书)表达出来的过程。分析阶段的基本任务是和用户一起确定要解决的问题,建立软件的逻辑模型,编写需求规格说明书文档并最终得到用户的认可。需求分析的主要方法有结构化分析方法、数据流程图和数据字典等方法。

基于CMM的需求分析阶段更注重项目的管理流程。首先项目组要确立在该阶段的二级计划,然后开始需求分析,明确需要开发系统必须具备的功能。并要主动与用户交流,获取需求并分析需求。制定相应的系统测试计划,在这以后的每个阶段项目组长都必须提交阶段工作报告。

CMM的需求分析阶段主要交付的文档有更新后的项目计划书、需求跟踪矩阵、需求分析说明书、系统测试计划书、项目词汇表和阶段工作报告。需求分析说明书必须提交给工程委员会评审,只有在评审通过后,才能进入下一个开发阶段。

(4)概要设计

一般软件设计可以分为概要设计和详细设计两个阶段。实际上软件设计的主要任务就是将软件分解成模块。概要设计就是结构设计,其主要目标就是给出软件的模块结构,用软件结构图表示。

基于CMM的概要设计阶段不但要为系统描述系统流程图、构建系统的可能方案、确立的系统总体方案和进行模块划分及设计。而且还有进行一些系统的集成测试计划和设计评审等工作。该阶段主要的交付文档为更新的项目计划书、更新的需求跟踪矩阵、编程规范、概要设计说明书(包含总体方案)、集成测试计划书、意见反馈单、阶段工作报告。各个模块的概要设计说明书和总体方案必须经过评审。

(5)详细设计

详细设计阶段是对概要设计的结果的细化,概要设计已经达到函数级的分解,详细设计是对分解的函数进行实现的描述。一般详细设计的首先要设计模块的程序流程、算法和数据结构,其次,要设计数据库,常用方法还是结构化程序设计方法。

基于CMM的详细设计阶段必须依次补充完善需求跟踪矩阵,并确立单元测试计划和进行评审。该阶段的交付文档为更新的项目计划书、更新的需求跟踪矩阵、详细设计说明书、单元测试计划书、意见反馈单和阶段工作报告。各个模块的详细设计必须经过评审。

(6)编码调试

软件编码是指把软件设计转换成计算机可以接受的程序,即写成以某一程序设计语言表示的"源程序清单"。充分了解软件开发语言、工具的特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。当前软件开发中除在专用场合,已经很少使用二十世纪80年代的高级语言了,取而代之的是面向对象的开发语言。而且面向对象的开发语言和开发环境大都合为一体,因此大大提高了开发的速度。

基于CMM的编码调试阶段的任务包括:①项目组制定出在本阶段的二级计划;②学习确认编程规范,再开始编码,同时必须进行同行检查和走读检视;③进行单元测试。一般认为单元测试应紧接在编码之后,当源程序编制完成并通过复审和编译检查,便可开始单元测试。测试用例的设计应与复审工作相结合,根据设计信息选取测试数据,将增大发现上述各类错误的可能性。在确定测试用例的同时,应给出期望结果。该阶段的交付文档为更新的项目计划书、更新的需求跟踪矩阵、代码、单元测试报告、意见反馈单和问题跟踪单。所有代码必须经过工程委员会的评审,以确认是否符合编程规范要求。

(7)系统集成和测试

软件测试的目的是以较小的代价发现尽可能多的错误。要实现这个目标的关键在于设计一套出色的测试用例(测试数据和预期的输出结果组成了测试用例)。如何才能设计出一套出色的测试用例,关键在于理解测试方法。不同的测试方法有不同的测试用例设计方法。两种常用的测试方法是白盒法和黑盒法。

一般测试分为:单元测试、集成测试和系统测试。单元测试阶段通常是属于开发项目组编码调试的范畴。单元测试阶段后要将系统集成成一个可运行版本。此后,就进入系统集成和测试阶段,系统测试应该由若干个不同测试组成,目的是充分运行系统,验证系统各部件是否都能政党工作并完成所赋予的任务。该阶段主要的交付文档为集成测试报告和系统测试报告、问题跟踪单和阶段工作报告。在测试阶段完成后,必须经过内部验收的评审才可以提交进入正式的验收阶段。

(8)验收

在验收阶段,项目组主要是配合客户进行验收。首先准备好用户手册以及相关文档,并提交系统验收检查单,协助客户进行验收测试。本阶段的交付文档为验收报告,客户签署的验收报告也就是对本阶段的评审。

(9)项目关闭

本开发过程最后强调的是项目关闭阶段,这个阶段是对项目开发的总结。针对CMM 中关键过程域的实施执行情况,各个角色必须提交相应的角色总结报告。在项目组长汇总后,总结项目开发中的不足和经验,提交过程改进意见和CMM度量库。这个过程有助于项目开发组织改进自己的软件开发过程。

4 总结

CMM 是国际公认的 “ 事实 ” 标准,是中国软件业走向国际市场的通行证。CMM的目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。因此在软件的开发和测试的过程中,针对企业自身的特点,采用CMM软件开发管理流程,能够提高软件开发的质量和效率。

参考文献:

[1]何新责.软件能力成熟度模型[M].北京:清华大学出版社,2000.

软件开发试用期总结篇(7)

1引言

长期以来,软件项目高失败率的状况一直困扰着人们,研究表明,软件项目失败的原因主要有两个:一是应用项目的复杂性;二是缺乏合格的软件项目管理人才。实践证明缺乏有效的项目管理是导致软件项目失控的直接原因。软件开发的风险之所以大,是由于软件过程能力低,其中最关键的问题在于软件开发组织不能很好地管理其软件过程,从而使一些好的开发方法和技术不能起到预期的作用。

流程管理作为现代企业管理的先进思想和有效工具,随着市场环境与组织模式的变化,在以计算机网络为基础的现代社会信息化背景下越发显示出其威力和效用。流程管理不仅是一种管理技术,更体现了现代管理的思想。流程管理的重点是:理清和管理好所有主、支流程间的关系,使他们相互协调发挥应有的作用。流程管理增加了部门的透明度,管理的对象不是“部门”和“部门员工”的概念,而是以工序流程为管理对象,注重流程中每一个过程和效率以及和上下游工序的关系,管理重点在于整体流程的完整性和顺畅性。目前,流程管理技术的研究已越来越受到人重视。

运用流程管理方法和技术进行软件项日管理,可以有效地改变软件过程管理混乱的局面首先埘软件项目开发过程进行有效的、规范化的定义;其次,在软件项目开发过程中,所有的活动过程均按照流程所规定的活动的逻辑关系、活动的实现方式来执行,这样可以使得所有的活动有序和可控;第三,通过明确运作流程,使项目组人员迅速融入项目和开发过程中;第四,关注每个过程的“结果”,使软件项目的所有工作产品均能得到有效的保存,保证了软件产品完整性。Www.133229.coM

2流程的概念及在软件项目管理中的作用

流程是由活动组成的。基本活动是由个人或团体来完成的,它不需要进行其他的基本活动的转化。流程的各个活动之间有着特定的流向,它包含着明确的起始活动与终止活动,因此是一个动态的概念。从结构上来看,流程有四个基本的构成因素:活动、活动的逻辑关系、活动的实现方式和活动的承担者。流程与“一系列的活动或事件”,“结果”等概念密切相关。流程管理不仅是一种管理技术,更体现了现代管理的思想,原有的以控制、塔式组织为基础的职能行政管理已经不能完全满足于现代企业发展和市场竞争的需要,管理的发展沿着分工理论运行了上百年后,现在又重新回归到整合与系统。

软件项目生命周期的一系列的开发过程是各种各样的流程活动:软件项目的计划编制、系统分析、慨要设计、详细设计、程序编码、测试与维护等活动过程都是一种流程活动:制定软件项目管理流程,重点考虑以下几点:

1)制定的流程能引导项目逐步走向成功;

2)制定的流程能适用软件开发过程;

3)制定的流程能指导项目开发活动.有利于对项日开发活动的管理;

4)制定的流程能以苴观的流程图表示.能使项目组成员清楚的知道软件开发与管理的过程和相互之间关系;

5)流程中的起始活动条件、终止活动条件明确、规范便于控制:

6)流程中的工作产品定义明确、可度趟,评价标准和方法具体、可操作

3软件项目管理总体流程设计

在软件项目开发管理过程中,不仪要努力实现项目的范围、时间、成本和质量等目际,还必须协调整个项目过程,以满足项目参与者及其他利益柑关者的需要和期望;随着软件规模和所涉及的领域不断地扩大,软件项目的管理越来越困难,纵观所有失败的软件项目.基本原因是不能管理其软件过程,在无纪律的、混乱的项目状态下,组织不可能从较好的方法和工具中获益。严谨的软件过程控制管理不仅可以在每个阶段回顾和纠正项目的偏差.别软件项目的风险甚至果断中止项目。且可以将人才流动所带来的不利影响减少到最小。要进行有效的过程控制,必须明确软件项目管理流程。

软件项目管理总体流程设计为项目搜寻、立项、售前合同生成和合同执行等5个主要阶段,分别以pl、p2、p3、p4、p5表示;同时设计了立项完成、合同签定、功能定义、软件开发、项目验收等5个里程碑,分别以tm1、tm2、tm3、tm4、tm5表示,如图l所示。在这些流程中,合同执行流程是软件项目管理的核心,其主要过程有:产品定义、软件开发、测试执行、内部验收、项目实施与验收、项目维护.

4软件项目管理总体流程分析

4.1项目搜寻

项目搜寻是项目立项的基础,项目搜寻阶段的主要任务包括市场信息收集,用户需求跟踪,对潜存的项目进行分析和筛选。

4.2项目立项

立项阶段的主要任务是确认立项的理由,提出立项建议,提供合适的资金和资源,使立项建议成为正式项目。

4.3项目售前

售前阶段从项目立项开始到项目合同的签定结束,主要工作有:制定与客户的交流计划,详细了解客户的背景资料,了解客户启动项目的缘由、目的和期望,编制项目方案建议书,准备合同蓝本。

4.4合同生成

合同生成阶段的主要工作有:项目方案的评估与确定技术合同、商务合同的商定、评估与签署。

4.5合同执行

合同执行是软件项目管理流程的重点,可分为软件开发、测试执行;内部验收、项目验收、系统维护等五个基本工作过程。

4.5.1软件开发

软件开发阶段分为:需求调研、系统分析、系统设计、编码、单元测试等过程。主要从三个方面进行管理:

1)制定项目计划。软件项目计划是一个用来协调所有其他计划,以指导项目执行和控制的可操作文件。它体现了对客户需求的理解,是开展项日活动的基础,也是软件项目跟踪与监控的依据。

2)确定开发过程。根据软件项目和项目组的实际情况,建立起一个稳定、可控的软件开发过程模型,并按照该过程来进行软件开发

3)加强过程控制一过程控制主要包括过程管理、变更控制和配置管理,、

4.5.2测试与执行

项目测试的目的是俭查系统是否符合项目合同与任务书规定的要求、项目测试分集成测试和系统测试,主要进行功能测试、健壮性测试、性能一效率测试、用户界面测试、安全性测试、压力测试、可靠性测试、安装/反安装测试等测试过程在模拟运行环境中进行。

4.5.3内部验收

项目完成集成测试和系统测试后进行项目内部验收.主要有三个步骤:①文档准备。项目经删提交内部验收计划、项目开发总结报告、产品清单:财务主管提交项目财务预算报告。②内部验收测试。内部验收测试的测试内容与方法虽然与系统测试基本相同.但应站在用户验收的角度进行,因为它是试运行的基础。通过这一步。为用户验收作充分的准备。③内部评审。对提交的所有文档及测试结果进行内部评审,完成项目开发总结报告:

4,5,4项目试运行与验收

试运行与用户验收阶段的主要任务是,使所有的工作产品得到用户的确认。主要工作有:①验收前的准备。项目经理负责检查产品的完整性。包括文卡当、介质和中间产品等,以确保现场实施的成功;负责应用软件的现场安装调试,完成安装调试总结报告;负责制定用户验收计划,并得到客户的确认。②用户进行验收测试和系统试运行,进行文档和系统的移交。③用户确认。项目经理负责与客户协测,协助用户进行项目验收,形成用户验收报告。

45.5项目维护

软件系统的维护分为两大类:一类是纠错性维护,由于前期的测试不可能暴露软件系统中所有潜在的和隐含的错误,诊断和改正这些错误的过程为纠错性维护。另一类是完善性维护,在软件正常使用过程中,用户还会不断地提出新的需求,为了满足用户新的需求而增加软件功能的活动称为完善性维护。如果需求变更很大,那完善性维护将转变为软件新版本的开发。系统维护的宗旨就是提高客户对软件产品的满意度。确保系统的正常运行是系统维护的根本目的。

4.6软件项目管理的里程碑

项目的考核与评审是软件项目管理流程控制的基础,我们在整个流程中设定五个基线,即确定五个里程碑,它们分别是tm1:立项完成;tm2:合同签订;tm3:产品功能定义完成;tm4:软件开发完成;tm5:验收通过。

如图1所示。各阶段的主要的进入条件和相应的工作结果是里程碑是否达到的重要标志。

软件开发试用期总结篇(8)

二、系统需求分析:需求分析的任务在于完全地弄清用户对软件系统的确切需求,它具有三大特点:准确性和一致性;清晰性和没有二义性;直观、易读和易于修改。比如,你首先要知道做这个项目是为了解决什么问题;测试案例中应该输入什么数据等等,为了清楚地知道这些需求,你经常要和客户、项目经理交流等。需求分析的步骤:1、通过对现实环境的调查研究,获得当前系统的具体模型;2、去掉具体模型中的非本质因素,抽象于当前系统的逻辑模型;3、分析当前系统与目标的差别,建立目标系统的逻辑模型;4、对目标系统进行完善和补充,并写出完整的需求说明;5、对需求说明进行复审,直到确认文档齐全,并且符合用户的全部需求为止。

三、系统设计:主要分成两步即概要设计(总体设计或结构设计)和详细设计。概要设计阶段应着重解决实现需求的程序模块设计问题,如何把被开发软件系统划分成若干模块,并决定模块的接口,模块间的相互关系以及模块之间传递的信息。详细设计则是要决定每个模块内部的具体算法。经概要设计和详细设计完成后,需要进行必要的阶段评审,其目的在于使设计发生问题能够及时发现并得到及时的解决。实际上软件设计的主要任务是就是将软件分解成模块,该模块是指能实现某个功能的数据和程序说明、可执行程序的程序单元。

四、系统编码:系统编码即编程序是软件开发的最终目标,是产生能在计算机执行的程序,其目的是使用选定的程序设计语言,把模块的过程性描述翻译为用该语言书定的源程序。实质上,软件=程序+文档。编码的目的是产生程序,其余阶段是产生文档。软件编码是指把软件设计转换成计算机可接受的程序,写成以某一程序设计语言表示的“源程序清单”。能充分了解软件开发语言、工具特性和编程风格,有助于开发工具的选择以及保证软件产品的开发质量。

五、系统测试:包括测试的方法与技术和测试步骤。测试在软件生命期中占重要地位,不仅是因为测试阶段占的时间、花费的人力和成本占软件开发的比重很大,而且它直接影响着软件的质量。程序中许多细微的地方要求绝对正确无误,不能半点马虎。软件开发工作在测试以前已经历了制定计划、需求分析、设计和编码等许多阶段,每一个人的思维不可能绝对周密,而不可能不出现差错,更不用说,在大中型软件开发项目中,系统内各部分之间、各种数据之间、各种人员之间存在着复杂的关系,因而目前可采用的开发方法都不能完全避免发生差错。1、测试的方法与技术主要是机器测试与人工测试和白盒测试与黑盒测试。机器测试是在设定的测试数据上执行被测程序的过程,又称为动态测试。人工测试并不是可有可无的,为了节约计算机机时采取的权宜措施。它是机器测试的准备,也是程序测试中不可缺少的环节。而白盒法和黑盒法主要依据是软件的功能或软件行为描述,发现软件的接口、功能和结构错误。其中接口错误包括内部、外部借口、资源管理、集成化以及系统错误。2、测试步骤。分单元测试(模块测试)、综合测试、确认测试和系统测试四部分组成。它是整个计算机系统(包括软件与硬件)的测试,可与系统的安装和验收结合进行。测试的目的是让你知道,什么时候算是完成了,这样可以及时知道你是否真的完成。

软件开发试用期总结篇(9)

摘要:在开发软件的过程中,必须进行有效的测试过程,以保证软件的质量,使企业在竞争中立于不败之地。本文首先总结了软件测试的原则,然后分析了传统的V测试模型的一些缺点,并在此基础上提出了改进的V测试模型。关键字:V测试模型 测试原则 生命周期测试作者简介:马俊,男,24岁,西南大学硕士研究生,主要研究方向:计算机软件与理论;丁晓明,男,40岁,西南大学计算机科学与信息学院副教授,硕士生导师。1引言随着计算机技术的飞速发展,软件行业的竞争日益激烈,在开发软件的过程中,人们使用了许多保证软件质量的方法来分析、设计和实现软件,以保证自己生产的软件在竞争中的不败。但开发人员难免会在工作中犯错误,特别是对于规模大,复杂性高的软件更是如此。这样,在软件产品中就会隐藏许多错误和缺陷。这些错误和缺陷如果遗留到软件投入运行之时,终将会暴露出来。1996年,由于阿里亚纳(Ariane)5号火箭上的软件系统失败,损失了多个卫星,造成的间接经济损失达到数十亿美元[1]。象这种要求极高的系统的验证工作比其他类型的系统更为重要,而且成本也高得多。但若不进行足够的验证而出现Ariane5号火箭这种情况,则造成的损失比验证的成本要高得多。许多类型的软件所使用的领域还涉及到人类的生命安全。比如医用领域的胰岛素注射系统,若因软件的缺陷而造成系统故障,向病人注射过量的胰岛素,会导致脑功能障碍甚至死亡。以上提到这些风险及大的软件系统,在开发过程中必须经过严格的测试,以验证软件系统的可靠性。就算一般的系统,虽然不会对人的生命造成危害,但是在经济方面的损失是不可估量的。比如银行的管理系统,若出现系统崩溃的情况,经济损失巨大。所以不管什么系统,都必须在经济允许的情况下,进行足够的测试,已保证软件的质量。2软件测试的原则软件测试有以下几项原则:(1)在软件开发生命周期中尽早地和不断地进行测试[2]。质量保证协会的调查表明,应用系统每1000个源语句中存在大约60个缺陷,这些缺陷中有2/3是出现在系统的需求和设计阶段的。如果拖到后面的阶段解决这些缺陷,将增加大量费用。(2)测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成。(3)程序员应避免测试自己的程序。如果程序员测试自己的程序,他会按自己开发时的思维方式来看待自己的程序,总认为自己的程序是正确的,不利于找到缺陷。(4)要妥善保存测试计划、测试用例、出错统计和最终分析报告,这些文档会为维护人员维护阶段的工作提供方便。维护阶段是软件交付后的阶段,有可能维护人员是用户方的人而不是开发人员,保留这些文档就尤为重要。3传统的V测试模型分析传统的V模型如下图:图1 传统V测试模型其左边每个开发活动都与右边的测试活动相对应,它描绘了软件开发过程中,需求、总体设计、详细设计和编码逐步实现,针对这些开发阶段的测试,其开展的次序正好相反。也就是说,代码最后被开发出来,而相应的单元测试首先被执行;需求最早开发,但相应的验收测试是最后才进行的。这个传统的模型是早期开发出来的,和现代软件工程中测试的原则不相适合。V模型的缺点:(1)V模型是等到编码结束才开始进行单元测试,和前面提到的要在软件开发生命周期中尽早地和不断地进行测试这个最重要的测试原则相矛盾。(2)应该开发和测试并行,开发小组和测试小组通力合作,而传统的V模型的这种方式很可能出现这种情况,开发人员编码完成,就等着测试小组提交缺陷报告,然后修改程序。这种就比较空闲,不利于人力资源的利用,也不利于小组间的合作。(3)这个模型测试过程和开发过程在时间上严格的划分开,这样不利于测试计划、测试用例、出错统计和最终分析报告等文档的保存。4改进的V测试模型我们在整个开发过程中应该进行生命周期测试,即在开发过程中对系统进行持续的测试,测试活动应该在需求阶段就开始,而不是在传统的编码之后,并且软件测试进程应该是和软件开发的开发进程并行进行的。基于以上原因以及传统V测试模型的缺点,提出了改进的V测试模型,如下图。图2 改进的V测试模型这个模型左边是开发阶段,右边是与各个开发阶段对应的测试。他们的执行顺序都是从上到下,测试与开发并行进行。如需求分析阶段就有制定测试计划和测试需求这两个测试步骤;软件设计阶段就设计此阶段的测试用例并测试设计阶段得出的结果。每个阶段都要设计相应的测试用例,一旦得出了可测试的结果,就对其进行测试。这也符合尽早地和不断地进行测试这个原则。而且这样的话测试小组和开发小组就可以更好地合作,有利于资源利用。该模型从一开始的需求阶段就制定测试计划,在需求分析的过程中,对可测试的需求文档进行需求测试。测试计划的目标是描述所有要完成的测试,包括完成所需的资源和进度。测试计划应给出被测试软件的背景信息、测试的目标和风险,以及所要执行的特定测试。测得太多不行,浪费人力财力;测得太少也不行,软件的质量得不到保证。有效的测试方法就是明确和评价计算机系统的各种风险。能把这些风险缩小到测试范围内是很重要的。要确定能接受多少风险,然后制定测试计划实现这个目标。风险的概念确定了从经济学的角度考虑需要完成多少测试或测试类型,而不是进行不可能完成的穷举测试或者凭直觉胡乱地测试。所以有经验的测试人员会基于风险找到一个平衡点,逐步完成测试计划。需求测试的目的是要确保需求得到了正确的记录,保 证信息服务项目小组正确解释了需求。由于需求阶段应该是用户占主导地位的阶段,所以测试必须要确定需求很好地代表了用户的需要,确定已经文档化了需要。接下来是对总体设计和详细设计的测试。这个阶段执行设计评审以及审查可交付的设计结果。此阶段的测试和需求阶段的测试都是静态测试,没有可执行的代码,只有文档和可交付结果用于审查。如果将缺陷遗留到后面的阶段解决,会增加许多花费。这也不符合及早地不断地进行测试的原则。可交付结果包括:输入规格说明、处理规格说明、输出规格说明、控制规格说明、系统流程图等等,基本上就是对这些文档进行测试。这个阶段有几个任务需要完成:分析设计因素、进行设计评审、审查设计阶段可交付的结果。编码阶段进行的测试,主要是针对代码进行测试,已白盒测试技术为主,已黑盒测试为辅。白盒测试技术中的语句覆盖、条件覆盖、路径覆盖等技术都可用于代码的测试阶段。从这个阶段开始,就有了可执行的代码,所以此阶段和之后的阶段都是进行动态测试。 编码阶段结束后就进入了传统的测试阶段,这个阶段要进行单元测试,然后在软件模块的集成过程中要进行集成测试,在进行系统测试和用户的验收测试。系统测试和验收测试里面也包括了对系统功能的测试。这个阶段基本上就按传统的测试阶段进行,但是由于此前做了许多测试工作,这个阶段的许多步骤比传统测试阶段的步骤更简单,返工的工作也更少,花费也更小。开发阶段的测试就到此为止,形成了成品软件,交付给用户方。最后测试小组要总结项目的测试结果,以提高企业测试的过程,就要评价测试的有效性。这相当于是对项目测试过程的总结,有利于以后企业对项目进行测试的效率。这个时候测试计划、测试用例、出错统计和最终分析报告这些文档就有用处了。可以通过分析这些文档,加以总结,评价测试的有效性。5结束语与进一步工作

本文指出了传统V测试模型的不足之处,结合测试原则进行分析,并提出了相应的修正措施,提出了改进的V测试模型。该模型在理论上具有比传统V测试模型优秀的地方。进一步的工作就是把该模型的思想用于实际的项目中检验,并进行分析,以从实践上论证该模型的可行性和优越性。参考文献[1]IanSommerville.软件工程[M].20__,3.[2]WilliamE.Perry.软件测试的有效方法[M].20__,3.[3]李祎,陈嶷瑛.一种有效的软件测试模型[J].计算机工程与应用,20__,10:114-115.[4]张海藩.软件工程导论[M].20__,12.[5]CemKaner&JackFalk.计算机软件测试[M].20__,5

软件开发试用期总结篇(10)

中图分类号:TP311.56文献标识码:A文章编号:16727800(2011)012003203

作者简介:崔赛英(1978-),女,云南宣威人,硕士,临沧师范高等专科学校信息科学与技术系讲师,研究方向为计算机软件与理论以及数据库理论。

0引言

随着计算机技术的普及和推广,各类型软件广泛受到各行业人员的青睐,人们对软件产生了极大的依赖 ,随着这一趋势的不断发展,人们对软件的质量要求越来越高,如何保证软件的质量已成为软件工程领域的一项重要任务。软件质量决定了软件的寿命,软件质量关系到软件的使用与维护。任何软件在投入使用前,都要检测软件设计中的错误与缺陷,以确保软件的质量。目前,保证软件质量直接有效方法就是软件测试,通过测试寻找软件的Bug、避免软件开发过程中的缺陷、关注用户的需求、衡量软件的品质,最终目的就是保证软件质量。

1软件测试概述

软件测试的目的是以最少的测试用例集合测试出更多的程序潜在错误,降低测试效率成本,确保软件的质量,软件测试在软件生命周期占据重要地位。在软件工程学中,通过如图1所示的软件开发V 模型,可以看出软件测试按操作的先后顺序可分为单元测试、集成测试、系统测试和验收测试。软件测试是软件开发过程中最艰巨、最繁重的任务,据大量的统计数据表明,软件测试的工作量占软件开发总工作量的40%左右,有的甚至超过总工作量的一半。软件测试是在软件投入使用前,对软件需求分析、设计说明以及编码进行最终复审,是软件质量保证的关键步骤。任何项目软件测试均可用白盒测试和黑盒测试。

2黑盒测试

2.1黑盒测试概念

黑盒测试也称为功能测试或数据驱动测试,它是在知道程序功能的情况下,检验软件的功能模块是否能正常使用。

2.2黑盒测试的原理、方法和功能

黑盒测试着眼于程序外部结构,把程序看作一个没有打开或黑乎乎的盒子,不关心软件内部设计以及程序实现,只关心外部表现,通过观察输入与输出即可知道测试的结果。测试者只在程序接口进行测试,检查程序功能是否符合需求规格说明书的规定,程序是否能接收输入数据而产生正确的输出信息,并保持外部信息的完整性。

黑盒测试注重于测试软件的功能需求,测试软件功能是否达到预期目的,是否符合软件说明书的要求。黑盒测试通过黑盒测试检测软件的是否存在缺陷、功能是否被遗漏,软件的性能是否满足用户需求,软件能否接受正确的数据输入,根据用户需求得到正确的数据输出,能否保持数据完整性,是否存在初始化及终止性错误等问题,确保软件的正确性、安全性、可用性、兼容性、健壮性。

目前常用的黑盒测试有边界值分、析等价划分、正交试验法、错误推测法、判定表驱动法、因果图法、功能图法、场景法等测试方法。这些方法都比较常用和适用,但在使用过程中,应根据软件项目的特点选择测试方法,以便提高测试效率。

2.3黑盒测试可行性研究

黑盒测试无须了解软件内部设计和实现等问题,只需基于软件供需求和设计说明书,站在用户角度对软件界面和软件的功能进行测试。黑盒测试技术应用于确认测试、系统测试和验收测试。测试的结果取决于测试用例,对测试人员的经验要求比较高,黑盒测试不能提供直观测试覆盖率,不容易发现内部实现的漏洞,无法对程序进行定位测试,难于衡量系统的完整性。黑盒测试偏向业务,注重整体。

目前,黑盒测试工具主要有客户端功能测试:MI公司的winrunner,compuware的qarun,Rational的robot ;服务器端压力性能测试: MI公司winload,compuware的qaload,Rational的SQA load等等; Web测试工具:MI公司的Astra系列,rsw公司的etest suite; 测试管理工具:rational的test manager,compuware的qadirector等;缺陷跟踪工具:trackrecord,Testtrack。其中,Winrunner是一个较为典型自动化测试工具,通过自动捕获、检测和模拟用户交互操作,能识别出绝大多数软件功能缺陷,从而确保那些跨越了多个功能点和数据库的应用程序在时尽量不出现功能性故障。

3白盒测试

3.1白盒测试概念

白盒测试又称为结构测试、逻辑测试和基于程序的测试,其目的是发现程序编码过程中的错误。它知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,来检验程序中的每条通路是否都能按预定要求正确工作,而不顾它的功能是怎样的。

3.2白盒测试的原理、方法及功能

白盒测试把程序看成是一个打开透明的盒子,是对软件设计过程的细节进行细致的检查。测试人员必须清楚程序的内部结构,利用程序内部的逻辑结构和其他相关信息,设计或选择相应的测试用例,对程序所有逻辑路径进行测试,然后再不同点检查程序状态,确定实际状态是否与预期目标完全一致。

软件测试人员使用白盒测试主要对程序功能模块进行检测,主要体现在以下几方面:对程序模块的所有独立的执行路径至少测试1次;对所有的逻辑判定“真”与“假”的两种取值至少测试1次;在循环的边界和运行界限内执行循环体;测试内部数据结构的有效性等。

常用白盒测试方法有语句覆盖、条件覆盖、判定覆盖、条件组合覆盖、判定/条件覆盖、路径覆盖等,其中路径覆盖是最强的逻辑覆盖标准,它保证程序中的每一条可能的路径至少执行一次,因而这样设计的测试用例更具有代表性,暴露程序错误的能力也最强。

3.3白盒测试可行性研究

白盒测试在了解系统整体设计与实现和对源代码进行审核的基础上进行,能尽早发现问题,测试效果好等优点,用盒测试技术应用于单元测试, 集成测试也会涉及一些。但是,白盒测试起点高,不能确保系统与软件需求的一致性,测试代价远远高于黑盒测试,侧重于实现,注重局部,对过程进行测试。

常用的白盒测试工具有PR公司的PRQA 软件、Telelogic 公司的Lo2giscope 软件、Macabe 公司的Macabe、 Rational 公司的Purify、 Compuware公司的DevPartner 软件、Numega 中的BounceChecker等系列。其中Logiscope是一种软件质量保证工具,它可以通过自动进行代码检查和对容易出错的模块的鉴定与检测来帮助扩大测试范围,从而达到保证质量和完成软件测试的目的。Purify工具能自动定位内存相关错误,在错误发生并造成破坏之前进行修正,这些错误包括非法指针操作、数组越界检测、内存分配错误以及内存泄漏、未初始化内存访问等。

4实用测试策略

为提高软件的测试策略,要尽可能把无限的测试变成有限的测试,以较小的代价暴露较多的程序错误,降低测试的效率成本。在实际高水平的测试中,往往需要综合使用各种方法,即采用白盒测试与黑盒测试相结合,静态测试与动态测试相结合,机器测试与人工测试相结合,以有效的提高测试效率和测试覆盖度。测试用例的设计方法有如下的实用测试策略:使用边界值分析设计测试用例,测试边界容易出错之处;使用等价划分设计测试用例,测试软件的主要错误;必要时结合人工测试的错误推测方法设计测试用例作弥补;使用逻辑覆盖涉及测试用例作为测试补充;若检查程序输入条件和各种组合情况或输入条件和输出结果存在因果联系,使用因果图法和判定表驱动法;软件存在着多个输入参数且每个输入参数的有多种取值的情况,使用正交试验法;利用功能图法通过不同时期条件的有效性设计不同的测试用例;对于业务流清晰的软件,利用场景法贯穿整个测试案例设计过程,在案例中综合使用各种测试方法。

5测试原则

不论使用什么测试方法设计测试用例,都必须保证软件的有限测试,测试人员在进行软件测试时应遵行如下的测试原则:一是软件要尽早测试和不断测试,如果不在早期阶段进行测试,错误的延时扩散常常会导致最后成品测试的巨大困难,甚至造成严重的后果;二是预先预定软件的测试结果;三是尽量避免测试自己编写的程序,测试工作应该由独立的专业的软件测试机构来完成;四是测试要兼顾合法输入和不合法数据的输入;五是测试要以软件需求规格说明书为标准;六是对测试错误结果一定要有一个确认的过程,要明确找到的新错与找到的旧错成正比;七是测试是相对的,不可能穷尽所有测试,要根据人力物力安排测试,并选择好的测试用例和测试方法;八是测试用例留作测试报告与以后的反复测试用,重新验证纠错的程序是否有错。

总之,黑盒测试和白盒测试是软件测试重要技术,用来发现软件缺陷与错误,是对软件质量进行度量和评估,以提高软件的质量的关键技术。任何软件项目都可以使用白盒测试和黑盒测试,在使用时不存在技术含量的谁高谁低的问题,只是两者的偏重不同,使用的技术也不同。从以往经验总结来看,软件工程师进行软件测试时,主要以黑盒测试为主,白盒测试为辅,必要时根据需要选择合适的测试工具,降低软件测试的工作量和复杂度,保证软件的质量,提高软件测试和软件开发的效率。参考文献:

[1]张海藩.软件工程导论[M].北京:清华大学出版社,2000.

[2]郑人杰.计算机软件测试技术[M].北京:清华大学出版社,1992.

[3]胥家瑞.浅谈白盒测试和黑盒测试在软件测试测试中的作用[J].天津市财贸管理干部学院学报,2010(4).

[4]IAN SOMMERVILLE.Software Engineering[M].北京:机械工业出版社,2004.

[5]王雅文,宫云战,杨朝红.软件测试工具[J].北京化工大学学报,2007(34).

[6]陈明.实用软件工程基础[M].北京:清华大学出版社,2001.

软件开发试用期总结篇(11)

1.前言

1.1 软件开发的规范化工程化

随着计算机技术、信息技术、多媒体技术、网络技术、通信技术等的发展,各行各业的众多工作越来越依赖计算机的应用,一方面使社会对软件产品的需求量增大。另一方面计算机软件产品在投入使用过程中,软件程序在运行时发现错误要设法改正;用户有了新的需求时要对程序做相应的修改;硬件系统或系统软件(主要是操作系统)的更新修改程序发适应新的工作环境。以上种种工作都对软件开发和软件维护提出要规范化工程化工作,

1.2 规范化工程化的目标

特别是软件生产及维护进入规范化工程化的软件工程时代,任何参加这些软件工程的人员,要在工程项目的总体要求和技术规范的约束下开展工作。组织实施软件工程项目,从技术各管理上采取了措施使在软件开发达到以下主要的目标:生产成本较低、软件功能达标、软件性能较好、软件易于移植、维护费用低、按时完成开发工作。为了达到这样的目标,特别要重视文字资料工作即软件文档。

1.3 软件文档的概念

软件文档(document)也称文件,通常指的是一些记录的数据和数据媒体,它具有固定不变的形式,可被人和计算机阅读。。软件文档是与软件开发、维护和使用有关的文字材料,如技术文档、设计文档、版本说明文档等,它和计算机程序共同构成了能完成特定功能的计算机软件。

2.软件文档的作用

2.1 提高软件项目开发过程的透明度,为项目管理提供了依据

软件是一种逻辑实体,而不是物理实体,软件产品不像生产其它产品看得见,摸得着。故在软件的开发生产过程中没有明显的制造过程。我们知道,硬件产品和产品资料在整个生产过程中都是有形可见的,软件生产则有很大不同,文档本身就是软件产品。

软件文档详细记录了软件项目开发过程中发生的事件,将通常“不可见的”软件开发进程转换成“可见的”文字资料,使软件项目开发过程的能见度、透明度提高了,是项目的管理的依据。软件产品在软件开发过程中管理者需要了解开发进度、存在的问题和预期目标。每一阶段计划安排的定期报告提供了项目的可见性。定期报告还提醒各级管理者注意该部门对项目承担的责任以及该部门效率的重要性。开发文档规定若干个检查点和进度表,使管理者可以评定项目的进度,如果软件文档有遗漏,不完善,或内容陈旧,则管理者将失去跟踪和控制项目的重要依据。

2.2 跟踪软件项目开发过程,使项目质量得到保证

软件项目开发过程的每一个阶段有必须完成的文档。那些负责软件质量保证和评估系统性能的人员需要程序规格说明、测试和评估计划、测试该系统用的各种质量标准以及关于期望系统完成什么功能和系统怎样实现这些功能的清晰说明;必须制订测试计划和测试规程,并报告测试结果;他们还必须说明和评估完全、控制、计算、检验例行程序及其他控制技术。这样完成对软件项目的过程进行跟踪,满足质量保证人员和审查人员上述工作的需要。

每一个阶段结束前都要对该阶段据所完成的文档或程序进行评审或测试,以便发现问题,排除故障,及时改正错误。有了软件文档的跟踪,可及时审查软件项目,保证软件质量。

2.3 便于各人员之间的交流与合作,是各任务之间联系的凭证

软件文档在软件开发人员、软件管理人员、维护人员、用户以及计算机之间的多种桥梁作用。使系统管理员、操作员、用户、管理者和其他有关人员了解系统如何工作,以及为了达到他们的各自的目的,如何使用系统。

大多数软件开发项目通常被划分成若干个任务,并由不同的小组(下转第74页)(上接第17页)去完成。项目小组内部、项目平行开发的各小组之间进行交流与联系是通过软件文档。大多数系统开发方法为任务的联系规定了一些正式文档学科方面的专家建立项目;分析员阐述系统需求,向设计员提供正式需求规格说明;设计员制定总体设计,向程序员提供正式设计规格说明;程序员编制详细的程序代码;质量保证专家和审查员评价整个系统性能和功能的完整性;负责维护的程序员改进各种操作或增强某些功能。各种人员需要的互相联系、互相交流、互相合作是通过文档资料的复制、分发和引用而实现的。

2.4 支持软件项目使用时的维护,发挥软件的最大效率

软件文档提供系统开发的全部必要技术资料。可以帮助维护保熟悉系统,顺利完成软件的安装。在软件运行过程中出现的各种问题可及时排除,及时处理,帮助客户使用软件操作顺利地利用软件进行工作。软件运行过程找出并修正错误,改进系统以适应用户需求的变化或适应系统环境的变化,开展维护工作,延长软件的生存周期,使软件的效率发到最大化。

2.5 记录软件的历史,为今后的软件开发提供参考

软件文档作为“记录软件历史的语言”,软件文档可用作以后项目的一种资源,软件项目的一种借鉴。通常文档记载系统的开发历史,可使有关系统结构的基本思想为以后的项目利用。系统开发人员通过审阅以前的系统以查明什么部分已试验过了,什么部分运行得很好,什么部分因某种原因难以运行而被排除。系统文档有助于完成软件的移植或将软件转移到各种新的系统环境中。

软件文档中还包含着“项目开发总结报告”自我总结的部分,有的项目负责人对这些文件往往不大在意,其实在这些文件中除了有关的软件项目的数据外,对项目的过程的进行了总结,优、缺点尽在其中,学习和借鉴这些文件对今后的工程管理将会有很大的促进作用。

3.总结

在软件工程时代,正确的使用软件文档对软件产品按质按量的交付使用,对于充分发挥软件产品的效益有着重要意义,故在软件开发中要重视软件文档的编写。

参考文献