《毕业设计(论文)软件测试过程控制之缺陷控制子系统设计与实现.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)软件测试过程控制之缺陷控制子系统设计与实现.doc(44页珍藏版)》请在三一办公上搜索。
1、本科毕业设计(论文)软件测试过程控制之缺陷控制子系统设计与实现学 院计算机学院 专 业 计算机科学与技术 年级班别 学 号 学生姓名 指导教师 2011年5月摘 要计算机应用的越来越广泛、越来越深入,计算机软件也变得越来越复杂,随之而来软件测试的工作量也变的庞大起来,软件测试过程的控制和管理随之诞生。传统的人工控制和管理手段是不可能对软件测试的所有过程进行科学合理的控制和管理,于是软件测试过程控制软件和工具随之出现。软件测试过程控制软件和工具能够科学合理的对软件测试过程进行控制和管理,从而保证了软件测试的质量、控制了软件测试的成本、压缩了软件测试的周期。本文首先对软件、软件缺陷、软件质量和软件
2、测试的基本概念做了简单的概述,然后对整个软件测试系统和自己设计完成的权限管理和缺陷控制模块做了详细分析。最后展示了对整个系统运行测试的结果图。本文主要介绍的是软件测试过程控制系统,该系统实现了对一个新项目的测试管理。这个系统包括了用户管理、权限管理、需求文档管理和缺陷控制。首先,可以新建一个新的项目,导入相对应的需求文档;然后根据需求文档的信息,设计测试用例,并且保存测试用例以便以后可以用;最后是对测试过程中产生的缺陷的控制,对缺陷进行分析、保存并显示给用户。关键词:软件测试管理,需求文档管理,缺陷控制。AbstractThe applications of computer becoming
3、 more extensive and in-depth and the computer software systems becoming more complex, the following work of software testing must be huge. Not all parts of the software can be test by traditional means without any omission. As people focus on software testing and manual testing has been far from sat
4、isfying the requirements of modern software testing, so a lot of software test process control software and tools emerge. Test process control software is a low cost and high efficiency way to meet the demand of complete and full test of software in the shortest time rang, also it notably improve th
5、e quality assurance, cost control and cycle compression of the whole software development action.First, this thesis simply introduces the basic concepts of software, software defects, software quality and software testing. Then the thesis made a detailed analysis of entire software testing system an
6、d the control module of my own design flaws. Finally, the thesis showed the results chart of running the whole system.This thesis describes a software test management system that implements a test of a new project management. The system includes a user management, rights management,demand document m
7、anagement and defect control. First, you can create a new project and import demand for the corresponding document. Then according to the information of the document, you design the test cases, and save the test case so that you can use. Finally, the test defects generated in the process control of
8、defects Analysis, preservation and display to the user.Key words: Software Test Management, Demand Document Management, Defect control目 录一 绪论11.1课题的背景及目的11.2国内外研究现状21.3论文构成4二理论基础62.1软件基本概念62.1.1软件的分类62.1.2软件的特点62.1.3软件的生命周期72.2软件缺陷与软件质量82.2.1软件缺陷和软件故障的定义82.2.2软件缺陷的表现82.2.3软件产生错误和缺陷的原因92.2.4软件质量和质量模型
9、92.3软件测试102.3.1软件测试的目的和原则102.3.2软件测试的方法122.4软件缺陷管理132.4.1缺陷管理的目的132.4.2缺陷管理人员的职责132.4.3软件缺陷的描述规则14三软件需求分析153.1系统总体需求分析153.2权限管理需求分析153.3需求文档管理需求分析163.4缺陷控制需求分析16四系统设计184.1开发语言和开发平台的选取184.2系统的整体设计框架184.3数据库的设计194.4权限管理基本架构204.5缺陷管理基本架构21五程序设计225.1数据库设计225.1.1权限管理数据库设计225.1.2缺陷控制数据库设计245.2主要算法设计255.2.
10、1权限管理主要算法255.2.2缺陷控制主要算法25六实现与测试27七小结与展望36参考文献37致 谢39一 绪论1.1课题的背景及目的软件测试是软件工程一个不可或缺的重要部分,是确保软件工程质量的重要手段。最近几十年来,由于软件工程的复杂度的不断增加,软件测试也越来越受到重视。对于测试的定义,一直在发生着改变。1979年,测试被定义为为发现错误而执行一个程序或者系统的过程。到了1983年,测试是以评价一个程序或者系统的属性为目标的任何一种活动;测试是对软件质量的度量。到了现在,测试是指为了度量和提高被测试软件的质量,对测试件进行工程设计、使用和维护的并发生命周期过程。软件测试就是利用测试工具
11、按照测试方案和流程对产品进行功能和性能测试,甚至根据需要编写不同的测试工具,设计和维护测试系统,对测试方案可能出现的问题进行分析和评估。执行测试用例后,需要跟踪故障,以确保开发的产品适合需求。在IEEE提出的软件工程标准术语中,软件测试被定义为:“使用人工和自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别。”软件质量和软件测试是密切相关的,软件测试的最终目的就是为了保证软件的软件质量。软件测试被认为是一个寻找软件程序内部错误和缺陷的过程。同时,软件测试的过程也是软件程序进行执行、运行的过程。程序的执行和运行需要必要的数据支持,测试用例是
12、为软件测试而设计的特殊数据。尽最大的可能显示出程序中的错误是测试用例的设计的重要原则。软件是由人(程序员、软件工程师)来编写实施的,所有由人类完成的工作都不会十全十美。软件开发是个极容易产生错误的复杂过程,尽管程序员、软件工程师以及专家和学者做了巨大的努力和工作,软件错误依旧存在并且不可避免。因此人们也产生了一种共识:软件中隐藏着某些错误,这是软件是无法改变的一种特殊性质。软件测试的目标就是以最少的时间、人力、物力尽可能多的发现软件中潜藏的各种错误和缺陷,从而把这些错误和缺陷加以纠正和改进进而提高了软件的质量,避免软件发布后由于潜在的软件各种缺陷和错误造成的所带来的各种风险和损失。 伴随计算机
13、应用的场合越来越广泛越来越深入,计算机的软件系统也变得越来越复杂,随之而来软件测试的工作量也变的庞大起来,很多软件如果用传统的人工手段是不可能对软件的所有结构进行没有遗漏的测试,即使真的进行没有遗漏的测试也需要耗费巨大的人力、物力和宝贵的时间。现在的软件测试不仅仅是一种技术,更是一种工程,工程具有其自身的特点必须要科学、合理、严谨,必须按照一定的规范和步骤实施,这样才能保证工程的可靠性和可用性。工程就需要必要的管理,所以先进的软件测试工程也是需要相关的测试管理软件进行支持,只有这样才能有效的对软件测试的各个方面和流程进行管理,从而提高软件测试的效率,降低软件测试的成本以,增强软件测试过程的可控
14、性。对软件进行测试之后,如果软件能达到预期的效果,当然最好,这样就说明软件合格了。但是大多数软件测试都有缺陷出现,这正是软件测试的目的,为了寻找软件程序内部错误和缺陷。得出缺陷之后,就是对缺陷的分析和控制。缺陷的种类,缺陷的严重程度,如何去解决缺陷。这是软件测试的一个很重要的部分,光测出缺陷不行,还得去分析、控制、解决这个缺陷,这才是主要的。缺陷控制就是做这步工作的。1.2国内外研究现状现在市场上主要是有很多软件测试自动化工具,但是这些自动化测试工具都是只在单元测试阶段、集成测试阶段、验收测试阶段、系统测试阶段、回归测试阶段的某一个阶段发挥出巨大的作用、显现出独特的优势,并不能够对整个测试流程
15、进行有效的管理和控制,也不能够把软件测试的所有过程和所有方面联系成一个有机的整体。因此,缺乏必要的系统性和完整性。这些自动化测试工具也不能够在测试程序开发、测试程序执行、测试程序结果分析、程序故障状况和报告生成等测试领域发挥出规划、统计、评测等管理功能,具有一定的局限性。软件测试过程控制系统在软件测试中是十分重要和必要的。只有通过软件测试过程控制系统才能对软件测试进行工程化、精细化、科学化的设计和管理,才能提高软件测试的效果和效率,从而达到提高软件质量的目的。目前国际上比较通用的软件测试系统是QC-Quality Center。它是Mercury Interactive 公司(现在软件版权属于
16、惠普公司)推出的一个基于 Web(伪) 且支持测试管理的所有必要方面的应用程序。该软件提供统一、可重复的流程,用于收集需求、计划和安排测试、分析结果并管理缺陷和问题。组织可使用该软件在较大的应用程序生命周期中实现特定质量流程和过程的数字化。该软件还支持在 IT 团队间进行高水平沟通和协调。QC的主要功能有如下。1.Quality Center 有助于维护测试的项目数据库,这个数据库涵盖了应用程序功能的各个方面。设计了项目中的每个测试,以满足应用程序的某个特定的测试需求。要达到项目的各个目标,可将项目中的测试组织成各种特定的组。Quality Center 提供了一种直观、高效的方法,用于计划和
17、执行测试集、收集测试结果以及分析相关数据。Quality Center 还具有一套完善的系统,用于跟踪应用程序缺陷,通过它,您可以在从初期检测到最后解决的整个过程中严密监视缺陷。将 Quality Center 链接到电子邮件系统,所有应用程序开发、质量保证、客户支持和信息系统人员可以共享缺陷跟踪信息。2.Quality Center 可以集成 Mercury 测试工具以及第三方和自定义测试工具、需求和配置管理工具。Quality Center 可以无缝地与您选择的测试工具通信,提供一种完整的解决方案,使应用程序测试完全自动化。3.Quality Center 可指导您完成测试流程的需求指定、
18、测试计划、测试执行和缺陷跟踪阶段。它把应用程序测试中所涉及的全部任务集成起来,有助于确保客户能够得到最高质量的应用程序。 另一个,目前国际上较为成熟的软件测试过程控制系统是QESuite, QESuite使软件开发企业可以脱离原有的纸张与电子表格等原始的文档记录方式,采用Lotus Notes或SQL等大型数据库管理方式,无论是开发人员、测试人员或项目管理人员都可以随时编写、修改和查阅测试用例和软件问题报告,并可对测试用例与软件问题报告进行长期保存,避免了测试用例与软件问题报告的流失。QESuite 可对测试用例的编写与执行情况进行全程记录,便于项目管理人员追踪测试用例在各个测试阶段的执行过程
19、,及时调整测试策略与方法;并可记录软件问题从发现、分析到解决的整个状态转换过程和人员操作记录,便于项目管理人员追溯软件问题处理的各个过程,有助于进一步提高软件问题的处理质量与软件量。QESuite 提供了统一的软件问题报告模板与测试用例模板,使测试人员能够更加准确、详细地编写测试用例与描述软件问题,保证了测试用例与软件问题报告描述的一致性,便于对测试用例与软件问题的积累,分类与查询。3科学划分的软件问题生命周期的主状态及子状态,可以帮助用户详细记录、跟踪和管理软件问题的生命周期全过程,基于此软件问题生命周期状态转换图而定义的软件问题处理工作流,将测试部门与开发部门的工作结合在一起,将大大提高软
20、件问题的处理效率与准确性,QESuite具有实用的统计功能,项目管理人员可以从各种角度建立分析统计报表,以便及时掌握测试用例的执行情况,软件问题的有效发现率、有效修复率和各项测试工作的进度,并进行全局管理,QESuite 的用户可以根据人员的分工和职能不同划分严格的权限,从而明确测试任务,并保证系统数据的安全,QESuite Notes版更是构建在Lotus Domino/Notes的强大的安全机制基础之上,系统数据安全将更有保证,QESuite现有 Web版和Notes版两种运行版本,可适应不同企业对运行成本和系统运行安全的不同要求。QESuite Notes版基于Lotus Domino/
21、Notes构建,充分利用了Domino/Notes的强大群组协同能力和强大的安全机制,适合于对系统数据安全性要求比较高的软件企业,也适用于已经拥有Lotus Domino/Notes平台的软件企业,QESuite Web版基于B/S结构,运行环境简单,投入成本低。1.3论文构成第一,绪论:介绍软件系统的开发来由,总结当前软件测试过程的工程化情况、存在问题和相关工具的国内外研究情况,开发这类工具的意义何在。第二,理论基础:开发这个软件系统依据的理论、思想。第三,软件需求分析:整体需求和自己所编写的部分的功能、性能要求。第四,系统设计:软件整体设计,分工情况,分工之后,自己所做部分与其他同学所做部
22、分的借口。整体的架构分析和自己的基本架构分析。第五,程序设计:模块、借口的划分与设计、数据库设计、数据结构设计等等。第六,实现与测试:依据软件运行的流程进行截图,给出各步骤的运行结果分析。第七,结论和展望:对本文做一个简单的综合评价,对技术的发展前景和以后的可研究方向做出判断。最后是参考文献和致谢。二理论基础2.1软件基本概念软件(英文:Software)是一系列按照特定顺序组织的计算机数据和指令的集合。一般来讲软件被划分为编程语言、系统软件、应用软件和介于这两者之间的中间件。软件并不只是包括可以在计算机(这里的计算机是指广义的计算机)上运行的电脑程序,与这些电脑程序相关的文档一般也被认为是软
23、件的一部分。简单的说软件就是程序加文档的集合体。计算机软件被认为是计算机系统中与硬件相互依存的另一部分,计算机软件包括程序、数据、其相关文档的完整集合,核心是计算机软件能提供某项特定功能的服务。通俗的讲:软件 = 程序 + 数据 + 文档 + 服务。12.1.1软件的分类一般来讲软件被划分为系统软件、应用软件,其中系统软件包括操作系统和支持软件(微软近期又发布嵌入式系统,即硬件级的软件,使电脑及其它设备运算速度更快更节能)系统软件为计算机使用提供最基本的功能,可分为操作系统和支撑软件,其中操作系统是最基本的软件。但是系统软件并不针对某一特定应用领域。而应用软件则相反,不同的应用软件根据用户和所
24、服务的领域提供不同的功能。应用软件是为了某种特定的用途而被开发的软件。2.1.2软件的特点(1)软件产品的生产主要是脑力劳动,还未完全摆脱手工开发方式,大部分产品是“定做”的。(2)软件是一种逻辑产品,它与物质产品有很大区别,他是脑力劳动的结晶。软件产品是看不见摸不着的,因而具有无形性。它以程序和文档的形式出现,保存在存储介质上,通过计算机的运行才能体现它的功能和作用。(3)软件产品不会用坏,不存在磨损、消耗问题。;(4)软件产品的生产主要是研制。其成本主要体现在软件的开发和研制上,软件开发研制完成后,通过复制就产生了大量软件产品。(5)软件可以接近零成本的复制重复这是信息学科的普遍特性之一。
25、(6)软件具有特定的经济价值并具有知识产权受到法律的保护。(7)软件费用不断增加,软件成本相当昂贵。软件的研制工作需要投入大量的、复杂的、高强度的脑力劳动,它的成本非常高。2.1.3软件的生命周期软件生命周期是指一个软件从提出开发要求开始直到该软件报废为止的整个过程。软件生命周期一种典型的阶段划分为:为题定义、可行性研究、需求分析、概要设计(总体设计)、详细设计、编码、测试和维护等8个阶段。软件生命周期内阶段的划分要受软件的规模、性质、种类、开发方法等影响,阶段划分过细还会增加阶段之间联系的复杂性和软件工作量,在实际软件工程项目较难操作。也有提出将软件生命周期划分成四个活动周期:软件分析时期、
26、软件设计时期、编码与测试时期以及软件运行与维护时期。9软件的定义阶段:对软件的可行性进行分析的主要目的是了解客户的主要需求和软件运行的外部环境,一般需要从经济合理性、技术可行性等方面对软件的可行性进行充分的考察和论证。决定所要开发的软件产品的功能要求、性能水平以及运行的软件和硬件坏境,进而编写软件的需求规格说明书都是软件需求分析的主要任务。一般情况下,软件系统的性能需求包括软件的适应性、安全性、可靠性、可维护性错误处理等。软件的开发阶段:软件开发被认为是严格依照求规格说明书的要求,从抽象到具体,逐步生产创造软件的过程。一般认为软件开发主要由软件设计、软件实现和软件测试等阶段组成。软件的测试阶段
27、:一个合格的软件系统必须经过严格、全面、充分的测试,才能发现软件中存在或是隐藏的缺陷和错误进而改正修复这些缺陷和错误。一般情况下,软件的测试过程可以分为单元测试、集成测试、系统测试和验收测试四个主要测试阶段。软件测试的方法和策略主要有白盒测试和黑盒测试两种。软件的使用和维护阶段:软件的使用被认为是在软件通过全面完整的测试后,将软件交付给客户并安装在用户确定的软件和硬件运行环境中能够按照设计说明书正常运行和使用的过程。软件的维护则是对软件系统进行必要的修改和升级以及对软件的需求变化进行相应的调整和变化的过程,软件的维护过程伴随软件整个生存周期之中。2.2软件缺陷与软件质量2.2.1软件缺陷和软件
28、故障的定义软件缺陷也被称作Bug,是存在于软件(不单单包括软件程序)中的某些不希望以及不可接受的偏差。计算机软件中存在的某些破坏正常运行能力的不足、错误、问题也可以称作软件缺陷或者Bug。当软件运行于某一特定的状况时出现软件故障,软件缺陷的存在会导致软件产品在某种程度上不能满足用户的需要,这时称软件缺陷被激活。当软件运行中出现的一种不希望或不可接受的缺陷状态,而且此时没有采取适当措施加以及时处理就会产生软件失效。IEEE1983 对软件缺陷的定义:(1)从产品内部看,软件缺陷是软件产品开发或维护过程中所存在的错误、毛病等各种问题,(2)从产品外部看,软件缺陷是系统所需实现的某种功能的失效或违背
29、。32.2.2软件缺陷的表现(1)需求和规格说明书中指明的功能和特性软件没有达或没有实现或部分实现,数据结果不正确、数据溢出、数据精度不符合要求。(2)软件出现了需求和规格说明书中明确指出不会出现的错误,软件设计明显不合理,软件明显存在缺陷。软件功能超出需求和规格说明书中明确指出范围,软件运行出错,软件运行中断、导致系统崩溃、软件界面混乱都是其明显的错误。(3)软件达不到需求和规格说明书中虽未明确指出但是必须应达到的目标,软件产生的结果和实际结果以及预期的结果不一致。(4)软件开发和测试员认为软件操作过程难以理解、软件操作程序不方便使用、软件运行速度底下、软件执行效率不高,以及最终用户认为软件
30、不能满足其使用需求,以及使用者不能接受的其他细节问题,如界面不美观、操作过程繁琐、人机交互困难等。2.2.3软件产生错误和缺陷的原因(1)软件本身的过于复杂和庞大导致软件产生错误和缺陷;(2)软件开发人员的专业技术不够导致软件产生错误和缺陷;(3)在软件开发和测试过程中由于各个部门的人员交流不足、交流上不畅甚至各个部门根本不交流导致软件产生错误和缺陷;(4)一开始的软件程序设计就出现了错误,而且这种错误一直被隐藏了下来导致软件产生错误和缺陷;(5)由于软件需求的不断变化使得软件的需求模型也在不断变化导致软件产生错误和缺陷;(6)由于软件开发时间紧迫的压力使得开发人员没有足够时间和精力对软件程序
31、进行仔细检查和测试导致软件产生错误和缺陷;(7)由于软件的代码和文档不够丰富而且对软件文档不重视,导致软件产生错误和缺陷;(8)由于软件开发工具的落后或者选择的开发工具不适合特定项目软件的开发,导致软件产生错误和缺陷;(9)由于不同偏差的不断累积和累积导致偏差放大逐渐衍生成为错误,导致软件产生错误和缺陷。2.2.4软件质量和质量模型许多国际标准或国家标准提出了有关软件质量的定义。ANSI的标准把软件质量定义为:“软件质量是软件产品或服务的特性和特征的整体,它取决于满足给定需求的能力。”IEEE在ANSI的软件基础上,对有关软件质量标准进行了进一步的定义。(1) 软件产品具备满足给定需求的特性及
32、特征的总体的能力。(2) 软件拥有所期望的各种属性组合的程度。(3) 用户认为软件满足他们综合期望的程度。(4) 软件组合特性可以满足用户预期需求的程度内部质量:内部质量是指从内部观点出发对软件产品特性的总体质量的一种评价方式,内部质量的主要特征有:可维护性、可理解性、灵活性、可移植性、可重用性、可读性、可测试性。外部质量:外部质量是指从外部观点出发对软件产品特性的总体质量的一种评价方式,外部质量的主要特征有:正确性、可用性、效率、可靠性、完整性、适应性、精确性、坚固性。使用质量:使用质量是指在特定的软件和硬件环境下软件产品能够让特定的用户达到设计说明书规定的能力。使用质量主要是从用户的角度出
33、发,来评价软件产品用于特定软件和硬件环境和特定都的情况下的质量。使用质量的主要特征有:有效性、生产率、安全性、满意程度等。32.3软件测试2.3.1软件测试的目的和原则软件测试就是在软件投入运行前,对软件的需求分析、设计、实现编码进行最终审查。表面上看,在软件工程的其他阶段,都是建设性的,而软件测试是摧毁行的。但是,软件测试的最终目的是建立一个可靠性高的软件系统的一部分。它的定义为:为了法相错误而执行程序的过程。软件测试是软件质量保证的关键阶段,是对软件设计和编码的最终检查。在软件开发的每一个阶段,人们使用了许多保证软件质量的方法分析、设计、实现软件,包括每个阶段的复查。但是由于软件的特殊性,
34、在工作中还是会存在错误。由于软件产品本身无形态,它是复杂的、知识高度密集的逻辑产品,没有一种软件方法可以保证在软件的设计和实现过程中没有错误。软件测试要求认定刚开发的软件是错误的,它的目的是找出错误的所在,而不是“说明程序能正确地执行它应有的功能”,也不是“表明程序没有错误”。G.J.Myers在他的软件测试著作中对软件测试的目的提出了以下观点。(1) 软件测试是为了发现错误而执行程序的过程。(2) 一个好的测试用例能够发现至今尚未发现的错误。(3) 一个成功的测试是发现了至今尚未发现的错误的测试。因此,测试阶段的基本任务是根据软件开发各阶段的文档资料和程序的内部结构,精心设计一组测试用例,他
35、们能够系统的揭示不同类型的错误,并且耗费的时间和工作量最小。但是,已经找出错误的测试只能够说明已经发现了错误,但不能证明程序已经没有错误。在设计有效的测试用例之前,首先应该注意一些指导原则。(1) 测试用例由输入数据和预期的输出数据两部分组成。需要将程序运行后的结果和预期的输出相比较来测试程序。(2) 在输入数据的选择上,不仅要选择合理的输入数据,还要选择不合理的输入数据。这样可提高程序运行的可靠性。程序应该对不合理的输入数据给出相应提示。(3) 用穷举测试是不可能。可以通过设计测试用例,充分覆盖所有的条件。(4) 应该在真正的测试工作开始之前很长时间内,就根据软件的需求和设计来制定测试计划,
36、在测试工作开始后,要严格执行,排除随意性。(5) 长期保留测试用例。设计测试用例是一件耗费很大的工作,必须作为文档保存。因为测试不是一次完成的,在测试出错误并修改后,需要继续测试。同时,在以后的维护阶段仍然需要测试。(6) 对发现错误较多的程序段,应该进行更深入的测试。Pareto原则表明,测试发现的错误中的80%集中在20%的模块中。因为发现错误多的程序段,表明其质量较差,可能隐藏了更多的错误。同时在修改过程中又容易引入新的错误。(7) 为了达到最佳测试效果,应该有第三方来构造测试用例。避免程序员测试自己的程序。因为好的测试要求承认程序是有错误的,测试目的是发现错误,因此,程序员的心理状态时
37、测试自己程序的障碍。另外,因为对需求说明的理解而引入错误自身则更难发现。2.3.2软件测试的方法软件测试方法一般分为动态测试与静态测试方法。动态测试方法中又根据测试用例的设计方法不同,分为黑盒测试与白盒测试两类。静态测试是采用人工检测和计算机辅助静态分析的手段对程序进行检测,方法如下、(1)人工测试:是指不依靠计算机运行程序,而靠人工审查程序或评审软件。人工审查程序的重点是对编码质量进行检查,而软件审查出了审查编码还要对各阶段的软件产品进行复查。人工检测可以发现计算机不易发现的错误,特别是软件总体设计和详细设计阶段的错误。(2)计算机辅助静态分析:指利用静态分析软件工具对被测试程序进行特征分析
38、,从程序中提取一些信息,只要检查用错的局部变量和全程变量、不匹配参数、错误的循环嵌套、潜在的死循环及不会执行的代码等。还可以分析各种类型的语句出现的次数、变量和常量的引用表、标识符的使用方式、过程的调用层次及违背编码规则等。静态分析中还可以用符号代替数值求的程序结果,以便对程序进行运算规律的检验。动态测试与静态测试相反,主要是设计一组输入数据,然后通过运行程序来发现错误。在软件的设计中,出现了大量的测试用例设计方法。测试任何工程化产品,一般有两种方法。(1)了解了产品的功能,然后构造测试,来证实所有的功能是完全可执行的。(2)知道了测试产品的内部结构及处理过程,可以构造测试用例,对所有的结构都
39、进行测试。前一种方法称为黑盒测试法,后一种方法称为白盒测试法。黑盒测试法,该方法把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只是在软件的界面上进行测试,用来证实所有的功能的可操作性,检查程序是否满足功能要求,是否能很好地接收数据,并产生正确地输出。因此,黑盒测试又称为功能测试或数据驱动测试。白盒测试是把测试对象看作一个透明的盒子,测试人员能了解程序的内容结构和处理过程,以检查处理过程为目的,对程序中尽可能多的逻辑路径进行测试,在所有的点检验内部控制结构和数据结构是否和预期的相同。92.4软件缺陷管理软件缺陷管理是在软件生命周期中为确保缺陷被跟踪和管理所进行的活动。缺
40、陷管理的目标:确保每个被发现的缺陷都能够被解决;收集缺陷数据并根据分析和统计缺陷、排除缺陷以及预防缺陷。为了对缺陷进行管理,首先是了解缺陷、对缺陷进行分类,通过对缺陷进行分类,可以迅速找出哪一类缺陷的问题最大,然后集中精力预防和排除这一类缺陷。2.4.1缺陷管理的目的缺陷管理的目的是对各阶段测试发现的缺陷进行跟踪管理,以保证各级缺陷的修复率达到标准,主要实现以下目标:(1) 及时了解并跟踪每个被发现的缺陷;(2) 确保每个被发现的缺陷都能被处理;(3) 收集缺陷数据,并在其上进行数据分析,作为组织过程的财富。2.4.2缺陷管理人员的职责参与缺陷管理过程人员角色职责:(1) 高级经理(EM):裁
41、决项目经理与测试组长有争议的缺陷。(2) 项目经理(PM):判断是否是缺陷,复杂指派缺陷给相关负责人。(3) 项目测试组长(TM):决定缺陷管理方式和工具;管理缺陷状态情况;审核测试人员提交的缺陷;对测试人员的工作质量进行跟踪与评价。(4) 测试人员(TE):编写测试用例;负责缺陷的提交、跟踪及分析;负责执行系统回归测试;提交测试周报、月报。(5) 项目开发人员(DE):修复测试发现的缺陷;负责跟踪修复缺陷的状态。(6) 质量保证人员(SQA)监控项目组缺陷管理规程执行情况。2.4.3软件缺陷的描述规则软件缺陷的有效描述规则,主要是:(1)单一准确:每个报告中只针对一个软件缺陷,在一个报告中报
42、告多个软件缺陷,常常会导致只有部分缺陷被注重和修复,不能得到彻底的修正。如果多个模块中出席相同的错误,可在一个缺陷报告中体现。(2)可以再现:提供缺陷的精确操作步骤,是开发人员容易看懂,可以自己再现这个缺陷,通常情况下,开发人员只有再现了缺陷,才能正确地修复缺陷。(3)完整统一:提供完整、前后统一的软件缺陷的步骤和信息。(4)短小简练:通过使用关键词,可以使软件缺陷的标题的描述短小简练,又能准确解释产生缺陷的现象,如:“主页的导航栏在分辨率下显示不整齐”,其中“主页”、“导航栏”、“分辨率”等是关键词。(5)特定条件:许多软件功能在通常状况下没有问题,而是在某种特定条件下会存在缺陷,所以软件缺
43、陷描述不要忽视这些特定条件,能够提供帮助开发人员找到原因的线索。(6)补充完善:从发现缺陷那一刻起,测试人员的责任就是保证它被正确报告,并且得到应有的重视,继续监视其修复全过程。(7)不做评价:在软件缺陷描述中,不要带有个人观点对开发人员进行评价,软件缺陷报告时针对产品、针对问题本身,将事实或现象客观的描述出来就可以,不需要任何评价或议论。15三软件需求分析3.1系统总体需求分析软件测试是软件质量保证的关键阶段,是对软件设计和编码的最终检查。所以对于软件测试必须要科学、合理、严谨,必须按照一定的规范和步骤实施。这样才能保证软件测试合理、有效的进行,实现良好的测试,发现软件中存在的各种缺陷和错误
44、。软件测试是为了发现错误而执行程序的过程,测试的工作量约占整个项目开发工作量的40%左右。所以软件测试是非常重要的一个部分。从软件测试开始直到软件测试结束历经的一系列前期准备、指令执行、结果分析的整个过程被称为软件测试流程。软件测试之前,对软件测试要做一个需求分析,对软件测试的步骤、测试环境、测试用例等等进行设定并制成文档,对这些文档要做好规范的保存。在软件测试过程中,对测试出来的软件的错误和缺陷,要进行集中、分析并反馈给程序员。然后程序员通过这些信息,找出产生错误的原因,进行改正之后继续测试。软件经过测试以后,要根据预期的结果对测试的结果进行评估,对于出现的错误要报告,并修改相应的文档。修改
45、后的程序往往要经过再次测试,直到满意为止。软件测试过程控制系统就是对软件测试的整个过程进行系统的管理。从测试的需求文档到缺陷的控制。这个系统首先要完成的是一个合理的框架和用户的管理,做好基本的框架和用户的登入。然后是需求文档的管理,对测试的需求的文档的存入、更新和查询。接着是设计用例的设计和管理,根据测试的需求文档设计测试用例并保存。最后是测试缺陷的控制,对测试过程中出现的缺陷进行分析并存入数据库,最后显示出来。3.2权限管理需求分析权限管理,是指根据系统设置的安全规则或者安全策略,用户只能访问而且只能访问自己被授权的资源,不多不少。一个完善的系统,必须有良好的权限管理,这样才能保证整个系统有
46、序的运行,才能保证系统的源文件和重要的信息不会被修改和删除。不同的角色,应该拥有不同的权限,对其进行权限设置,以保证他不能越权操作。权限的控制,一般是系统使用者(一般是系统管理员)先定义角色,然后根据用户职位的不同,给用户分配角色,分配好之后,用户就只能根据所分配的权限登入系统进行相应的操作。3.3需求文档管理需求分析在对软件进行测试之前,要对整个测试做一个需求分析。要用到哪些测试的方法,测试的过程和步骤,用到哪些测试用例,缺陷的处理等等。这些都得进行分析并做出需求文档。这些文档对整个测试过程起到了很重要的作用,所以要对这些文档进行系统的管理。概要设计的依据是需求文档,详细设计的依据也是需求文
47、档,测试大纲的结构级次也是依据需求文档框架结构而提炼产生的,测试案例编写依据测试大纲的结构和功能点列表而设计出来的,因此需求文档成了整个项目从始至终的重要的依据性文档标准,因此其重要性自然不言而喻。需求文档的管理,首先是要实现对新工程的添加,新建新的工程之后就要新建项目,在工程下添加新的项目。当然,这些都要保存到数据库中。之后是版本号的更新,每次需求文档的更新都有一个版本号,要实现每次更新文档之后都把版本号更新到最新,并且保留旧的版本。在用户浏览旧版本的时候提示有新的版本。还要实现新旧版本的对比,找出这两个版本的区别,新版本更新了哪些东西。当然还有就是可以打开文档。在网页上打开文档,实现对文档的查看。3.4缺陷控制需求分析软件缺陷是计算机软件或程序中存在的某种破坏正常运行能力的问题、错误,或者隐藏的功能缺陷。缺陷的存在会导致软件产品在某种程度上不能满足用户的需要。软件测试就是为了发现软件中存在的错误和缺陷而执行软件程序的过程