前言:一篇好文章的诞生,需要你不断地搜集资料、整理思路,本站小编为你收集了丰富的测试报告缺陷分析主题范文,仅供参考,欢迎阅读并收藏。
关键词: 自动化测试;面向业务;自动化测试框架
0 引言
传统自动化测试,通常针对被测系统特点专项开发自动化测试脚本,当系统功能变更频繁时,自动化测试维护成本很大;测试资产不便于统一的管理,重要测试资产不便于积累和复用;另外,自动化测试对测试人员的开发技术要求,限制了自动化测试的大规模普及和推广。为此,本文给出了一种业务与技术分析、脚本与数据分离的面向业务的测试框架BOSATF(Business Oriented Software Automated Testing Framework)。
1 BOSATF架构设计
1.1 架构设计原则
业务逻辑和测试脚本分离:框架提供协同工作平台,业务人员设计业务组件和业务流,自动化测试技术人员关注具体自动化脚本的开发,两个角色分工明确、高效配合。
测试脚本和测试数据分离:脚本和数据分别独立构建,同一测试脚本适用不同的测试数据,并使得脚本和数据的变更对整个测试工程的维护量降到最低。
框架功能模块高内聚低耦合:分层架构设计,模块内功能专一,模块间功能独立,在满足自动化测试框架基本功能需求的基础上,减少框架维护工作量。
1.2 分层架构设计
BOSATF由资源层、构建层、控制层、服务层和基础函数层等五大组件构成。
资源层提供框架运行过程中所需要自动化测试脚本、测试用例、测试数据和业务流程。各类资源逻辑上互相独立。
构建层负责资源层调度和管理,实现脚本、数据、用例、业务流程的统一管理,为构建层提供一致。
控制层协调构建层基础服务,遵循测试执行计划和测试机群管理规则,按照计划分配测试资源,保证测试执行有序进行。
服务层主要功能有日志信息的收集、缺陷的管理、测试过程中错误场景的恢复以及测试报告的生成。
基础函数层主要提供框架运行过程所需要的通用功能,包括日志管理、字符串格式转换、身份证号生成、保费校验和移动设备控件识别等功能。
2 BOSATF功能模块
2.1 测试用例管理
采用“业务流程分析法”,遵循“合并”和“拆分”原则,把手工测试案例转化成自动化测试案例,并建立映射关系,明确手工测试和自动化测试的对应关系,让测试人员实时掌握自动化测试进度,以便及时制定和调整测试执行方案。
实现自动化测试用例和成熟测试管理工具的互联互通,实现测试用例的导入、导出和多模式测试用例管理功能。
2.2 测试数据的管理
部分中间业务流程测试数据的准备时间占总测试周期的30%。针对这个问题,框架支持测试数据自动生成功能。根据被测功能特点,定制测试数据生成策略,批量自动生成测试数据。
框架同时提供“一次性数据”解决方案。针对部分业务模块测试数据无法恢复的情况,框架记录测试历史数据,避免数据的重复使用。
2.3 业务流程定义模块
该模块提供了可视化业务流程定义功能,降低了框架使用的技术难度。通过该模块,测试人员无需关注技术细节,只需要从业务人员视角定义业务操作流程,实现自动化测试脚本的自动组装。
2.4 测试执行管理
测试执行管理模块调用测试脚本、测试用例、测试数据、业务流程定义等相关服务,分配硬件执行机器资源,执行测试计划。同时,收集测试执行过程信息,为服务层的缺陷管理、测试报告管理提供基础数据依据。
2.5 场景恢复模块
目的是在出现故障的情况下能尽快的恢复系统,保证能快速、准确地正常恢复测试场景。根据故障的不同,明确地定义恢复的策略,制定不同的恢复机制,确保自动化测试在可预知风险前提下,快速恢复测试场景,按计划执行测试案例,保证测试进度。
2.6 缺陷管理模块
该模块采用与常用缺陷管理工具(QC、BugFree、JIRA)集成的办法,提供对发现缺陷的管理功能。支持缺陷状态的自定义,实现缺陷的自动提交,测试处理进度的自动追踪。
2.7 测试报告模块
以测试执行过程日志记录为基础,结合测试计划、测试执行管理等基础信息,提供多模式(TXT,Excel,Word,PDF)测试报告生成功能。
2.8 测试机群管理模块
该模块在实现自动化测试框架基本功能基础上,结合虚拟化IT运维趋势,开发了基于虚拟机技术的机群管理模块。
测试机群从职责上划分为五类:自动化控制调度服务器、资产管理服务器、资产备份服务器、测试执行机群及公共函数服务器。
3 结论
针对传统自动化测试框架不足之处,结合实际工作需求,提出了一种面向业务的软件自动化测试框架-BOSATF。它独立于自动化测试实施过程,作为专题项目开展工作,实现了业务流程管理和技术实现的分离,降低了自动化测试成本,提高了自动化测试大规模推广的技术可行性。
该框架在实现自动化测试框架基本功能基础上,结合虚拟化IT运维趋势,开发了基于虚拟机的机群管理模块。同时,框架提供了开放式集成接口,为与成熟的软件测试管理工具互通集成提供了途径。
实践证明,该自动化测试框架功能丰富、扩展便捷,有效降低了自动化测试难度,提高了测试工作效率。
参考文献:
[1]丁祥武、张钦、韩朱忠,SQL测试用例集的自动生成[J].计算机应用与软件,2012,29(8):185-188.
[2]黄彪贤、熊建斌、李振坤,金融软件功能自动化测试的分析及应用,计算机工程与设计,2012, 33(2):787-790.
【关键词】计算机软件;软件测试;生命周期;BSS系统;IT系统
1 引言
通信行业通常有三个相对独立的IT系统:OSS运营支撑系统、BSS业务支撑系统、管理支撑系统。其中,BSS是通信行业对外向客户直接服务的系统,管理着企业的各类客户资料,为各类客户提供业务受理和计费服务。BSS系统做得好坏,直接牵涉到最终用户对通信业务的使用。要保证BSS系统的质量,就需要在BSS系统的各个环节把好质量关。
本文的研究任务就是通过软件测试环节提高BSS系统软件的效率,从而大大提高企业的信息化服务水平,使业务支撑部门对业务部门进行强有力的支撑。
2 软件测试研究基础
软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。软件测试贯穿整个软件系统的生命周期中,为保证服务质量,软件测试要经过开发过程中的单元测试,集成测试,以及软件交付后的确认测试,系统测试,验收测试,还有软件使用后的回归测试。如图所示:
2.1 单元测试
单元测试是在软件开发过程中要进行的最低级别的测试活动,在单元测试活动中,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。单元测试不仅仅是作为无错编码一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。
2.2 集成测试
集成测试,也叫组装测试或联合测试,是单元测试的逻辑扩展。在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。实践表明,一些模块虽然能够单独地工作,但并不能保证连接起来也能正常的工作。
2.3确认测试
确认测试又称有效性测试。有效性测试是在模拟的环境下,运用黑盒测试的方法,验证被测软件是否满足需求规格说明书列出的需求。任务是验证软件的功能和性能及其他特性是否与用户的要求一致。
2.4 系统测试
系统测试是将已经确认的软件、计算机硬件、外设、网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过与系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。
2.5 验收测试
验收测试是系统开发生命周期方法论的一个阶段,这时相关的用户和独立测试人员根据测试计划和结果对系统进行测试和接收。它让系统用户决定是否接收系统。验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让最终用户将其用于执行软件的既定功能和任务。
2.6 回归测试
伴随着软件生命周期中的任何一个阶段,还有一个重要的测试环节是回归测试。只要软件发生了改变,就可能给该软件带来问题。软件的改变可能是源于发现了错误并做了修改,也有可能是因为在集成或维护阶段加入了新的模块。
3 案例分析及研究
3.1 验收测试在通信行业BSS系统中的应用研究
本案中,软件上线前,要经过初验和终验,初验是对软件的初次验收,根据合同要求,初验时一般要满足的条件是,软件程序在一定的范围内上线试运行,并在试运行过程中故障率不超过一定的范围。初验过程中,使用人员对软件进行充分的使用,尽量多的遍历所有的分支点,对软件开发商提出更详细的需求改造要求,软件厂家在此阶段都会尽可能快地做出修改,并提交给使用人员。这样重复多次,直到达到初验要求,项目会继续推广到更大的范围。大范围使用后,使用人员会随之增多,必将会碰到更大更多的问题,在经过软件厂家的修改优化,达到软件程序稳定运行的效果,此时,项目才满足终验条件。终验后,软件厂家会维护一段时间,签订长期的维护合同。
根据这种情况,验收测试是在软件程序的初验和终验都要涉及到的。测试目的都是尽量查找软件的漏洞以便得以修改,测试的方法是功能测试涉及较多一点。BSS系统验收测试的目的是确认系统是否满足产品需求规格说明和技术合同的相关规定,继而能否满足企业应用需求。一般需要通过实施预定的测试计划和测试执行活动,确认系统的功能需求、性能需求和文档需求。BSS系统是较复杂的大规模系统,其验收测试具体包括:安装测试、功能测试、界面测试、性能测试、文档测试、负载压力测试、恢复测试、安全性测试、兼容性测试等。
BSS系统的验收测试一般由使用人员来做,且必须做到对每个细节和关键指标的反复测试。它的测试技术方法不仅有上述提到的几种测试,还需要一些白盒测试,避免实现当前功能的情况下影响到其他模块。它的测试用例,需要反复推算,寻找到最佳用例,以尽多的遍历各测试节点,对程序、数据、文档都要做到细致的测试。
根据以上分析,验收测试涉及BSS系统的各环节内容。其中,最主要要审核的内容就是根据软件的需求分析,检验要交付的软件系统是否满足需求分析中的内容。具体来说,根据验收测试方法和它所属的状态及重要性,在BSS系统中,验收测试的审核内容,可以用以下文档验收来体现。
软件开放商应向企业项目组成员提供以下文档:《软件需求分析书》、《验收测试计划》和《项目验收准则》、《测试用例设计》、《测试环境标准》、《测试报告》、《测试结果分析》、《缺陷报告》、《验收测试报告》、《使用说明》或《操作文档》、《试运行报告》。另外,使用人员根据软件厂家提供的上述文档,挑选重要的测试项,组织使用人员重新编写测试用例并进行测试,编写客户方自己的《验收测试计划》、《验收测试报告》、《验收测试结果及分析》。根据《验收测试结果及分析》组织项目成员讨论是否验收此项目。
验收测试流程图:
根据上述要求,在本案例中,验收测试方面存在以下不足:
第一、《验收测试计划》和《项目验收准则》没有专门的文档。如果我们能在需求分析书完成后能够定制独立的《验收测试计划》和《项目验收准则》,则更有利于我们做好验收测试工作,做好终验工作。第二、没有《缺陷报告》,程序的开发总要伴随着缺陷的产生,虽然开放人员在逐渐的解决这些缺陷问题,但总有一些问题解决不了。第三、甲方对验收测试重视不足,没有独立的《验收测试计划》、《验收测试报告》、《验收测试结果及分析》,没有独立的验收文档,对结果也没有做分析。第四、在验收测试整个过程中,甲方过于依赖乙方。整个流程以乙方提供验收文档为主,甲方虽验收了文档等资料,但并没有根据资料编制验收测试方案,也没有做验收测试报告及分析,只是在乙方提供验收测试文档中根据验收测试用例进行了测试。
在实际运用中,首先要重视软件测试的重要性,另外不能过于依赖软件开发商,要建立企业自己的IT人员测试组,对软件进行详尽的各方面的测试。
3.2 回归测试在通信行业BSS系统中的应用研究
实际工作中,回归测试需要反复进行,当测试者一次又一次地完成相同的测试时,这些回归测试将变得非常令人厌烦,为了支持多种回归测试策略,可以运用自动测试工具,以便满足达到不同回归测试目标的要求。
通信行业BSS系统的回归测试特别频繁,每月的应用变更几十例,有新增的功能,也有变更的功能,还有修复的功能。这些变更都需要回归测试来验证功能是否达到需求的要求。根据软件特性,进行的回归测试大都需要结合软件模块自身的功能,手工完成验证,并且不同的模块的回归测试方法也可能不同。进行回归测试时,不但检验新增模块的功能是否实现,还要验证是否影响了周边其他模块的功能,同时检查整个大的模块的功能是否正常,也就是考察软件自身的功能和兼容性。
4总结与展望
实践证明:将软件测试的方法引入通信行业的BSS系统中,在软件测试的各个环节都能够详细和规范的记录测试相关信息,使管理层能够方便的掌握到整个软件的问题、配置、变更、等环节的信息,为领导决策提供了强有力的支持,达到了软件使用的目的。大幅提高了系统的软件维护效率和整个BSS系统的准确性,使BSS系统对企业的业务能够快速高效的支撑。
参考文献
[1](美)马瑟著.王峰,郭长国,陈振华等译.软件测试基础教程[M].北京:机械工业出版社,2011.
[2]陈能技.软件测试技术大全[M].北京:人民邮电出版社,2011.
关键词:软件测试;性能测试;LoadRunner
中图分类号:TP306 文献标识码:A 文章编号:1672-3198(2009)12-0296-02
1 软件性能测试
根据测试的目的和内容的不同,性能测试主要包括以下方面:
(1)负载测试:确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
(2)强度测试:确定在系统资源特别低的条件下软件系统运行情况。
(3)容量测试:在用户可接受的响应范围内,确定系统可处理同时在线的最大用户数。
(4)压力测试:通过确定一个系统的瓶颈或者最大使用极限的测试。
(5)疲劳强度测试:以系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作强度性能的过程。
(6)大数据量测试:大数据量测试侧重点在于数据的量上,包括独立的数据量测试和综合数据量测试。独立的数据量测试针对某些系统存储,传输、统计、查询等业务进行大数据量测试,而综合数据量测试一般和压力性能测试、负载性能测试、疲劳性能测试相结合。
2 软件性能测试流程
2.1 测试方案设计
在软件性能测试的初始阶段,首先应对业务模型和系统架构进行调研,收集测试需求。然后生戚性能测试计划。业务调研和系统调研,需要性能测试团队提前了解被测试项目的业务功能和系统架构。其间。开发部门应协助提供被测系统相关的文档和说明,如系统总体介绍、系统规格书、用户使用手册、网络拓扑结构图和系统配置说明、关键服务器及应用部署与配置等文档。通过和业务部门协商明确本次测试针对哪些业务行为,制定此次测试的目标,细化测试的关注点和性能指标要求。通过以上内容制定详细的测试方案,并制定详细测试计划和各阶段目标。
2.2 测试环境的搭建
测试环境的搭建分为软硬测试系统的环境搭建和测试相关的数据准备工作。环境搭建包括被测试系统的硬件环境建立和软件应用系统建立及基础数据环境建立。保障被测试系统的业务可用性和功能的正确性,包括测试系统(如被测试项目的操作系统、中间件、数据库、压力测试控制台、压力测试发起工具等)的环境搭建、软件的安装;测试环境的网络环境建立(如开放防火墙和网关等);最后进行测试环境可用性验证。测试数据准备包括测试应用系统基础数据准备,即需要按性能测试规模要求,准备足够的、一定规模的基础数据,通常采用全量恢复生产数据的方式以达到和生产环境数据一致性的要求。
2.3 测试场景开发
测试场景开发指测试程序(脚本)的开发。测试程序(脚本)的开发是对被测系统的用户业务行为进行模拟、录制、编程、参数化、脚本定制和调式等一系列工作,以使测试程序(脚本)可以真实模拟实际生产中的业务交易行为,并通过对程序中参数的配置实现对并发数、思考时间等属性的准确控制。
2.4 测试执行
测试执行是在测试方案的制定、测试环境准备、测试场景开发工作正确完成的基础上进行的。
2.5 测试报告和分析
性能测试报告和结果分析是在测试执行完成以后,对性能数据进行采集结果收集工作和针对性能测试过程中暴露的问题进行分析的阶段。性能测试报告是对性能测试过程中的监控结果以及报表进行汇总,按照一定的模板整理出的一份结论性文档。开发团队和性能测试团队应依据对性能测试实施过程中监控和记录的数据和表格,分析系统中存在的性能问题和程序缺陷。并有针对性的在报告中阐述问题、分析原因、提出解决或优化方案。
2.6 回归测试
回归测试是开发部门在性能测试报告的基础上针对软件的性能或者效率缺陷进行优化或者修复,为了验证优化的效果而进行的再测试。
3 软件性能测试工具LoadRunner
作为软件质量控制中的重要一环,性能测试已经越来越受到软件开发商和用户的重视,成为软件测试的重中之重。性能测试通常在系统测试阶段执行,常常与强度测试结合起来,一般需要使用测试工具。一个优秀的软件测试工具,不仅可以辅助测试工作,满足科学测试的基本要求;而且可以自动化测试过程,节约大量的时间、成本、人员和资源,提高软件产品的质量。目前市场上主要使用的测试工具有微软公司的WAS(Web Application Stress Tool)、Compuware公司的QALoad、RadView公司的WebRunner、HP(Mercury)公司的LoadRunner。下面以LoadRunner为例。介绍软件测试工具的工作流程。
LoadRunner是一种预测系统行为和性能的负载测试工具。通过模拟上千万用户实施并发负载及实时性能检测来确认和查找问题,能够对整个企业架构进行测试。通过使用LoadRunner,企业能够最大限度的缩短测试时间,优化性能和加速应用系统的周期。LoadRunner能支持广泛的协议和技术,功能比较强大,可以为特殊环境提供特殊的解决方案。LoadRunner由下面三部分组成:Virtual UserGenerator用来录制脚本、编辑脚本Controller用来布置测试场景、执行测试场景;Analysis用来对测试结果进行分析。
用LoadRunner进行负载测试的流程通常由五个阶段组成:计划、脚本创建、场景定义、场景执行、监视执行和结果分析。
(1)计划负载测试:定义性能测试要求,例如并发用户的数量、典型业务流程和所响应时间;根据软件项目相关需求,定义相关测试的细节,撰写性能测试报告。
(2)创建Vuser脚本:将最终用户活动捕获到自动脚本中LoadRunner的脚本是C语言代码,LoadRunner有自己的一整套函数接口,可以供外部调用。脚本可分INIT、ACTION、END三部分,其中:INIT部分可以理解为初始部分。ACTION可以理解为事务部分,也是测试的主体,END是退出结束。
当录制完一个基本的用户脚本后,在正式使用前我们还需要完善测试脚本,增强脚本的灵活性。一般情况下,我们通过以下几种方法来完善测试脚本。插人事务、插入结合点、插入注解、参数化输入。
(3)定义场景:使用LoadRunner Controller设置测试环境;录制好脚本之后,就可以把脚本加入到场景里面去了,这里首先介绍一下LR的场景类型,LR有2种大的场景类
型。
①Manual Scenario:该项要完全手动的设置场景,这项下面还可以设置为每一个脚本分配要运行的虚拟用户的百分比,可在Controller的Scenario菜单下设置。
②Goal―Oriented Scenario,如果你的测试计划是要达到某个性能指标,比如:每秒多少点击。每秒多少transae,tions,能到达多少VU,某个Transaction在某个范围VU(5D。一1000)内的反应时间等等,那么就可以使用面向目标的场景。
(4)设置场景:
Design:设计测试场景的静态部分,设置模拟用户生成器、模拟用户数量、模拟用户组等。
Run:设计测试的动态部分,主要指添加性能计数器,在脚本运行的过程中可以通过这些计数器反馈的数据。
建立了测试场景后,我们可以对Edit_Schedule进行设置,设置测试开始执行的时问,对于手动设计的测试还可以设定它的持续时间,以及何时起用或禁止调用模拟用户。
(5)运行场景:通过LoadRunner Controller驱动、管理和监控负载测试。
设置完毕后,点击“开始方案”运行场景。在运行过程中,可以监视各个服务器的运行情况(DataBase Server、WebServer等)。监视场景通过添加性能计数器来实现,下列数据需要特别关注:
①Memory:Available Mbytes物理内存的可用数(单位Mbytes)至少要有10%的物理内存值。
⑦Processor:Processor Time CPU使用率。这是查看处理器饱和状况的最佳计数器。显示所有CPU的线程处理时间。如果一个或多个处理器的该数值持续超过90%,则表示此测试的负载对于目前的硬件过于沉重。为多处理器服务器添加该计数器的O到x个实例。
③Processor Queue Length:是指处理列队中的线程数,小于2。处理器瓶颈时会导致该值持续大于2。
④Context Switches/sec;如果切换次数到5000*CPU个数和i0000*CPU个数中,说明它忙于切换线程。
⑤Network Interface:Bytes Total/sec为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较。
【关键词】户籍管理系统;S.S.H(Struts,Hibernate,Spring);JAVA;JSP
1系统实现
1.1对应的程序代码
public class User implements Serializable{
private static final long serialVersionUID= 7141419035239709511L;
private long id;
1.1登录界面
登陆窗体用于接受用户的用户名/密码输入,判断是否合法。如果是合法用户,释放该窗体并调出Frmver窗体;否则信息提示无此用户。
实现此功能的代码如下。首先从获取从页面输入的用户名和密码,然后调用userDao.selectBean方法,从数据库里取出该条记录进行判断,如果该条记录存在,则说明用户登陆成功,同时把用户信息存在session里面方便调用,如果记录为空,则跳转到登陆页面,同时提醒用户错误信息。
public String login()throws IOException {HttpServletRequest request= ServletActionContext.getRequest();
Stringusername= request.getParameter("username");
Stringpassword= request.getParameter("password");
this.setUrl("main.jsp");
return "redirect";}
1.2户籍对应的程序代码
public class Huji implements Serializable{
private static final long serialVersionUID = 7141419035239709511L;
private long id;
private String qianrushijian;private String qianchushijian;
1.3户籍管理界面
代码如下:
public String hujilist(){
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("hujibianhao",hujibianhao);}
1.4用户管理窗体
用户管理代码如下:
public String userlist(){
HttpServletRequest request = ServletActionContext.getRequest();
return SUCCESS;
}
通过userDao.selectBeanList方法来调用数据库的查询方法来查到符合条件的记录,在通过request.setAttribute方法把查询到的记录传到显示的页面。同时通过this.setUrl("user/userlist.jsp");方法指定传回到具体指定的是哪个JSP页面。通过这样实现对数据查询功能的实现,同时在该用户列表页面定义了对户籍信息的增加,修改,删除等操作。
1.5户口注销
注销记录对应的程序代码:
public class Zhuxiao implements Serializable{
private static final long serialVersionUID = 7141419035239709511L;
private long id;
private int type;
2 系y测试与运行
2.1测试概述
2.1.1测试目的
本测试报告是简单户籍管理系统的测试报告,目的在于分析测试结果,描述系统是否有户籍管理的功能。
2.1.2测试内容
利用白盒测试黑盒测试相结合的方式
测试平台:Windows XP操作系统。
测试工具:Microsoft Visual Basic中文版。
2.2测试分析
系统包括查询管理、户管理、个人户口管理三大部分。
实现的基本功能有:
(1)实现户籍的查询,可分为普通用户查询和内部管理员的查询,普通用户只能 查询基本信息和修改密码,如身份证号、出生日期等。
(2)实现户籍的修改,包括户口的修改以及个人信息的修改。
(3)实现个人户口管理,包括个人户口的新建和迁入迁出。
(4)关于管理,包括个人户口注销和户口注销等,同时需注明注销原因、证明材 料等。
本论文设计并且实现一个基于web技术的户籍管理系统,故而系统主要以j2EE作为开发基础,主要使用了struts2+spring+hibernate等多种框架的结合使用,本人认为今后的研究主要在以下几个方面做出努力:
(1)系统各个功能模块的设计还需要实践的检验,比如在户籍管理部门进行试运行,用户使用系统后反馈意见,在使用当中不断返现功能设计缺陷、新功能的添加等等。
(2)进一步设计针对户籍档案海量的存储方案。
参考文献:
[1]冯巧立.我国户籍制度改革研究[D].吉林大学,2010
[2]陈大雷.户籍管理系统的设计与实现[D].山东大学,2009
[3]王凤振.基于web的居民户籍管理系统的设计与实现[D].天津大学,2012
作者简介:
关键词:软件开发文档;项目质量;Offshore;概要设计;详细设计;文档规范化;软件开发文档标准化
中图分类号:TP311.5
1 软件开发文档的重要性
影响软件项目进度、成本、质量的因素主要是“过程、人、技术”[1]。而规范的过程管理,包括软件开发过程的文档规范及标准化便于开发过程中准确地交流信息以及软件项目交付后的维护工作,因此可以提高软件开发的效率和质量、改进软件开发过程。
文档既然是多人进行项目开发相互沟通及共享信息的媒体,它就是项目所必须的、可重用的、文档的质量也是评价项目质量的一部分,而且最重要的是文档是否与源代码保持一致很重要。
软件项目的开发是个团队化作业复杂的过程,团队成员间的沟通很重要。目前软件开发项目面临的挑战是:很多的软件开发环境,应用平台也很复杂,有的需求又要在多语言环境下运行。因此保证软件项目成功的较为重要的一个因数之一是软件开发过程及其文档的规范化管理。文档是软件产品的一部分,文档在软件设计人员、软件开发人员、软件维护人员及用户之间起到桥梁的作用。特别是外包开发的过程中设计人员与编程人员往往不在一个办公地点,对系统功能要求的理解除电视会议,聊天工具,电话等语言视频沟通外,文档的沟通很重要,按规范制作文档的过程也就是按照软件开发的规范编制软件的过程。
既然文档在设计及开发的过程中能在多人多种角色间起到桥梁的作用外,它的编制就必须有助于程序员在编程前能够理解设计书定义的功能定义,有助于项目管理人员监督和管理软件的开发过程。此外,产品交付后要有助于用户了解软件的工作和操作,有助于系统维护人员对系统软件进行有效的维护、修改和功能追加,因此文档的编制不仅非常重要还必须要保证一定的质量。
2 软件开发文档
软件开发文档的种类很多。主要有:功能要求,需求分析,概要设计,详细设计,软件测试计划,软件测试报告,软件用户手册,数据库设计,项目可行性分析,项目计划,问题管理,项目进度管理,项目总结等许多文档。软件开发规范(GB 8566-88),软件产品开发文件编制指南(GB 8567-88)。
如下开发工程阶段需要的文档(见表1):
表1 软件开发工程阶段的文档示例
概要设计 详细设计 单元测试 集成测试 系统测试 软件交付
概要设计说明书 详细设计书 单元测试计划 集成测试设计书 系统测试计划 用户安装手册
DB设计说明书 单元测试报告 集成测试报告 系统测试报告 用户使用指南
3 设计书样式
3.1 用什么文档编辑软件书写设计书。发达国家的软件业很重视文档,尽管目前敏捷开发被一切企业和开发团队所接受,但不可否认,对需求相对明确,离岸的开发方式下,大部分的项目目前还是较多地采用瀑布式的开发方式。
实践证明,用Excel书写设计书比用Word书写更加灵活和高效。本人参与开发的项目中,绝大部分设计书都是用Excel书写的,Excel特别适用于图形及表格的表达方式。而且项目的经验是尽量使用图形及表格的方式来记述设计定义,沟通理解的准确率较高。
3.2 文档的结构、语言表述及术语。文档结构的装订顺序为封面、修正履历、正文、附录说明。文档中的层次番号也要统一,清晰的层次便于阅读。语言的表达方式在外包的开发方式中很重要,因设计人员与开发人员通常不在一个办公地点。特别是离岸外包的方式,设计人员与开发人员是不同的母语。因此设计书的语言描述应尽量使用简单句型,不要使用双重否定,语言描述要清晰准确尽量不要有二义性。事实上开发中出现的错误在一定比例上是由于设计书的理解错误所造成的。因此语言的表达应尽量使用数学逻辑符号,因为只有数学符号是跨不同语言的,不易产生理解错误。如下(见表2)。实践证明,仅用语言来表达,往往易产生理解错误,用数学符号及数学逻辑符号的沟通最准确。此外在图形或表格旁同时追记语言描述比单单仅用语言来描述其沟通效率更高。
表2 数学表达示例
数学表达
A≠zero and A≠space
B=0 and C=0
D=zero or D=space
X0
日付yyyy0401
术语的标准化可提高沟通准确度和效率的同时还能提高书写详细设计及测试报告书的文档质量。因为在外包开发中,不能保证所有参与开发人员的外语水平很高或在同一个水平上。因此整理术语词典,供大家查询与参考是一个很好的方法。
将业务术语整理为词典表,在离岸外包开发中,比较难的是理解客户的业务及其术语,随着业务范围的扩大,经验的积累,不断丰富词典,对开发人员迅速理解设计书能提供很大的帮助。
3.3 制定编码规范及命名规约。事实上软件开发中,代码中的注释也可以理解为是软件的一部分文档,而且是很重要的文档。规范化代码中的注释其本身就是项目质量的一部分,因为在目前的软件开发中,人员的交替是很常见的,好的代码注释,对他人修改程序,特别是系统上线后的项目维护都很重要。
制定编码规范的目的是保证不同开发人员的代码风格基本一致,降低开发人员流动可能导致的项目风险;强调代码的可理解性,强化代码注释。
例如函数部分的记述规则:
'----------------------------------------------------------------
' 概要
' xxxxx
' 参数的说明
' ARG1 : 参数1
' ARG2 : 参数2
' 功能说明
' 使用方法说明
' 返回值
' xx 型
' 补充说明
' xxxxx
'----------------------------------------------------------------
变量、常量、函数、画面控件及按钮等都应有命名规则。变量的命名规则(见表3)
表3 数据命名规则
数据类型 字首 例如
布尔型(Boolean) bln blnxxx
字节型(Byte) byt bytxxxData
Collection对象 col colxxx
货币类型(Currency) cur curxxx
日期类型(Date) dtm dtmStart
3.4 设计书的构成。以下是设计书的Sheet页的构成示例(见图4)。
表4 设计书的样例
封面 修改履历 功能概要 画面切换关系 画面设计 处理流程・处理内容 DB更新 输入・输出文件 报表格式 辅助说明
无论是概要设计还是详细设计,每本设计书要有以下的内容:封面、修改履历、功能概要、画面的切换关系、画面设计、处理流程・处理内容、DB更新、输入输出文件、报表格式、辅助说明。
一个功能的设计书的应尽量集中在一个Excel文档中表达,这样可提高查找信息的效率,缩短理解设计书的时间。如果分散在几个文档的话,不易查找信息。因为编程是个脑力工作并且侧重逻辑思维的过程,理解设计书的过程中如果还需要参照其他文档的话则思路很容易被打断。
另外一些设计的细节也尽量在文档中体现,不然开发者与设计者要沟通确认很浪费时间。为节省书写设计文档的时间,一些不同功能、不同画面所共同的地方可以提炼到一个共同的设计书中。这样也便于文档的变更修改与维护。
比如(见表5)是一种画面项目的定义格式。登录数据时画面的项目是否要做必须输入的检查?打开画面时初期光标应放在哪个项目的位置上?该项目的显示文字的位数?这些细节都应该明确。在设计之前就将设计书的文档格式标准化,设计人员应该考虑什么?应该明确什么?就很清晰。
一个软件项目的成功与失败,往往不仅限于功能实现了就可以了,许多情况是细节决定成败。实施文档等标准化,可以避免漏记、提高沟通的准确度从而提高效率及提高质量。尽管规范化的文档不能完全保证设计的质量,设计的质量主要还要依据设计书的正确性如何?依据设计出来的系统是否能满足最终客户的真正需求。但规范化的设计文档可以提高沟通效率和沟通的质量。
表5 画面项目设计样例
必须输入 项目名称 画面显示位数 新创建 编辑 参照 初始显示值 登录时的检查条件 数据取得源 备注
担当者 20 I I O 初期光标 I:输入项目
O:输出项目
3.5 设计书的变更管理。由于在软件项目的开发过程中,存在许多不可预料的因素,如:初期用户的需求不明确,开发过程中需求不断地变化。因为这些变更的发生不可避免,所以对变更的管理就十分重要。项目的实践证明,除了上述要规范化项目开发用文档外,在开发过程中,在不断发生设计变更的情况下,要严格保证设计文档与代码的一致性。
1992年卡内基-梅隆大学的ChristineM.Neuwirth等人,就如何在协同写作环境中发现和报告变更的问题,集中讨论了三个方面的问题[2]:(1)应该报告哪些变更?(2)如何表示变更信息?(3)报告变更信息的界面应该如何设计?
在已开始编码后,发生设计书变更时,设计者要评估所涉及到的DB数据表以及相关画面的相关项目,并在设计书中明确标记出来。首先文档的履历中要明记变更履历,在变更履历中要明记变更的Sheet页。在每个变更的Sheet页中,所变更的文字要用醒目的颜色例如红色,或用醒目的背景色。删掉的文字部分用删除线,追加的记述要用醒目的文字颜色,同时变更的文档本身要版本,放在相关人员都能看到的地方。此外,最好要有变更管理台帐,跟踪变更的对应情况。最后最重要的是设计书的变更与代码的变更一定要保持一致。始终保证设计书的有效性。
4 实际开发案件中设计书规范化对项目影响的分析
如下(图1)所示,设计书书写的易读性如何,对最后项目的整体质量有一定的影响。设计书书写的不规范,可读性差的话,势必在理解设计的过程中,花费很多时间去沟通确认,此外也容易带来理解的误差。分析交付产品后的缺陷来看,其中一定比例的问题原因是设计书理解错误所造成的。
图1 实际开发案件部分影响质量因素的分析结果
5 结束语
(1)实践证明,项目开发文档的规范化及标准化一定程度上可提高项目的成功率及质量。(2)项目开发文档的规范化可提高文档的可读性,提高沟通的效率。特别是控制变更及其对应文档的变更,始终保证设计书与代码的一致性,尽管不是保证项目是否能成功的决定条件,但却是能保证项目成功的必要条件之一。
参考文献:
[1]陈绍文,精益思想-人,过程和技术的集成[J].CAD/CAM与制造业信息化,2002(07).
[2]胡斌.变更信息管理机制及其在PDM变更管理中的应用[J].中国全文学位数据库,2004.
摘 要:随着计算机的广泛应用和计算机科学技术的不断发展,计算机系统的组成也相应发生了许多变化,计算机软件的主导作用愈加明显。软件工程的进一步发展,给软件测试及测试管理带来很大帮助。本文简要介绍了软件测试管理的概念、计划、活动、功能、周期、工作量模型及其应用。
关键词:软件测试管理;软件过程;软件质量
1 软件测试管理的系统活动
实践证明,对软件进行测试管理可及早发现错误,避免大规模返工,降低软件开发费用,为确保最终件质量符合要求,必须进行测试与管理。对于不同企业的不同类产品、同一企业的不同类产品、或不同企业的同一类产品,其各阶段结果的形式与内容都会有很大的不同。所以对于软件测试管理我们除了要考虑测试管理开始的时间、测试管理的执行者、测试管理技术如何有助于防止错误的发生、测试管理活动如何被集成到软件过程的模型中之外,还必须在测试之前,制订详细的测试管理计划,充分实现软件测试管理的主要功能,缩短测试管理的周期。
2.1软件测试管理计划
一个成功的测试开始于一个全面的测试管理计划。因此,在每次测试之前应做好详细的测试管理计划:
首先应该了解被测对象的基本信息,选择测试的标准级别,明确测试管理计划标识和测试管理项。在定义了被测对象的测试管理目标、范围后必须确定测试管理所使用的方法,即提供技术性的测试管理策略和测试管理过程。在测试管理计划中,管理者应该全面了解被测试对象的系统方法、语言特征、结构特点、操作方法和特殊需求等,以便确定必要的测试环境,包括测试硬件/软件及测试环境的建立等等。由于任何一个软件不可能没有缺陷、系统运行时不出现故障,所以在测试管理计划中还必须考虑到一些意外情况,也就是说,当问题发生时应如何处理。因为测试管理具有一定难度,所以对测试管理者应进行必要的测试设计、工具、环境等的培训。最后,还必须确定认可和审议测试管理计划的负责人员。
2.2软件测试管理过程
我们对测试过程中每个状态进行记录、跟踪和管理,并提供相关的分析和统计功能,生成和打印各种分析统计报表。通过对详细记录的分析,形成较为完整的软件测试管理文档,保障软件在开发过程中,避免同样的错误再次发生,从而提高软件开发质量。
2.3软件测试管理内容
具体的测试管理内容有:
测试计划管理:单元测试、集成测试和系统测试的测试计划的录入、修改、删除、查询和打印。
测试用例管理: 测试用例的编号、增加、删除、修改、拷贝和查询;对测试用例的测试情况进行管理,测试状态包括:未测试、测试中、已测试,测试结果为:通过、未实现、存在问题等。
问题报告管理:问题报告处理流程(问题报告整改报告)、实现问题报告与测试案例的关联。
测试报告管理:生成单元测试、集成测试和系统测试的测试报告。
项目管理:对项目、项目中模块、用户及权限进行管理。
通信管理模块:把测试计划、测试用例等测试信息分发给各测试,同时接收各测试传送来的测试结果。
测试:测试负责把测试需求信息接收给测试工具进行测试,并把测试结果发送给测试管理工程数据库中。
除了以上这些,在测试管理过程中还应对人员和环境资源进行管理。
软件测试管理人员:为了实现软件测试管理,需要组成一个专门的测试管理队伍,队伍中的人员都能够胜任他们所担任的角色是很重要的。另外,还需确认每种角色的人员应具有必要的权利以完成他们的责任。同时为了能够获得很高的效率,每个测试管理参与者又都应最大限度地发挥出其最大的技术能力。
环境资源包括硬件资源和软件资源,它们是提供测试管理的基础。每类资源都可以用四个特征来说明:资源描述、可用性说明、需要该资源的时间、及该资源被持续使用的时间。
2.4软件测试管理的主要功能
测试控制对象的编辑和管理:该部分主要是为各测试阶段的控制对象提供一个完善的编辑和管理环境。
测试流程控制和管理:测试流程的控制和管理是基于科学的流程和具体的规范来实现的,整个过程避免了测试人员和开发设计人员之间面对面的交流,减少了以往测试和开发之间难免的摩擦和矛盾,提高了工作效率。
统计分析和决策支持:在系统建立的测试工程数据库的基础上,进行合理的统计分析和数据挖掘。
2.5软件测试管理周期
任何程序,无论大小,都可能会有错误发生。每一个新版本都需要进行新特性的测试和其他特性的一些回归测试。
测试管理人员在接受一个测试管理任务后,除了要制定周密的测试管理计划,还要进行测试方案管理;并且对测试人员所做的测试活动予以记录,做好测试流程的管理。同时,对发现的缺陷予以标识,一方面反馈给提交测试的人员;另一方面将存在的问题和缺陷存入案例库,直至测试通过。
2.6软件测试管理工作量模型的提出
软件测试管理所花费的工作量一般用于:测试、人员、文档料等方面的管理。参考Belady和Lehman模型,我们认为软测试管理工作量模型可以是:
M=P+K×e×p(c-d)+O
其中:M―总的软件测试管理工作量;
P―软件测试工作量;
K―软件测试管理经验常数;
c―软件测试管理复杂程度;
d―软件测试管理人员对软件的熟悉程度的参数;
O―由于不确定因素而带来的额外工作量。
从模型可以看出,如果软件测试管理的方法不好(即软件测试管理过程过于复杂),或者软件测试管理人员对软件不熟悉,不能充分发挥他们的技术能力,那么软件测试管理的工作量或成本将指数地增加。
3软件测试管理的应用
软件测试是一个完整的体系,主要由测试规划、测试设计、测试实施、资源管理等相互关联、相互作用的过程构成。软件测试管理系统可以对各过程进行全面控制。具体的实现过程如下:
1)按照国际质量管理标准,建立适合本单位的软件测试管理体系,以提高本单位开发的软件质量,并降低软件开发及维护成本;
2)建立、监测和分析软件测试过程,以有效地控制、管理和改进软件测试过程,监测软件质量,从而确定交付或软件的时间;
3)制定合理的软件测试管理计划,设计有效的测试案例集,以尽可能发现软件缺陷。并组织、管理和应用庞大的测试案例集;
4)在软件测试管理过程中,管理者、程序员、测试员(含有关客户人员)协同工作,及时解决发现软件问题;
5)对于软件测试中发现的大量的软件缺陷,进行合理的分类以分清轻重缓急。同时进行原因分析,并做好相应的记录、跟踪和管理工作;
6)建立一套完整的文档资料管理体系。因为,软件测试管理很大程度上是通过对文档资料的管理来实现的。软件测试每个阶段的文档资料是以后阶段的基础,又是对前面阶段的复审。
4总 结
软件质量优劣直接影响着计算机应用的深度和V度。因而科学地对软件进行测试和进行软件测试管理是十分必要的。我们认为软件测试管理已变得越来越重要,我们也将运用测试管理工具,对目前正在进行的中间件、构件库以及嵌入式软件测试等科研课题和一些中、大型软件项目进行有序的测试管理,使我们的工作更有特色。所以,只有科学地进行测试管理,才能促进软件开发、测试单位重视全面质量管理、促进软件测试管理队伍的成长、促进软件质量的提高、进一步推动软件测试行业产业化过程。
参考文献
[1] 郑人杰,计算机软件测试技术,清华大学出版社,1992.
【关键词】嵌入式 软件测试 关键技术
软件测试是在计算机软件的基础上发展起来的,就是在特定条件下对软件程序进行操作,发现其中存在的问题,实现对软件质量的评估,为程序的改进提供依据。嵌入式武控计算机软件测试与普通商用软件测试的原则基本一致,但是由于该种软件的运行环境比较特殊,要想成功完成测试,就必须为其提供相应的硬件环境。
一、当前嵌入式武控计算机软件测试中面临的问题
现阶段,嵌入式计算机技术不断得到快速发展,这在很大程度上促使其在社会生活各个领域内的应用也越来越广泛,且该系统中软件系统比重及软件架构呈现越来越复杂的趋势,引起业界不断提升对软件运行可靠性的高度关注。嵌入式系统是计算机、通信、自动化控制等技术高度整合而且产生的产物。嵌入式系统是计算机、通信、自动化控制技术三者结合的产物,在现代计算机软件测试中,得到了较为广泛的应用。武控计算机软件测试过程中,由于其所处环境较为特殊,软件测试面临着较大的困境,如何对这一问题进行有效解决,关系到了武控计算机软件的发展和应用。首先是测试模型的建立问题,要根据软件特征建立灵活的、适应性强的测试模型,这样才能对整个测试过程进行正确指导。这不仅要求技术人员具备较强的专业知识,同时要具备丰富的软件测试经验。
其次是仿真测试平台的建立问题,通常情况下测试平台的测试任务是非常艰巨的,且一般都采用实装环境。实际运用过程中发现,这种环境存在很多约束,例如,软件和硬件都是通用设置,修改起来非常麻烦,这样在进行一些安全性测试时,软件无法正常注入,可能会导致测试不充分,测试结果不准确。
第三是内存泄露问题,该种软件的运行内存有限,一旦发生内存泄露问题,就会对系统正常运行造成影响,严重者可能会直接导致系统崩溃。在对源代码进行检查,确定泄露原因时,一般都需要依靠人工,一方面是检查量太大,给工作人员带来较大压力;另一方面是无法对内存分配进行动态监控,导致测试不充分。
第四是静态测试中存在难题,静态测试包括很多具体内容,不仅要对源代码的规则进行检查,同时需要对各个度量元进行检查,测试结果可能不完全准确,因此需要技术人员对以上检测内容进行进一步分析。要求测试人员在分析过程中不断积累经验,完善代码检查单,这样才能在降低工作量的前提下提高测试结果的准确性。
最后是覆盖率测试方面的问题,嵌入式武控计算机软件应用时不仅要具备较高的可靠性,同时要满足安全性需求。只有测试充分,才能满足以上要求,测试过程中尽量使所有程序语句都被执行,总结来说就是要保证测试的覆盖率。实际对嵌入式武控计算机软件测试过程中经常出现测试覆盖率不足的问题,其中的某些源代码语句没有被执行,没有发现潜藏在其中的BUG,留下安全风险。测试时如何提升覆盖率是技术人员必须要思考的问题。
二、嵌入式武控计算机软件测试环境以及特征分析
(一)测试环境分析
对于嵌入式软件来说,一般测试环境主要有三类,每种都有自身的优点和缺点:首先是全仿真模拟测试环境,这种环境最大的优点就是使用起来非常灵活,可以根据测试需要对数据输入进行设置,且硬件成本不高,可以完成所有的功能性测试和接口测试。缺点是无法实现性能、余量以及强度测试,且测试过程与实际运用存在一定差距;二是半实装仿真测试环境,这种测试环境同样具备较高的灵活性,硬件成本也不高,可以完成所有类型的测试。缺点是测试过程也与实际运用存在一定差距;三是全实装测试环境,这种环境最大的优点就是可以与实际运行环境保持一致,但是无法输入异常数据,且硬件成本相对较高,大面积应用不太切合实际。根据运行环境的优缺点以及嵌入式武控计算机软件测试要求,本文选择半实装仿真测试环境。
(二)测试特征研究
与普通软件测试相比,嵌入式软件表现出以下几个不同特征:首先是软件要硬件的关联性较大,软件高Q合于其所运行的计算机系统,因此其只能在特定的主机上运行,软件是否能够按照预期实现自身功能、性能,与其所处的硬件环境有直接关系。因此,在应用这种软件之前,需要做好配套硬件准备;其次,该种软件对实时性有较高要求,一般要求在规定的毫秒级时间内完成任务,如果任务较多,则需要按照系统规定处理时间顺序。为了提高运行的可靠性,运行过程中不允许出现内存泄露问题,因此除了常规测试以外,还必须对内存泄露进行测试;第三,为了确保软件对运行环境的适应性,还要在不同强度下开展测试,包括高温以及强磁场等特殊环境;最后,该种软件在开发过程中采用的是交叉式,开发程序一般是在通用PC机上,而软件开发完成以后则需要在特定目标机上运行,这就是为什么该种软件测试要更加复杂的原因,这种复杂不仅体现在方法上,同时体现在技术上。
三、嵌入式武控计算机软件测试方法及关键技术
(一)基本宿主机的测试
首先是静态分析,分析之前要建立代码检查表,表中反应的是代码规则,检查表的建立要将软件编写规范作为依据。然后使用特定的静态分析工具对源代码进行检测,得到分析报告。如果发现源代码中有不符合规范的地方,要对其进行适当修正。
其次是代码审查,审查时要将以下内容作为依据:一是软件需求规格内容,二是数学模型内容,三是通信口协议文件。以此确定程序是否与需求一直,明确代码是否按照正确的逻辑表达,同时确认代码是否可读,根据以上内容生成审查报告。
最后是代码走查,要建立一个代码走查小组,小组中不仅要包含软件测试人员,同时要包括软件开发人员。准备好测试用例,要求这些用例具有代表性,代码走查小组要扮演计算机角色,按照程序来执行逻辑,同时执行测试用例,这样就可以发现被测软件程序中存在的问题,生成走读报告。实践证明,代码走查在基本宿主机的测试中发挥重要作用,可以发现软件程序中存在的缺陷,有效提高软件质量。统计表明,在这一环节发现的软件缺陷占整个软件测试中缺陷的40%以上,最高可以达到60%。
(二)基本目标机的测试
首先是覆盖率测试,对源代码进行分析插桩,一般使用Mccabe测试工具。之后编译该程序,一般使用Tonado工具。完成编译以后将其下载到目标机上,将所有测试用例在该目标机上执行,对测试过程中的覆盖率情况进行观察,然后再对测试数据进行分析,得到被测试程序的覆盖情况。如果覆盖率没有达到标准要求,需要继续添加测试用例,如果代码性质为不可达代码,则需要对不可能覆盖情况进行确认,最后得到准确的覆盖率测试报告。
其次是内存泄露测试,这是武控计算机软件测试与普通软件测试中的最大差别,需要对软件中的内存情况以及测试情况进行跟踪,一般需要使用两个工具,一是TestBed,二是Klockwork。需要对跟踪结果进行分析,一旦发现内存泄露,要生成相应的内存泄露报告,报告中还要包含内存出错情况。
随后是确认测试,这一测试过程必须在目标机环境下进行,这与该种软件对硬件环境的独特要求有关。无论是接口、功能以及性能的实现,都需要特定的硬件环境作为支持。仍旧需要提前设计、收集相应的测试用例,对软件是否满足需求进行验证,最后生成测试报告。
四、嵌入式武控计算机软件测试过程模型的建立及应用
(一)测试过程模型的特征分析
一般情况下,测试过程模型如果能够满足测试需要,一般都具备以下几个特征:首先,在分析并确认测试需求时,必须要对每个需求都进行透彻分析,同时要求技术人员真确理解这些需求,尽量发现软件需求中存在的错误;其次,在评价、审核软件体系结构的过程中要同步建立起一个性能工程模型,以此判断软件的结构是否可以满足软件性能要求。总结以往的软件测试经验,我们会发现基本结构不合理是造成软件性能问题的主要因素,与编码的效率并无多大关系;第三,要根据各个软件开发阶段的特征选择合适的测试方法,在宿主与目标测试中间做好平衡;第四,过程模型建立时,可以引入自动化测试工具,实现测试过程的自动化,这样不仅可以提高测试效率,同时可以提升测试结果的准确性;最后,发现软件缺陷并完成修正以后,要对影响域进行分析,并根据测试需要设计新的测试用例,完成回归测试过程,这一环节的主要目的是防止修正过程引入新错误,保证修正环节的有效性。
(二)典型软件测试模型分析及选择
目前经常使用的软件测试模型主要有V、W、X、H四种,每种模型都有自身的优点和缺点。鉴于本文测试过程模型的建立是基于V型和W型的基础上,因此先对这两种模型进行分析,并提出了改造方法。
(1)V模型分析。该种模型是在开发瀑布模型的基础上发展起来的,模型中的流程采用从左到右的方式,清楚的描述了不同开发级别以及测试级别,并且明确表达了各个阶段之间的关系。V模型最大的优点就是将测试明确划分级别,提高了对测试的重视程度,将软件开发过程和测试过程一一对应起来。其缺点有以下几个:首先,测试工作之后于软件编码工作,前者是在后者彻底完成以后才正式开始,这就使很多技术人员对测试工作形成错误的理解,认为其是软件开发工作的最后一步,降低了该项工作的独立性,如果早期开发的结构中存在很大缺陷,就会造成不可挽回的损失;其次,模型中采用左右分支的形式,导致软件开发与测试表现出一种线性关系,各个阶段的测试工作不能同时开展;最后,这种模型将重点放在发现测试阶段的问题上,忽视了回归测试,对软件进行修正以后,很有可能引入新问题。
(2)W模型分析。该种模型是在V模型的基础上发展起来的,我们可以将其理解为两个“V”过程,分别代表着开发和测试过程。这种方式提高了测试过程的独立性,不再将其作为软件开发的一个环节,测试的全面性也有所提升,除了检验程序代码之外,还添加了软件需求测试环节。同时,这种模型强调了软件测试的尽早性,一般开发、一边测试,及时发现结构缺陷并修正。但是W模型也有自身缺陷,所有阶段被划分的非常清晰,必须严格按照要求顺序开展需求分析、软件设计以及编码工作等,这就表示其不支持迭代,不能根据实际情况进行自发性调整。我们知道嵌入式武控计算机软件开发项目中经常出现需求变更情况,导致其缺乏完善的设计文档。
(3)模型改进。通过以上分析我们会发现,传统的软件测试中普遍存在这些问题:测试过程没有从开发过程中完全独立出来,开发与测试过程无法同时展开,或者是程序不具备自我调整能力。这些都严重影响了测试作用的发挥,因此,在对传统模型进行改造时,要重点考虑这些内容。V模型和W模型虽然都有缺点,但是在实际软件测试中的应用仍旧非常广泛,为了提供这两种模型的适应性,可以从以下几个方面做出改进:首先,可以将测试活动定义为过程,并对测试流程进行详细说明,之后扩展测试对象,明确测试中的各方面要求;其次,不仅要将软件开发与测试过程一一对应,保证二者之间的同步性,同时要保证各个测试阶段可以同时进行;第三,将回归测试添加到模型中去,避免修正后的程序中出现新问题;最后,要考虑到嵌入式模型本身的特征,使过程模型可以满足嵌入式软件的测试需要。
(三)嵌入式武控计算机软件测试过程模型的应用
将改进后的模型应用于嵌入式武控计算机软件测试中,会发现其优于传统模型。首先,设计初期就同步开展需求评审工作,将开发目标与用户需求保持一致,同时及时发现设计缺陷并修正,避免不必要的损失;其次,系统结构设计阶段同步建立性能工程模型,对软件性能进行分析,而不是等到软件已经设计完成后再去发现这些问题;第三,由于模型中添加了回归测试环节,对于修正后的部分重新进行检测,要求设计新的测例,通过动态执行保证修正的科学性,有效防止新的缺陷影响软件质量;第四,测试系统参与软件的设计与评审工作,可以有效避免,可以提升设计的合理性,对设计、开发以及测试任务进行合理划分。最后,采用自动化的测试方式可以大大提升测试效率和质量,保证测试结果的全面性和准确性。
五、总结
嵌入式武控计算机软件要求在特定主机上运行,这就为测试工作带来麻烦。本文主要分析了针对这种软件的测试方法,对V模型和W模型进行改造,将改造后的模型应用于实际测试中,可以有效提高测试质量和效率,因此认为该种测试模型值得推广应用。
参考文献:
[1]苗中华,陆鸣超.基于虚拟仪器技术的采棉机智能监控系统开发与应用[J].农业工程学报,2014.
[2].王金波,张涛.基于故障注入的嵌入式软件安全性测试框架及实现[J].计算机应用研究,2012.
[3]刘利枚,汪文勇.嵌入式软件测试方法与技术[J].计算机与现代化,2005.
关键词:高等职业教育;课程设计;校企合作;软件测试
DOIDOI:10.11907/rjdk.162329
中图分类号:G434
文献标识码:A文章编号:1672-7800(2016)012-0197-03
0 引言
随着软件技术在社会各领域的广泛应用,人们开始越来越关注软件产品质量,软件测试作为软件质量保证的重要途径也因此受到行业领域的关注与重视,软件测试岗位的就业前景也变得越来越好。在《国务院关于加快发展现代职业教育的决定》中,提出“深化产教融合、校企合作”[1]。随着技术的发展、产业结构调整的不断加快,持久深入的校企合作已经逐渐成为高职院校课程开发质量的关键要素之一。
《软件测试基础》课程大多在高职院校的计算机类专业中开设,但是普遍存在着课程内容更新慢,教学方法、手段陈旧,课程评价考核单一的问题,导致学生学习兴趣不大,学习效果不佳。该课程在苏州健雄职业技术学院是软件技术专业的一门专业基础课,该院与上海博为峰软件技术股份有限公司、上海泽众软件科技有限公司等从事软件测试的IT企业紧密合作,对课程进行了一系列建设和改革,培养了一大批软件测试人才,受到企业的一致认可。
1 以工作过程为导向的课程设计
课程组成员结合计算机等级考试、计算机软件专业技术资格考试和国际软件测试资质认证(ISTQB)的考试大纲,以及行业、企业对软件测试员的人才需求,与企业专家共同确定本课程的目标为:使学生了解软件测试的发展前景,掌握测试的基础知识,了解测试用例的概念、意义;能够搭建测试环境,掌握常用的黑盒、白盒用例设计方法,能够进行简单的手动功能测试并撰写测试报告与缺陷报告;了解常用的自动化测试工具、性能测试工具,理解测试工具的原理,了解测试管理的概念与流程等。
本课程以软件测试工程师的工作过程为导向,按照软件技术专业培养目标与高职学生的特点,将测试基础知识、相关技术方法、测试管理贯穿在整个测试流程中,从而构建测试各阶段所需的知识与技能。在课程中以“虚拟公司”作为组织形式,在运作过程中充分体现职业教育行为导向和职业性原则。行为导向,即创造师生互动的仿真情境,使学生通过自主协作式学习方式,反复操练,从而形成符合企业要求的行为方式和职业能力。职业性原则,即要求实训目标和就业目标高度一致[2]。学院与企业共建实训平台,通过具体工程项目及案例素材,使用测试管理工具从测试需求建起,测试模块划分、测试用例设计、测试用例执行、缺陷管理,加强学生对测试管理工具的使用。
2 以工作项目为载体的学习情境创设
《软件测试基础》课程最好在第三学期开设,因为这时学生对软件行业已有一定了解,并已具备初步的编程经验,课程共计64学时。依据软件测试的工作过程可以将课程划分为6个学习情境,共15个工作任务,具体如表 1所示。
学习情境1中主要让学生认识缺陷并知道缺陷产生的原因,掌握软件测试的定义、目的、分类和原则,熟悉V模型、W模型、H模型等软件测试的常见模型;熟练掌握软件质量模型的分类和各个评价指标,并明确软件质量与软件测试之间的关系;会查询互联网中的招聘信息,分析软件测试工程师的岗位职责及发展路径,并尽早做好职业生涯规划。
学习情境2中让学生能够明确软件测试的依据,并阅读需求规格说明书,理解测试需求的概念,会对测试需求进行挖掘;能够理解测试计划的重要性,知道测试计划的一般组成要素。
学习情境3中让学生能够理解黑盒测试、白盒测试、灰盒测试的基本概念及它们之间的区别与联系;能够灵活地运用黑盒测试的常用方法,如等价类划分、边界值、决策表、因果图、场景法、正交表等来设计测试用例;能够灵活地运用白盒测试的常用方法,如逻辑覆盖法、基本路径法等设计测试用例。
学习情境4中让学生学会测试环境的搭建,如在虚拟机中部署PHP、JSP、.NET等应用程序;理解单元测试、集成测试、系统测试、验收测试的概念及基本流程,熟悉集成测试的策略,能够使用JUnit 等工具来开展单元测试;能够掌握缺陷的概念,会正确记录缺陷,掌握缺陷报告的基本格式与内容。
学习情境5中要让学生理解测试总结的意义和重要性,并了解测试总结报告的格式与内容。
学习情境6中能让学生掌握手动测试与自动化测试的区别,了解自动化测试、性能测试等工具的原理,初步掌握脚本的录制和参数的设定,为后续课程的学习奠定基础。
3 “互联网+教育”方式的课程改革深化
3.1 利用雨课堂平台实施线上线下混合教学
合理运用互联网新技术,由传统教学向线上线下混合式教学方式转变,打破以往学生学习时空的限制,按需学习,让教育教学资源得到最大化共享。由于本课程概念较多,课程学习后还需通过工信部的考证,线上教学教师通过清华大学研制的雨课堂平台将PPT课件、微课、测试等资料上传至云空间,并推送到学生的移动终端上,督促学生做好预习、复习工作,学生所有的学习行为数据均被自动完整采集,有助于量化了解学生学习效果并把握学生学习轨迹[3];传统的线下面授,则重点解决学生的疑难困惑问题,提高教学效率。
3.2 改进教学方法提高学生学习兴趣
关键词:工程咨询 信息系统 软件测试
信息是现代咨询的基础,工程咨询业俗称为“头脑加工信息”的行业。在信息化建设不断推进的条件下,工程咨询作为智力服务型企业,对信息化的需求日益增长。为了把咨询业务做精、做强、做大,必须依靠现代科技手段和信息处理技术,建立企业内部信息库,挖掘信息资源,改变信息管理方式。把零散的、随机的信息管理,转变为系统的、可持续性的、能够便捷查询和充分共享的信息管理,实现咨询依据可靠、信息来源充分、方法科学的现代咨询发展目标。工程咨询信息系统,满足了工程咨询对信息化的需求,实现了项目管理及图书等资料借阅的自动化管理方式,建立的竞争情报管理系统实现了目标信息的定时抓取,上传企业内部公告等多种功能。在开发一套好的工程咨询信息系统过程中,软件的测试是非常重要的,它对信息系统能否投入运行起着至关重要的作用,软件测试环节是保障软件质量的最后一道关键性关口。在软件的测试中,一定要针对工程咨询的特点,做好软件的测试。
一、工程咨询的特点
工程咨询业是智力服务性行业,运用多种学科知识和经验、现代科学技术管理方法,遵循独立、科学、公正的原则,为政府部门和投资者对经济建设和工程项目的投资决策与实施提供咨询服务,以提高宏观和微观的经济效益。工程咨询具有以下特点:工程咨询业务范围弹性很大,可以是宏观的、整体的、全过程的咨询,也可以是某个问题、某项内容、某项工作的咨询;每一项工程咨询任务都是一次性的、单独的任务、只有类似,没有重复;工程咨询是高度智能化的服务,需要多学科知识、技术、经验、方法和信息的集成及创新;工程咨询牵涉面广;许多工程咨询成果具有预测性、前瞻性;工程咨询提供智力服务,咨询成果属非物质产品。
二、软件测试的目的
软件测试是为了发现错误而执行程序的过程;测试是为了证明程序有错,而不是证明程序无错误;一个好的测试是在于它能发现至今未发现的错误;一个成功的测试是发现了至今为止未发现的错误的测试。
软件测试的目的不仅仅是为了发现程序中存在的错误,它还是软件质量保证至关重要的一个环节。软件测试不同于程序员在代码编写完成后简单的使用、调试,软件测试需要遵循一定的原则,软件测试的原则大致包括以下内容:确定预期输出是测试必不可少的一部分,程序员应避免测试自己编写的程序,程序设计机构不应测试自己的程序,彻底检查每一个测试结果,对非法的和非预期的情况也要象对合法的预期输入一样编写测试用例,检查程序是否做了要它做的事仅仅是成功的一半,另一半是程序是否做了不要它做的事,除了真正没有用的程序外,一定不要扔掉测试用例,一段程序中存在错误的概率与在这段程序中已发现的错误成比例,在规划测试时,不要设想程序中不会查出错误,所有的测试都应当追溯到用户需求,应该在测试工作真正开始前就开始计划测试,测试应该从“小规模”开始逐步转到“大规模”,测试发现错误中80%的错误属于20%的程序模块,穷举测试是不可能的,但充分覆盖程序逻辑是可能的,测试是一件非常复杂,具有创造性的和需要高度智慧的挑战性任务。
三、软件测试几点看法
软件测试作为软件上线的最后关口,应得到高度重视。但由于思想意识和历史原因,出现重开发轻测试的现象,软件测试成为制约软件成功上线运行的瓶颈。由于对软件测试的重要性理解不够,很多人认为程序能够运行基本上就已经成功,没有必要进行专门的测试,这些都是错误的观点。
软件测试分为:单元测试(模块测试),集成测试。在进行所有的测试前,一定先要认真阅读各种相关文档,同时制定测试计划,同时进行测试用例设计,在设计测试用例时,要对待测软件进行分析,设计合理的模型,制定测试用例。在测试进行过程中,要根据实际情况修改或增加测试用例。
在测试完成后,要根据测试结果填写《软件测试问题跟踪单》,在整个软件测试完成后,要分析测试结果并编写测试报告。在测试报告中要说明本次测试的结果,如各个等级的BUG的数目,在各个模块中的分布情况及评语。在整个项目完成后,将测试工作所产生的所有文档交文档管理员归档。
软件测试是为了拟制缺陷。作为衡量和评价的手段,测试是质量控制的核心环节,除发现问题外,测试还有预防的潜力。
软件测试是对软件产品是否能够满足预期要求做出客观的技术性评价。固然品质是制造出来的,而不是检验出来的。但是,软件测试在明确和界定清楚测试与开发的关系时,不能简单地把测试与开发看作是串行的过程。从工作流程看,测试应当从需求分析开始,测试不仅要与开发平行,而且从开始就以测试用例为需求立定客观标准。从目前实际和发展趋势看,规范化的软件测试要尽早介入项目开发,介入越早,纠错越快,软件质量和效果可控越好。
面对信息化速度加快,全球化进程加速,市场化程度加深,城市化趋势加强所带来的机遇和挑战,一个信息系统软件对工程咨询机构提高工作效率起着重要的作用,而软件的测试又是对软件能否成功上线运行起着至关重要的作用,因此,工程咨询业应高度重视信息系统软件的测试工作。