软件评测管理系统文档格式.docx
《软件评测管理系统文档格式.docx》由会员分享,可在线阅读,更多相关《软件评测管理系统文档格式.docx(25页珍藏版)》请在冰豆网上搜索。
[2]
1.3软件测试管理平台的技术分析
1.3.1软件测试的发展情况
在企业信息化的建设过程中,科技正从传统的业务支撑角色,逐步走向前台,发展到逐步引领业务的发展和内部管理的提升。
各个企业纷纷投入大量资金和人力进行各类业务系统和管理系统的开发和优化,但是由于思想意识和历史原因,在这一信息化建设的过程中出现了软件行业一直一来存在的重开发,轻测试现象,软件项目的测试质量成为制约软件产品质量提升的瓶颈。
[3]
随着企业IT应用项目开发工作的不断深入,项目的规模和复杂度都在增加。
为保证项目的投产质量,测试工作的重要性越来越引起各级职能部门的广泛关注和高度重视。
(1)国内外软件测试现状
在软件业较为发达的国家,软件测试是软件开发的一个重要的有机组成部分,而且在整个软件开发的系统工程中所占的比重是相当大的。
以美国软件开发的平均资金投入为例,通常是“需求分析”和“规划确定”各占20%,“设计”占5%,“开发”占10%,“测试”占45%。
与此同时,软件测试市场已经成为软件产业中的一个独特市场,在美国硅谷,软件开发企业或设有软件开发部门的公司,都有专门的软件测试单位,其中软件测试人员的数量相当于软件开发工程师的3/4。
在这些公司或部门中,负责软件测试的质量保证经理与软件开发主管其职位是平行的。
据了解,在软件产业发展较快的印度,软件测试在软件企业中也同样具有举足轻重的地位。
目前国内软件测试一般存在以下几种形式:
一是软件公司内部安排相关人员进行各功能的测试验证;
二是由用户直接进行用户体验测试;
除此之外还存在第三种方式,那就是有专业软件测试人员运用一定的测试工具对软件的质量进行检测,但其市场表现令人尴尬,相比中国市场的软件开发公司比比皆是,而软件测试公司却是凤毛麟角。
由于在企业中对软件测试的重要性理解不深入,很多人认为一个软件一个系统只要能够运行基本上就已经成功,而根本没有必要成立专门的测试职能部门或设立测试专职的岗位。
另一方面,软件开发企业在为软件开发支付费用后,不希望再为软件的测试支付新的成本,即是有些项目的开发方或委托方有意对软件进行第三方测试,也会考虑到在测试过程中可能会要软件开发商提供源代码,担心知识产权、商业秘密等遭到泄露。
因此国内第三方测试公司更倾向于欧美、日本及印度的本地化外包测试业务。
[4]
(2)国内行业软件测试缺陷探析
目前国内部分企业的IT部门并未设置相对独立的软件测试部门和测试管理部门,仅仅依靠业务部门的验收测试来概括开发阶段后的所有测试工作,这样一来软件质量难以得到保证。
业务测试人员是不可能从专业的软件测试工程师角度对软件进行有效测试验证,仅从业务需求出发进行验收测试,测试角度就存在有缺陷。
此外对应用系统的性能测试也使业务部门的测试人员更不知从何下手。
或许有人认为成立独立的软件测试部门成本较大,不如让软件开发人员来兼职软件测试工作。
这种想法犹如既当运动员又当裁判员,测试效果同样无法达到要求。
从逻辑思维上分析,开发人员会从程序本身开发的逻辑流程上去做测试,不能将临界点、边界
值、等特殊情况进行有效地测试;
从心理学的角度进行分析,开发人员更多的是考虑怎样才能使程序测通,而不是软件测试角度如何尽可能的发现程序中存在漏洞。
与此同时,成立规范的测试管理部门也非常必要,否则会产生重结果轻过程、测试过程不透明等弊端。
比如测试案例的设计是否完全覆盖需求、测试案例的的执行情况如何做到有效的监控、缺陷管理和跟踪复测、回归测试管理以及测试过程中的程序版本更新和上线版本的管理等能否得到保证。
1.3.2目前软件测试存在的问题
软件测试虽然日益受到重视,但是,目前不少软件企业的软件开发模式仍然处在无序开发的不规范状态,与软件程序编码比较,软件测试的地位和作用,还没有真正受到重视,很多人还存在对软件测试的错误认识,这影响了软件测试活动的进行和真正提高软件测试质量。
测试上的常见问题有如下几方面。
(1)软件测试的目的理解有误
对稍微了解软件测试人都知道,软件测试的目的是为了发现软件中的缺陷。
一个好的测试用例在于能发现至今未发现的缺陷。
也就是人们常说的:
软件测试可以说明软件存在缺陷,但不能说明软件不存在缺陷。
这种观点不能说是错误的,但至少是不全面的。
如果从软件过程的角度来看,就可以看到一个被大多数人忽略的软件测试目的是:
软件测试可以帮助发现当前开发工作所采取的软件过程的缺陷,以便进行改进。
具体的说,软件测试并不仅仅是为了要找到软件中存在的缺陷,而更要分析错误产生的原因和其产生的阶段。
通过分析结果,从软件过程方面去改进,从而避免今后有类似的错误出现,并能发现有关联的潜在缺陷。
通过这种方式就可以尽早的发现并修正缺陷,同时也可以预防某些缺陷的产生。
所以,应该正确分析与利用测试的结果并有效地进行软件过程改进,从根本上提高软件质量,降低软件开发成本。
(2)软件测试的介入时间晚
根据软件生命周期的定义,软件项目开发过程一般要经过以下几个阶段:
需求分析,概要设计,详细设计,软件编码,软件测试,软件发布。
因此,许多人认为软件测试只是软件编码后的一个过程。
这是不了解软件测试周期的真正含义造成的错误认识。
软件测试是一个系列过程活动,包括软件测试需求分析,测试计划设计,测试用例设计,执行测试。
因此,软件测试贯穿于软件项目的整个开发过程。
在软件项目的每一个阶段都要进行不同目的和内容的测试活动,以保证各个阶段的正确性。
软件测试的对象不仅仅是软件代码,还包括软件需求文档和设计文档。
软件开发与软件测试应该是交互进行的,例如,单元编码需要单元测试,模块组合阶段需要集成测试,系统集成阶段需要系统测试。
如果等到软件编码结束后才进行测试,那么,测试的时间将会很短,测试的覆盖面将很不全面,测试的效果也将大打折扣。
更严重的是如果此时发现了软件需求阶段或概要设计阶段的错误,要修复错误,将会耗费大量的时间和人力高效的系统测试有赖于高效的计划。
测试用例像源代码一样,需要设计、评审和实施。
如果不想让测试成为阻碍软件发布的关键路径,就要尽早开始测试计划。
可以在了解了需求之后就开始。
若采用分阶段交付使用的方法,在第一阶段中途就可获得可执行的软件,这时就可以开始系统测试
(3)测试代码无相关规范
大家肯定知道测试代码是不能随意编写的,并且在编写测试代码时也不是抱着一种随意的态度,但是编写出来的测试代码以及测试代码运行的情况往往表现出了一种随意性和无序性,没有弄清楚测试的真正意图所在。
测试的目的是用来验证软件系统是否满足了需求,因此,测试代码一定要明确的表达出这一点来。
如果测试者真正从用户的角度出发,那么他编写出来的测试脚本应该是每一个测试用例都清晰的刻画了一项用户的需求,然后验证系统是否实现了用户期望的功能。
这样的测试才是有明确目的,才是最有效地测试。
软件系统测试计划应能覆盖百分之百的软件功能。
细想一下,造成容易陷入针对实现细节测试的原因主要是由于先编写完代码,然后才去进行测试,潜意识中就会不由自主的想去验证已经完成的某些实现细节。
如果能够在编写代码前,首先编写针对该模块的测试代码,情况就会有很大的不同,因为这会迫使你从使用者的角度去考虑问题。
结果就是会把关注点放在模块的功能上,而不是某种实现细节。
这样写出来的测试代码要稳定的多,也有效地多。
(4)测试人员的不专一性
了解软件测试的人都知道,测试是需要专门的测试工程师。
然而事实上,多数软件测试的工作都是由编程人员自己进行的。
但编程人员与测试人员的思维方式不同。
编程人员的工作是编码,他们潜意识里进行测试是想验证自己的代码没有错误,而不是发现错误,有时可能会为了方便测试而修改源代码。
测试人员则应该具有挑刺的性格,他的工作是否定生成的代码,找出代码中存在的缺陷。
任何一个人都难以同时胜任这两种具有不同工作取向的任务。
所以,资深的程序员不一定是一名优秀的测试工程师,必需由独立的人员和小组来进行软件测试。
并且单单指定一个或几个人,说他们现在就是测试小组的成员是不够的,应该培训该小组成员如何进行软件测试。
而在一个项目团队中,开发人员与测试人员的比例需要相对合理,才能保证测试的高质量。
一般情况下,对于生命悠关的软件,如航天飞机的飞行控制软件,每个开发者对应10名测试者;
而不要求高可靠度的室内商业软件,一个测试者可以对应3到4个开发者。
1.3.3现状总结和思考
随着软件工程学的发展和软件项目管理经验的提高,软件测试已经成为一个独立的技术学科,演变成一个具有巨大市场需求的行业。
软件测试技术不断更新和完善,新工具、新流程、新测试设计方法都在不断涌现,需要掌握和学习很多测试知识。
然而,对于测试的管理目前仍然处于不规范状态,没有一个有效地平台对整个测试进行监控和管理,特别是测试设计,测试执行过程的管理。
只有有效地管理和积累,才能够使测试真正起到它应有的作用,达到提高软件质量的目的。
1.4软件测试的理论基础
1.4.1软件测试的定义
软件测试使用人工或者自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
它是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness)完全度(completeness)和质量(quality)的软件过程;
是SQA(softwarequalityassurance)的重要子域。
[5]
(1)测试并不仅仅是为了找出错误.通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进;
(2)这种分析也能帮助测试人员设计出有针对性的测试方法,改善测试的效率和有效性;
(3)没有发现错误的测试也是有价值的,完整的测试是评定软件质量的一种方法。
1.4.2软件测试的目的
如果测试的目的是为了尽可能多地找出错误,那么测试就应该直接针对软件比较复杂的部分或是以前出错比较多的位置。
如果测试目的是为了给最终用户提供具有一定可信度的质量评价,那么测试就应该直接针对在实际应用中会经常用到的商业假设。
在谈到软件测试时,引用GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中的观点:
(1)软件测试是为了发现错误而执行程序的过程;
(2)测试是为了证明程序有错,而不是证明程序无错误;
(3)一个好的测试用例是在于它能发现至今未发现的错误;
(4)一个成功的测试是发现了至今未发现的错误的测试。
这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。
但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目,查找不出错误的测试就是没有价值的,事实并非如此。
首先,测试并不仅仅是为了要找出错误。
通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。
同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。
其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。
[6]
1.4.3软件测试的内容
验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情。
(Dotherightthing)
1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程;
2.程序正确性的形式证明,即采用形式理论证明程序符号设计规约规定的过程;
3.评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。
确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。
即保证软件以正确的方式来做了这个事件(Doitright)
1.静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性;
2.动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。
软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。
[7]
2相关技术和工具介绍
2.1相关测试技术介绍
按照软件测试用例的设计方法而论,软件测试可分为黑盒测试和白盒测试;
[8]
2.1.1白盒测试
白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑测试、基路测试等,主要用于软件内部结构的验证。
2.1.2黑盒测试
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
黑盒测试方法主要有等价类划分、边界值分析、因—果图、错误推测等,主要用于软件确认测试。
2.1.3等价类划分
等价类划分:
是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
该方法是一种重要的、常用的黑盒测试用例设计方法。
2.1.4边界值分析法
边界值分析法:
边界值分析方法是对等价类划分方法的补充。
边界值分析方法的考虑:
长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。
因此针对各种边界情况设计测试用例,可以查出更多的错误。
2.1.5因果图方法
前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等。
考虑输入条件之间的相互组合,可能会产生一些新的情况。
但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多。
因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例。
这就需要利用因果图(逻辑模型)。
2.1.6错误推测法
错误推测法:
基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法。
其基本思想:
列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。
2.2相关测试工具介绍
2.2.1QTP
QTP是quicktestProfessional的简称,是一种自动测试工具。
使用QTP的目的是想用它来执行重复的手动测试,主要是用于回归测试和测试同一软件的新版本。
因此你在测试前要考虑好如何对应用程序进行测试,例如要测试哪些功能、操作步骤、输入数据和期望的输出数据等。
2.2.2LR
MercuryLoadRunner是一种预测系统行为和性能的负载测试工具。
通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner能够对整个企业架构进行测试。
通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。
目前企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不同供应商提供软件和硬件产品。
难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢,系统崩溃等问题。
这些都不可避免地导致公司收益的损失。
MercuryInteractive的LoadRunner能让企业保护自己的收入来源,无需购置额外硬件而最大限度地利用现有的IT资源,并确保终端用户在应用系统的各个环节中对其测试应用的质量,可靠性和可扩展性都有良好的评价。
2.3本文开发工具及技术
此次设计主要采用wampserver集成开发工具进行,设计过程中页面主要使PHP技术完成,结合MySQL数据库以及Apache服务器。
下面对wampserver、Apache和MySQL数据库进行简要介绍。
2.3.1wampserver
Wamp就是WindowsApacheMysqlPHP集成安装环境,即在window下的apache、php和mysql的服务器软件。
WampServer是一款由法国人开发的ApacheWeb服务器、PHP解释器以及MySQL数据库的整合软件包。
免去了开发人员将时间花费在繁琐的配置环境过程,从而腾出更多精力去做开发。
在windows下将Apache+PHP+Mysql集成环境,拥有简单的图形和菜单安装和配置环境。
2.3.2MySQL
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司。
MySQL被广泛地应用在Internet上的中小型网站中。
由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。
MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。
MySQL软件采用了双授权政策,它分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。
由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。
2.3.3Apache
ApacheHTTP
Server(简称Apache)是Apache软件基金会的一个开放源码的网页服务器,可以在大多数计算机操作系统中运行,由于其多平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
它快速、可靠并且可通过简单的API扩展,将Perl/Python等解释器编译到服务器中。
2.3.4PHP
PHP独特的语法混合了C、Java、Perl以及PHP自创的语法。
它可以比CGI或者Perl更快速地执行动态网页。
用PHP做出的动态页面与其他的编程语言相比,PHP是将程序嵌入到HTML(标准通用标记语言下的一个应用)文档中去执行,执行效率比完全生成HTML标记的CGI要高许多;
PHP还可以执行编译后代码,编译可以达到加密和优化代码运行,使代码运行更快。
PHP的特性包括:
PHP独特的语法混合了C、Java、Perl以及PHP自创新的语法;
PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比;
PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多;
PHP具有非常强大的功能,所有的CGI的功能PHP都能实现;
PHP支持几乎所有流行的数据库以及操作系统;
最重要的是PHP可以用C、C++进行程序的扩展!
2.4本章小结
本章节阐述了软件测试行业的的发展过程和现状,总结了当前软件测试管理存在的不足,提出了本文的技术路线,围绕测试管理技术及PHP技术的平台框架建立软件测试管理平台,对相关的测试技术及工具作了简单阐述。
3软件评测管理系统的设计过程
3.1系统设计
3.1.1设计目标
针对企业的软件测试工作的特点和性质,研究一套有效地管理方法结合管理平台达到提高测试质量的效果。
主要考虑如下几个方面:
[9]
(1)测试案例的规范化,来统一企业软件测试案例的粒度,以达到企业软件对功能准确性、数据准确性的要求。
(2)适应企业各类业务系统快速发展带来的对测试质量和测试过程管理的高要求。
(3)改变现阶段企业软件测试中,测试资料和测试管理分散且监控粒度不统一的现状。
建立测试管理平台,实现对测试过程的统一监控统一监管,做到简单而且明了。
(4)统一管理软件测试工具和脚本,通过平台实现测试程序和脚本的利用最大化,避免重复工作,提升工作效率。
(5)分析企业现有项目管理中测试过程存在的问题,通过企业软件测试管理平台,建立企业软件测试管理体系,全面提升企业软件产品质量。
3.1.2设计原则
软件测试管理平台应为尽量减轻手工操作带来的工作量,提供合适的手段让非技术测试人员掌握相应的开发和测试工具的使用,充分利用资源,提高工作效率和质量。
同时,为提高工具的使用范围,所开发工具以体现独立性、通用性、兼容性、可操作性、可扩展性、可移植性为目标,并建立统一的测试辅助管理平台,以利于统一管理和指引来提高系统测试阶段的测试质量通过平台,可以使测试主管、项目主管和各管理阶层的负责人直观地了解项目测试各阶段的情况,达到风险的提前发现提前规避,通过监控测试过程各阶段的质量来确保项目整体的质量。
[10]
3.1.3功能模块
对于软件测试管理平台的设计目标和设计原则,主要设计如下功能模块如图
图3-1功能模块图
本平台的功能覆盖系统管理、公共信息维护、测试案例库、测试工具库、内部流程管理等,就各模块的功能作用分析如下: