版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、大学课程设计说明书课程名称 软件测试技术课程设计题目 CppCheck测试院系 信息工程学院班级 计科131学生姓名 指导教师 日 期2016.7.5课程设计任务书课程设计题目CppCheck测试姓名学号1专业班级计算机组别组 长同组 成员指导 教师课程设 计目的通过本课程设计,深刻理解和掌握软件测试的基本方法、 基本技术和常用测 试工具,熟练掌握测试用例的设计,同时进一步提高学生对于复杂程序的编写能 力,为学生将来从事实际软件测试工作和进一步深入研究打下坚实的理论基础和 实践基础。课程设 计环境硬件:装有windows操作系统的计算机软件:CppCheck课程设 计任务 和要求任务要求:1.
2、 理解CPPCheck软件的基本功能和特征;2. 掌握软件测试方法在CPPCheck测试中的运用;3. 完成CPPCheck相关任务模块测试用例的设计;4. 实现CPPCheck的核心功能的测试;5. 撰写测试CPPCheck软件的相关文档;6. 撰写出符合要求的课程设计报告。参考 文献1. 郑人杰,软件测试技术,清华大学出版社2. 徐仁佐,软件可靠性技术,清华大学出版社3. 林宁、孟庆余,软件测试使用指南,清华大学出版社4. 古乐、史九林,软件测试技术概论,清华大学出版社时间进度安排序 号起止日期工作内容15.4学生熟悉题目背景,选题25.5-6.3CppCheck测试需求分析3646.9C
3、ppCheck测试设计46.10-6.15CppCheck 测试56.16-6.22撰写上交课程设计报告任课教师:时间:2016.7.5目录一. 任务的描述 1.1 目标1.2测试对象介绍: 1.2.1 概述:122介绍:123基本使用:1.2.4 高级使用:1.4 .运行环境: 1.5 .条件与限制:二. 测试设计2. 1测试阶段的选择:2.1.1单元测试2.1.2集成测试2.1.3 系统测试(System Testi ng ):2. 2测试方法的选择:2.3选择工具:2.4设计测试用例: 2.4.1静态测试三. 测试执行和结果 3.1白盒测试3.2黑盒测试四. 测试的结果五. 感想认识六.
4、 参考文献 课程设计报告文档.任务的描述1.1目标测试的目的就是希望能以最少的人力和时间发现潜在的各种错误和缺陷。应根据开发各阶段的需求、设计等文档或程序的内部结构精心设计测试用例,并 利用这些实例来运行程序,以便发现错误。信息系统测试应包括软件测试、硬 件测试和网络测试。硬件测试、网络测试可以根据具体的性能指标来进行,此 处所说的测试更多的是指软件测试。一是对质量或可接受性做出判断:通过测试给出所测系统总体质量现状, 譬 如满足工件的出入口标准,达到发布要求,遗留缺陷或者风险二是发现问题,而且尽可能早一些,并确保其得以修复:目的是要发现 问题,就需要使用不同的方法类型进行测试,尽可能早的发现
5、问题,就是尽快 的参与测试,并提高测试的效率和有效性,使严重的问题尽早被发现;确保缺 陷得以修复,需要说明的是不是所有的缺陷都可以被修复的,那么我们要在提 交缺陷单的时候自己首先已经有一个尺度,哪些是必须解决的,哪些是有时间 可以解决的,那些是可以推迟到下个版本,哪些是无法解决但是要提出来的, 跟自己的团队磨合久了,测试人员心理这个尺度应该是很清楚的,再则就是注 意与开发之间的沟通技巧和专业度,特别在国内团队,随意性比较大,某个缺 陷的解决很可能是因为开发心情好或者跟开发者交情好,或者开发觉得你够专 业。三是改进测试过程或者软件开发过程: 通过测试,对一些测试数据的度 量和报告,对团队合作上一
6、些问题的发现和总结,可以反过来为测试过程和开 发过程的改进提供依据,从而促进团队朝着更积极有效的方向发展。总之要做到以最少的人力、物力、时间找出软件潜在的错误和缺陷。1.2测试对象介绍:1.2.1概述:Cppcheck是一种C/C+弋码缺陷静态检查工具。不同于 C/C+编译器及其它分析工具,Cppcheck只检查编译器检查不出来的bug,不检查语法错误。122介绍:cppcheck是一个静态代码检查工具,支持 c, C+代码;作为编译器的 一种补充检查,cppcheck对产品的源代码执行严格的逻辑检查。执行的检查包括:1. 自动变量检查2. 数组的边界检查3. class 类检查4. 过期的函
7、数,废弃函数调用检查5. 异常内存使用,释放检查6. 内存泄漏检查,主要是通过内存引用指针7. 操作系统资源释放检查,中断,文件描述符等8. 异常STL函数使用检查9. 代码格式错误,以及性能因素检查1.2.3 基本使用:首先下载安装,例如我的是安装在C:CpptestCppcheck目录下,要使用它必须先转到该路径下:1. 检查一个文件:cppcheck filepath例如,我检查一个file1.c的文件代码,在命令工具中可以输入:D:CpptestCppcheckcppcheck file1.c 来审查。2. 检查一个文件夹中的所有文件:cppcheck filspath例如,我检查fi
8、les 文件下的所有文件:C:CpptestCppcheckcppcheck files3. 格式化输出内容格式:C:CpptestCppcheckcppcheck -e nable=all -template=vsC:files.c 2C:Cpptesterr.txt-template=vs 就是指定以vs这种格式输出,还可以自定义输出格式,1.2.4 高级使用:1.xml输出a. 使用方式:cppcheck -xml-version=2 foo.cppb. error 的组成元素:id : error 的 idseverity : error 的性质(error、warning)msg e
9、rror的具体信息(短格式)verbose : error 的信息(长格式)c.lo catio n的组成元素:file :含有相对或者绝对路径的文件名line :行数msg消息描述2. 改良输出结果cppcheck -template=vs path ( Visual Studio兼容模式)cppcheck -template=gcc path( Gcc 兼容模式)cppcheck -template=file,li ne,severity,id,message3. 输出过滤器(选特定的错误信息输出)命令行模式:cppcheck -suppress=memleak:src/file1.cpp
10、 src/使用文件模式(将过滤规则存到文件中)cppcheck-suppressi ons suppressi on s.txt src/1.3.任务描述:1. 理解CPPChec软件的基本功能和特征;2. 掌握软件测试方法在CPPCheckM试中的运用;3. 完成CPPChec相关任务模块测试用例的设计;4. 实现CPPChec啲核心功能的测试;5. 撰写测试CPPChec软件的相关文档;6. 撰写出符合要求的课程设计报告。1.4 运行环境:硬件:装有 windows 操作系统的计算机测试工具: CppCheck Quick Test Professional VC+6.01.5 条件与限制
11、:条件: 被测试代码的路径必须是全英文,内存要动态分配限制:只能执行C/C+源代码,该软件只能进行静态检测二测试设计21 测试阶段的选择:2.1.1 单元测试(1)定义:单元测试(又称为模块测试)是针对程序模块软件设计的最小 单位) 来进行正确性检验的测试工作。 程序单元是应用的最小可测试部件。 在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象 编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子 类)中的方法。(2)单元测试任务包括: 1模块接口测试; 2模块局部数据结构测试; 3模块边界条件测试; 4模块中所有独立执行通路测试; 5模块的各条错误处理通路测试。1
12、、单元的基本属性:1. 明确的功能2. 可定义的规格3. 与其他单元接口的清晰划分2、 单元测试的目的: 在于发现各模块内部可能存在的各种错误,主要是基于白盒测试。1. 验证代码是与设计相符合的;2. 发现设计和需求中存在的错误;3. 发现在编码过程中引入的错误。(和设计不相符或和设计相符,但是由 于编码疏漏引起)3、单元测试关注的重点:1. 出错处理、2. 单元接口、3.局部数据结构、4. 独立路径、5. 边界条件4 、 单元测试的主要关注点:1. 参数的属性、顺序、个数是否与 LLD致2. 不能修改只做输入用的形参,否则可能导致数据的错误修改3. 约束条件是否通过形参来传送5、驱动和桩的功
13、能:1. 驱动单元:被测函数的主函数,能接受输入数据,输出实际测试结果2. 桩单元:用来代替所测单元调用的子单元6、单元测试策略:孤立的测试策略、自顶向下、自底向上的单元测试策略1) 孤立的测试策略:方法:不考虑每个模块与其他模块之间的关系,为每个模块设计桩模块和 驱动模块。每个模块进行独立的单元测试。 优点:该方法是最简单,最容易操作的。可以达到高的结构覆盖率。该方 法是纯粹的单元测试。 缺点:桩函数和驱动函数工作量很大,效率低。2) 自顶向下的单元测试策略: 方法:先对最顶层的单元进行测试,把顶层所调用的单元做成桩模块。 其次对第二层进行测试,使用上面已测试的单元做驱动模块。如此类推直 到
14、测试完所有模块。 优点:可以节省驱动函数的开发工作量,测试效率较高。 缺点:随着被测单元一个一个被加入,测试过程将变得越来越复杂,并且 开发和维护的成本将增加。3) 自底向上的单元测试策略: 方法: 先对模块调用层次图上最低层的模块进行单元测试, 模拟调用该模 块的模块做驱动模块。然后再对上面一层做单元测试,用下面已被 测试过的模块做桩模块。以此类推,直到测试完所有模块。 优点:可以节省桩函数的开发工作量,测试效率较高。 缺点:不是纯粹的单元测试,底层函数的测试质量对上层函数的测试将产 生很大的影响。4、单元测试的四个阶段: 测试计划:完成单元测试计划; 测试设计:完成单元测试方案; 测试实现
15、: 完成单元测试用例、 单元测试规程、 单元测试脚本及数据文件; 测试执行:执行单元测试用例,修改发现的问题并进行回归测试,提交单元测试报告。2.1.2 集成测试1. 集成测试的目的: 确保各组件组合在一起后能够按照既定意图写作运行, 并确保增量的行为正确(属于灰盒测试)1) 验证接口是否与设计相符2) 发现设计和需求中存在的错误2. 集成测试关注的重点:单元间的接口、集成后的功能3. 集成测试的层次:模块内集成、子系统内集成、子系统间集成4. 集成测试策略:1) 大爆炸集成2) 自顶向下集成3) 自底向上集成4) 三明治(混合式)集成5) 基干集成6) 分层集成7) 基于功能的集成8) 基于
16、消息的集成9) 基于进度的集成10) 基于风险的集成2.1.3 系统测试( System Testing ):系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测 试和确认测试。系统测试的目的在于通过与系统的需求定义作比较 , 发 现软件与系统的定义不符合或与之矛盾的地方。1. 系统测试目的:1) 通过与需求做比较,发现与系统定义不符合或与之矛盾的地方2) 系统测试的用例应根据需求分析说明书来设计,并在实际使用环境下运行2. 系统测试对象1) 软硬件集合在一起的
17、系统2) 验证时应尽可能模拟实际的运行环境与条件3. 系统测试常用类型:功能、性能、压力、容量、安全性、GUI、可用性、安装、配置、异常(恢复性)、备份、健壮性、文档、在线帮助、网络、稳定 性测试22 测试方法的选择:同行评审的概念 :同行评分是一种依据程序整体质量,可维护性、可扩 展性、 易用性和清晰性对匿名的 程序进行技术评价的技术。 改技术的目的 是为程序员提供自我评价的手段。 2 、实施过程: 选出一名程序员来担 任这个评分过程的管理员, 管理员又会挑选出大约 220名参与者, 保持匿 名,这些参与者否应具有相似的背景要求每名参与者都挑选出两个由自己 编写的程序以供评审。其中的一个程序
18、应是参与者自认为能代表其自身能 力的最好的作品,而了另一个则是参与者自认为质量较差的作品。 当所 有程序都收集完毕后,就将这些程序随即分发给参与者。没名参与者拿到 4 个程序进行评审,其中的两个是“最好”的程序,另外两个则是相对“较 差”的程序,单评审人自己并不知道。每名参与者没评审一个程序得花费 30 分钟,评审完后填写一张评价表。所有 4 个程序都评审完后,参与者对 4 个程序的相对质量进行分级。评价表要求评审人用从 17 的分值对诸如 下面的问题进行回答:1 )程序是够易于理解?2)高层次的设计是够可见且合理?3)低层次的设计是否可见且合理?4)修改此程序对评审者而言是否容易?5)评审者
19、是否会以编写出该程序而骄傲? 还要要求评审人给出总的评价和建议的改进意见。 评审结束后,参与者会收到自己的那两个程序的匿名评价爱表,此外还 会收到一个带统计的总结, 说明在所有的程序中其程序的整体和具体得 分情况,以及他对其他程序的评价爱与其他评审人同意程序打分的比较 分析情况。评审目的:让程序员对自身的编程技术进行自我评价。2.3 选择工具:请描述用 QTP(Quick Test Professional) 进行功能测试的步骤:1. 创建测试或建组 首先通过在应用程序或网站上录制会话,活着建立对象库并使用关键字 驱动功能向关键字视图中手动添加步骤来创建测试或组件。 在 QTP 里面我们可以通
20、过两种 方式添加步骤来创建测试或组件: 在应用程序或网站上录制会话。 建立对象库并使用 这些对象在关键字视图或专家视图中手动添加步骤 然后在测试或组件中插入检查点,检 查页面、对象或文本字符串中的特定值或特征,通过它可以表示网站或应用程序是否正常 运行。2. 运行测试和组建 控制运行会话, 帮助标识和消除测试或组件中的缺陷。 使用“单步执行” “单步跳过”和“单步退出”命令逐步运行测试或组件,或设置断点使测试或组件在预订 点暂停。3. 分析结果 在运行测试或组件之后,通过两种方式可以查看其结果:在“结果”窗口中查看;自动报告在运行对话过程中检测到的缺陷,可能的话并上报到其他缺陷管理产品中。2.
21、4设计测试用例:241静态测试测试计划、测试人员、测试方式和测试结果1、进度/工作量度量任务计划开始计划结束实际开始实际结束工作量 (人时)测试计划与 设计2016-6-102016-6-222016-6-82016-6-204测试执行2016-6-12 :2016-6-222016-6-132016-6-204测试总结2016-6-202016-6-222016-6-202016-6-224(1) 代码审查:代码审查是通过代码走读的方式来实现的。(2) 代码走读是开发人员在对某个模块的代码(必须编译通过)依据设计说明书完成编码后,进行的代码评审活动。代码走读前要在内部统一标准,明 确质量目标
22、。评审中,除了看编码是否紧扣设计外,走读还应兼顾三个层 面:第一个层可称之为单元走读,关注的是“单元”,一般是一个方法或 一个类,需要查找代码层面的错误,比如数据库网络资源的回收、一些异 常的捕捉、空指针的检查及关键字的使用是否正确等;第二个层面可称之 为集成走读,关注的是接口和流程,包括传人的参数检查、返回值检查及 流程能否顺利地进行和正确串联等;第三个层面可称之为系统走读,关注 的是功能层面和业务逻辑,这时发现更多的应该是逻辑错误和功能缺陷。当然,在走读过程中这三个层面不是截然分开的, 很多时候是并行的、 互相交织和渗透的。代码走读的另一个重要内容是看代码是否遵守编程规 范引,是否具有可读
23、性和可维护性,注释是否充足等。按编程规范编码对 提高代码的可读性以及降低编码的出错率至关重要,在大型项目中,具备 可读性、规范性的代码更是日后进行有效维护的保障。因此,代码走读不 仅可以保证代码的质量,更能有效地促进整个项目的编码水平。(3) 代码走读:代码检查是通过桌面检查、走查方式和代码审查进行的检查: 包括:检查代码和设计是否一致;代码是否对遵循标准、是否可读;代码逻辑表达是否正确;代码结构是否合理;程序编写与编写标准是否符合;程序中是否有不安全、不明确和模糊的部分;编程风格是否符合要求。检查变量的交叉引用表:是否有未说明的变量和违反了类型规定的变 量。检查标号的交叉引用表:验证所有标号
24、是否有正确。检查子程序、宏、函数:验证每次调用与所调用位置是否正确,调用的 子程序、宏、函数是否存在,参数是否一致。 检查全部等价变量的类型的一致性。 确认常量的取值和数制、数据类型。 选择、激活路径: 在设计控制流图中选择某条路径, 到实际的程序中激 活这条路径,如果不能激活,则程序可能有错。 对照程序的规格说明, 详细阅读源代码, 比较实际的代码, 从差异中发 现程序的问题和错误。2代码检查方式 桌面检查 对源程序代码进行分析、检验,根据相关的文 档,检验程序中是否有错误的过程。3. 静态结构分析 可以检查函数的调用关系是否正确; 是否存在孤立的函数而没有被调用; 编码的规范性 ; 资源是
25、否释放 ; 数据结构是否完整和正确 ; 是否有死代码和死循环 ; 代码本身是否存在明显的效率和性能问题 ; 代码本身方法,类和函数的划分是否清晰,易理解 ; 代码本身是否健壮,是否有完善的异常处理和错误处理。三测试执行和结果3.1 白盒测试(1) 选择测试平台 :VC( 原因、优缺点 )原因:VC是我熟悉的C/C+环境,学习C和C+语言都是用的VC,因此 这个环境我并不陌生,测试起来相对压力较小,并且它本身对C/C+有很 好的兼容性。VC6优点:a, 内容少,学习成本低。b, 常用功能操作简单。c, 占用资源少。有个笑话是:启动VC6后写了 20行代码,对方的VS201X 还在启动中。d, W
26、in2000 和以后的操作系统自带 mfc.dll 。VC6缺 点:a, 对stl支持不友好,VC6是98年,stl成为标准是99年。b, Watch窗口,看到字符串太短。VC7也有这个问题,但能看到的长得多。c, VC6不可以附加。比如先启动 AutoCAD再启动VC7调试。d, 调试时,无法改变常量的值。e, 调试时,无法看到静态变量的值。缺点:由于C+是由C语言发展起来的,也支持 C语言的编译。6.0版本 是使用最多的版本,很经典。最大的缺点是对于模版的支持比较差。现 在最新补丁为SP6推荐安装,否则易出现编译时假死状态。仅支持Windows操作系统。目前发现与 windows 7兼容性
27、不好,安装成功后可 能会出现无法打开cpp文件的现象。实验目的:能熟练应用白盒测试技术设计测试用例白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。其又称为结构测试。对于该实验的例子给岀其流程图如下图所示,我们来了解白盒测试的基本技术和方法。1)语句覆盖测试用例输入输岀magic判定M的取值判定N的取值覆盖路径x=1,y=112TFabefx=1,y=-10FTacdf
28、2)判定覆盖测试用例输入输岀magic判定M的取值判定N的取值覆盖路径x=1,y=112TFabefx=1,y=-10FTacdf1)语句覆盖x=1,y=1x=1,y=-12) 判定覆盖x=1,y=1x=1,y=-1 条件覆盖 x=1,y=1x=-1,y=-1。3. 程序代码 #include /*static */int sign=0; static char m=T,n=T; /int logicExample(int,int); int logicExample(int x,int y) int magic=0; if(x0&y0) magic=x+y+10;sign+;elsemagi
29、c=x+y-10;m=F;if(magic0)magic=0;sign+=2;else n=F;return magic; main() int x,y;/static int sign=0;/static char m=T,n=T,char p45=acef,abef,acdf,abdf; coutn;coutx;couty;coutmagic 已知:0endl;coutn;coutvv测试结果分别是:n;coutn;coutx的值y 的值logic 的值 判定M 判定N覆盖路径e ndl;n;coutvvxvv vvyvv vlogicExample(x,y)vvm;coutvvnvvps
30、ig nen dl;4.画出程序的控制流图流程图:3.2黑盒测试1)选择测试方法选择 greatCircleDistanee ()函数greatCircleDistanee()计算球面距离,输入的分别为两个点的经度和纬度以及球的半径,以下为其源代码2)设计测试用例(用例列表)针对此函数我运用了等价类划分的方法生成JUnit测试用例总共划分出25个用例,等价类分别是:对Latitudes 划分:-90到0,0至U 90以及不合法输入;对LongitudeS划分:-180到0,0到180以及不合法输入;对LatitudeF 划分:-90到0,0至U 90以及不合法输入;对LongitudeF划分:
31、-180到0,0到180以及不合法输入;对半径R的划分:大于0以及不合法输入;以下为具体的测试用例:LatitudesLon gitudeSLatitudeFLon gitudeFR预期结果实际测试结果303030301000通过303030-120100115.98通过3030-6030100157.08通过3030-60-12010063.003通过30-603030100131.812通过30-6030-12010089.566通过30-60-6030100112.296通过30-60-60-120100135.256通过-60303030100157.08通过-603030-12010
32、063.003通过-6030-60301000通过-6030-60-120100100.807通过-60-603030100112.296通过-60-6030-120100135.256通过-60-60-603010072.273通过-60-60-60-12010050.536通过软件测试报告:1203060120100抛出异常通过-1203060120100抛出异常通过6030120120100抛出异常通过6030-120120100抛出异常通过303060120100抛出异常通过30-21060120100抛出异常通过3021060120100抛出异常通过303060-210100抛出异常通过303060120100抛出异常通过303060120-100抛出异常通过Bug引入阶段bug引入阶段分析2%韦求设计阶匪右台漏孔阶良前台黑碍阶蔗测试附氐及布址段由上图可以看出,主要为前台编码和页面设计方面的bug,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 休完产假年终总结
- 数控车削加工技术 教案 项目五 数控车床的操作
- 15.5 串、并联电路中电流的规律(4大题型)(含答案解析)
- 初中八年级语文上学期期中考前测试卷含答案解析
- 中国跨境双向并购与招商引资案例报告
- T-YNRZ 021-2024 珠芽黄魔芋高产种植技术规程
- 【课件】Unit+3+SectionB+Writing+课件人教版英语七年级上册
- 高效脱磷河钢集团李建新
- 高中物理第十八章原子结构3氢原子光谱课件新人教版选修3-
- 信息技术(第2版)(拓展模块)教案 拓展模块5 5.5应用开发实例2
- 印度英文介绍 india(课堂PPT)
- therebe句型专项练习
- 民间秘术绝招大全
- 检验科授权申请表1页
- 旅游线路设计实务 理论知识篇
- 工程地质学—地貌
- 应聘登记表(CMHR
- 《海报设计》PPT课件(完整版)
- 手工电弧焊焊接工艺规范
- 单元体幕墙吊装施工方案
- 大学的学习方法PowerPoint 演示文稿
评论
0/150
提交评论