收藏 分销(赏)

软件测试专业课程设计.doc

上传人:二*** 文档编号:4534681 上传时间:2024-09-27 格式:DOC 页数:30 大小:695.54KB
下载 相关 举报
软件测试专业课程设计.doc_第1页
第1页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

1、大学课 程 设 计 说 明 书课程名称 软件测试技术课程设计 题 目 CppCheck测试 院 系 信息工程学院 班 级 计科131 学生姓名 指导老师 日 期 .7.5 课程设计任务书课程设计题目CppCheck测试姓名学号1专业班级计算机组别组长同组组员 指导老师课程设计目标经过本课程设计,深刻了解和掌握软件测试基础方法、基础技术和常见测试工具,熟练掌握测试用例设计,同时深入提升学生对于复杂程序编写能力,为学生未来从事实际软件测试工作和深入深入研究打下坚实理论基础和实践基础。课程设计环境硬件:装有windows操作系统计算机软件:CppCheck课程设计任务和要求任务要求:1了解CPPCh

2、eck软件基础功效和特征;2. 掌握软件测试方法在CPPCheck测试中利用;3完成CPPCheck相关任务模块测试用例设计;4实现CPPCheck关键功效测试;5撰写测试CPPCheck软件相关文档;6撰写出符合要求课程设计汇报。参考文件1.郑人杰,软件测试技术,清华大学出版社2.徐仁佐,软件可靠性技术,清华大学出版社3.林宁、孟庆余,软件测试使用指南,清华大学出版社4.古乐、史九林,软件测试技术概论,清华大学出版社时 间 进 度 安 排序号起止日期工 作 内 容15.4学生熟悉题目背景,选题25.5-6.3CppCheck测试需求分析36.4-6.9CppCheck测试设计46.10-6.

3、15CppCheck测试56.16-6.22撰写上交课程设计汇报任课老师: 时间:.7.5目录一任务描述11.1目标11.2测试对象介绍:11.2.1 概述:11.2.2介绍:21.2.3 基础使用:21.2.4 高级使用:21.4运行环境:51.5条件和限制:5二测试设计521测试阶段选择:52.1.1单元测试52.1.2集成测试72.1.3系统测试(System Testing):722测试方法选择:72.3 选择工具:82.4设计测试用例:92.4.1静态测试9三测试实施和结果103.1白盒测试103.2黑盒测试16四测试结果19五. 感想认识20六参考文件21课程设计汇报文档一任务描述

4、1.1目标测试目标就是期望能以最少人力和时间发觉潜在多种错误和缺点。应依据开发各阶段需求、设计等文档或程序内部结构精心设计测试用例,并利用这些实例来运行程序,方便发觉错误。信息系统测试应包含软件测试、硬件测试和网络测试。硬件测试、网络测试能够依据具体性能指标来进行,此处所说测试更多是指软件测试。一是对质量或可接收性做出判定:经过测试给出所测系统总体质量现实状况,譬如满足工件出入口标准,达成公布要求,遗留缺点或风险二是发觉问题,而且尽可能早部分,并确保其得以修复:目标是要发觉问题,就需要使用不一样方法类型进行测试,尽可能早发觉问题,就是立即参与测试,并提升测试效率和有效性,使严重问题尽早被发觉;

5、确保缺点得以修复,需要说明是不是全部缺点全部能够被修复,那么我们要在提交缺点单时候自己首先已经有一个尺度,哪些是必需处理,哪些是有时间能够处理,那些是能够推迟到下个版本,哪些是无法处理不过要提出来,跟自己团体磨合久了,测试人员心理这个尺度应该是很清楚,再则就是注意和开发之间沟通技巧和专业度,尤其在中国团体,随意性比较大,某个缺点处理很可能是因为开发心情好或跟开发者交情好,或开发认为你够专业。三是改善测试过程或软件开发过程:经过测试,对部分测试数据度量和汇报,对团体合作上部分问题发觉和总结,能够反过来为测试过程和开发过程改善提供依据,从而促进团体朝着更主动有效方向发展。总而言之要做到以最少人力、

6、物力、时间找出软件潜在错误和缺点。1.2测试对象介绍:1.2.1 概述:Cppcheck是一个C/C+代码缺点静态检验工具。不一样于C/C+编译器及其它分析工具,Cppcheck只检验编译器检验不出来bug,不检验语法错误。1.2.2介绍:cppcheck 是一个静态代码检验工具,支持c, c+ 代码;作为编译器一个补充检验,cppcheck对产品源代码实施严格逻辑检验。 实施检验包含:1. 自动变量检验2. 数组边界检验3. class类检验4. 过期函数,废弃函数调用检验5. 异常内存使用,释放检验6. 内存泄漏检验,关键是经过内存引用指针7. 操作系统资源释放检验,中止,文件描述符等8.

7、 异常STL 函数使用检验9. 代码格式错误,和性能原因检验1.2.3 基础使用: 首先下载安装,比如我是安装在C:CpptestCppcheck 目录下,要使用它必需先转到该路径下:1.检验一个文件:cppcheck filepath比如,我检验一个file1.c文件代码,在命令工具中能够输入:D:CpptestCppcheckcppcheck file1.c 来审查。2.检验一个文件夹中全部文件: cppcheck filspath比如,我检验files文件下全部文件:C:CpptestCppcheckcppcheck files3. 格式化输出内容格式:C:CpptestCppcheck

8、cppcheck -enable=all -template=vs C:files.c 2C:Cpptesterr.txt-template=vs 就是指定以vs这种格式输出,还能够自定义输出格式, 1.2.4 高级使用:1.xml 输出a.使用方法:cppcheck -xml-version=2 foo.cppb.error组成元素:id:erroridseverity:error性质(error、warning.)msg:error具体信息(短格式)verbose:error信息(长格式)c.location组成元素:file:含有相对或绝对路径文件名line:行数msg:消息描述 2.改

9、良输出结果cppcheck -template=vs path (Visual Studio 兼容模式)cppcheck -template=gcc path (Gcc兼容模式)cppcheck -template=file,line,severity,id,message3.输出过滤器(选特定错误信息输出)命令行模式:cppcheck -suppress=memleak:src/file1.cpp src/使用文件模式(将过滤规则存到文件中)cppcheck-suppressions suppressions.txt src/1.3. 任务描述: 1了解CPPCheck软件基础功效和特征;2

10、. 掌握软件测试方法在CPPCheck测试中利用;3完成CPPCheck相关任务模块测试用例设计;4实现CPPCheck关键功效测试;5撰写测试CPPCheck软件相关文档;6撰写出符合要求课程设计汇报。多种注册check子类及ruleC+ codecppcheck系统结构图: Sotting tokensCppcheck关键代码解析错误输出检验错误汇报输出ErrorLogger参数分析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、 单元基础属性:1.明确功效 2.可定义规格 3.和其它单元接口清楚划分2、 单元测试目标:

12、在于发觉各模块内部可能存在多种错误,关键是基于白盒测试。1.验证代码是和设计相符合;2.发觉设计和需求中存在错误;3.发觉在编码过程中引入错误。(和设计不相符或和设计相符,不过因为编码疏漏引发)3、 单元测试关注关键:1.犯错处理、2.单元接口、3.局部数据结构、4.独立路径、5.边界条件 4、 单元测试关键关注点:1.参数属性、次序、个数是否和LLD一致2.不能修改只做输入用形参,不然可能造成数据错误修改3.约束条件是否经过形参来传送5、驱动和桩功效: 1. 驱动单元:被测函数主函数,能接收输入数据,输出实际测试结果2.桩单元:用来替换所测单元调用子单元6、单元测试策略:孤立测试策略、自顶向

13、下、自底向上单元测试策略1) 孤立测试策略: 方法:不考虑每个模块和其它模块之间关系,为每个模块设计桩模块和驱动模块。每个模块进行独立单元测试。 优点:该方法是最简单,最轻易操作。能够达成高结构覆盖率。该方法是纯粹单元测试。 缺点:桩函数和驱动函数工作量很大,效率低。2) 自顶向下单元测试策略: 方法:先对最顶层单元进行测试,把顶层所调用单元做成桩模块。其次对第二层进行测试,使用上面已测试单元做驱动模块。如这类推直到测试完全部模块。 优点:能够节省驱动函数开发工作量,测试效率较高。 缺点:伴随被测单元一个一个被加入,测试过程将变得越来越复杂,而且开发和维护成本将增加。3) 自底向上单元测试策略

14、: 方法:先对模块调用层次图上最低层模块进行单元测试,模拟调用该模块模块做驱动模块。然后再对上面一层做单元测试,用下面已被测试过模块做桩模块。以这类推,直到测试完全部模块。 优点:能够节省桩函数开发工作量,测试效率较高。 缺点:不是纯粹单元测试,底层函数测试质量对上层函数测试将产生很大影响。4、 单元测试四个阶段: 测试计划:完成单元测试计划; 测试设计:完成单元测试方案; 测试实现:完成单元测试用例、单元测试规程、单元测试脚本及数据文件; 测试实施:实施单元测试用例,修改发觉问题并进行回归测试,提交单元测试汇报。2.1.2集成测试1. 集成测试目标:确保各组件组合在一起后能够根据既定意图写作

15、运行,并确保增量行为正确(属于灰盒测试)1) 验证接口是否和设计相符2) 发觉设计和需求中存在错误2. 集成测试关注关键:单元间接口、集成后功效3. 集成测试层次:模块内集成、子系统内集成、子系统间集成4. 集成测试策略:1) 大爆炸集成2) 自顶向下集成3) 自底向上集成4) 三明治(混合式)集成5) 基干集成6) 分层集成7) 基于功效集成8) 基于消息集成9) 基于进度集成10) 基于风险集成2.1.3系统测试(System Testing):系统测试,是将经过确定测试软件,作为整个基于计算机系统一个元素,和计算机硬件、外设、一些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环

16、境下,对计算机系统进行一系列组装测试和确定测试。系统测试目标在于经过和系统需求定义作比较, 发觉软件和系统定义不符合或和之矛盾地方。1. 系统测试目标:1) 经过和需求做比较,发觉和系统定义不符合或和之矛盾地方2) 系统测试用例应依据需求分析说明书来设计,并在实际使用环境下运行2. 系统测试对象1) 软硬件集合在一起系统2) 验证时应尽可能模拟实际运行环境和条件3. 系统测试常见类型:功效、性能、压力、容量、安全性、GUI、可用性、安装、配置、异常(恢复性)、备份、健壮性、文档、在线帮助、网络、稳定性测试22测试方法选择:同行评审概念 :同行评分是一个依据程序整体质量,可维护性、可扩展性、易用

17、性和清楚性对匿名 程序进行技术评价技术。改技术目标是为程序员提供自我评价手段。 2、实施过程: 选出一名程序员来担任这个评分过程管理员,管理员又会挑选出大约220名参与者,保持匿名,这些参与者否应含有相同背景要求每名参与者全部挑选出两个由自己编写程序以供评审。其中一个程序应是参与者自认为能代表其本身能力最好作品,而了另一个则是参与者自认为质量较差作品。 当全部程序全部搜集完成后,就将这些程序随即分发给参与者。没名参与者拿到4个程序进行评审,其中两个是“最好”程序,另外两个则是相对“较差”程序,单评审人自己并不知道。每名参与者没评审一个程序得花费30分钟,评审完后填写一张评价表。全部4个程序全部

18、评审完后,参与者对4个程序相对质量进行分级。评价表要求评审人用从17分值对诸以下面问题进行回复: 1)程序是够易于了解?2)高层次设计是够可见且合理?3)低层次设计是否可见且合理? 4)修改此程序对评审者而言是否轻易?5)评审者是否会以编写出该程序而骄傲?还要要求评审人给出总评价和提议改善意见。评审结束后,参与者会收到自己那两个程序匿名评价爱表,另外还会收到一个带统计总结,说明在全部程序中其程序整体和具体得分情况,和她对其它程序评价爱和其它评审人同意程序打分比较分析情况。评审目标:让程序员对本身编程技术进行自我评价。2.3 选择工具:请描述用QTP(Quick Test Professiona

19、l)进行功效测试步骤:1.创建测试或建组 首先经过在应用程序或网站上录制会话,活着建立对象库并使用关键字驱动功效向关键字视图中手动添加步骤来创建测试或组件。在QTP里面我们能够经过两种方法添加步骤来创建测试或组件: 在应用程序或网站上录制会话。 建立对象库并使用这些对象在关键字视图或教授视图中手动添加步骤 然后在测试或组件中插入检验点,检验页面、对象或文本字符串中特定值或特征,经过它能够表示网站或应用程序是否正常运行。 2.运行测试和组建 控制运行会话,帮助标识和消除测试或组件中缺点。使用“单步实施”、“单步跳过”和“单步退出”命令逐步运行测试或组件,或设置断点使测试或组件在预订点暂停。 3.

20、分析结果 在运行测试或组件以后,经过两种方法能够查看其结果:在“结果”窗口中查看;自动汇报在运行对话过程中检测到缺点,可能话并上报到其它缺点管理产品中。2.4设计测试用例: 2.4.1静态测试测试计划、测试人员、测试方法和测试结果1、进度/工作量度量任务计划开始计划结束实际开始实际结束工作量(人时)测试计划和设计-6-10-6-22-6-8-6-204测试实施-6-12-6-22-6-13-6-204测试总结-6-20-6-22-6-20-6-224(1) 代码审查:代码审查是经过代码走读方法来实现。(2) 代码走读是开发人员在对某个模块代码(必需编译经过)依据设计说明书完成编码后,进行代码评

21、审活动。代码走读前要在内部统一标准,明确质量目标。评审中,除了看编码是否紧紧围绕设计外,走读还应兼顾三个层面:第一个层可称之为单元走读,关注是“单元”,通常是一个方法或一个类,需要查找代码层面错误,比如数据库网络资源回收、部分异常捕捉、空指针检验及关键字使用是否正确等;第二个层面可称之为集成走读,关注是接口和步骤,包含传人参数检验、返回值检验及步骤能否顺利地进行和正确串联等;第三个层面可称之为系统走读,关注是功效层面和业务逻辑,这时发觉更多应该是逻辑错误和功效缺点。当然,在走读过程中这三个层面不是截然分开,很多时候是并行、相互交织和渗透。代码走读另一个关键内容是看代码是否遵守编程规范引,是否含

22、有可读性和可维护性,注释是否充足等。按编程规范编码对提升代码可读性和降低编码犯错率至关关键,在大型项目中,含有可读性、规范性代码更是以后进行有效维护保障。所以,代码走读不仅能够确保代码质量,更能有效地促进整个项目标编码水平。(3)代码走读:代码检验是经过桌面检验、走查方法和代码审查进行检验: 包含: 检验代码和设计是否一致; 代码是否对遵照标准、是否可读; 代码逻辑表示是否正确; 代码结构是否合理; 程序编写和编写标准是否符合; 程序中是否有不安全、不明确和模糊部分; 编程风格是否符合要求。 检验变量交叉引用表:是否有未说明变量和违反了类型要求变量。 检验标号交叉引用表:验证全部标号是否有正确

23、。 检验子程序、宏、函数:验证每次调用和所调用位置是否正确,调用子程序、宏、函数是否存在,参数是否一致。 检验全部等价变量类型一致性。 确定常量取值和数制、数据类型。 选择、激活路径:在设计控制流图中选择某条路径,到实际程序中激活这条路径,假如不能激活,则程序可能有错。 对照程序规格说明,具体阅读源代码,比较实际代码,从差异中发觉程序问题和错误。 2代码检验方法 桌面检验 对源程序代码进行分析、检验,依据相关文档,检验程序中是否有错误过程。 3. 静态结构分析 能够检验函数调用关系是否正确; 是否存在孤立函数而没有被调用; 编码规范性; 资源是否释放; 数据结构是否完整和正确; 是否有死代码和

24、死循环; 代码本身是否存在显著效率和性能问题; 代码本身方法,类和函数划分是否清楚,易了解; 代码本身是否健壮,是否有完善异常处理和错误处理。三测试实施和结果3.1白盒测试(1) 选择测试平台:VC(原因、优缺点)原因:VC是我熟悉C/C+环境,学习C和C+语言全部是用VC,所以这个环境我并不陌生,测试起来相对压力较小,而且它本身对C/C+有很好兼容性。VC6优点:a,内容少,学习成本低。b,常见功效操作简单。c,占用资源少。有个笑话是:开启VC6后写了20行代码,对方VS201X还在开启中。d,Win和以后操作系统自带mfc.dll。VC6缺点:a,对stl支持不友好,VC6是98年,stl

25、成为标准是99年。b,Watch窗口,看到字符串太短。VC7也有这个问题,但能看到长得多。c,VC6不能够附加。比如先开启AutoCAD,再开启VC7调试。d,调试时,无法改变常量值。e,调试时,无法看到静态变量值。缺点: 因为C+是由C语言发展起来,也支持C语言编译。6.0版本是使用最多版本,很经典。最大缺点是对于模版支持比较差。现在最新补丁为SP6,推荐安装,不然易出现编译时假死状态。仅支持Windows操作系统。现在发觉和windows 7兼容性不好,安装成功后可能会出现无法打开cpp文件现象。试验目标:能熟练应用白盒测试技术设计测试用例白盒测试原理:已知产品内部工作过程,能够经过测试证

26、实每种内部操作是否符合设计规格要求,全部内部成份是否已经过检验。它是把测试对象看作装在一个透明白盒子里,也就是完全了解程序结构和处理过程。这种方法根据程序内部逻辑测试程序,检验程序中每条通路是否全部能按预定要求正确工作。其又称为结构测试。对于该试验例子给出其步骤图以下图所表示,我们来了解白盒测试基础技术和方法。1) 语句覆盖测试用例输入输出magic判定M取值判定N取值覆盖路径x=1,y=112TFabefx=1,y=-10FTacdf2) 判定覆盖测试用例输入输出magic判定M取值判定N取值覆盖路径x=1,y=112TFabefx=1,y=-10FTacdf1) 语句覆盖x=1,y=1x=

27、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+;elsemagic=x+y-10;m=F;if(magic0)magic=0;sign+=2;else n=F;return magic;main()int x,y;/static int sign

28、=0;/static char m=T,n=T,char p45=acef,abef,acdf,abdf;cout-n;coutx;couty;coutmagic 已知:0endl;cout-n;cout测试结果分别是:n;cout-n;coutx值 y值 logic值 判定M 判定N 覆盖路径endl;cout-n;coutx y logicExample(x,y) m;cout n psignendl;4.画出程序控制流图步骤图:3.2黑盒测试 1)选择测试方法 选择greatCircleDistance()函数greatCircleDistance()计算球面距离,输入分别为两个点经度和

29、纬度和球半径,以下为其源代码 2) 设计测试用例(用例列表)针对此函数我利用了等价类划分方法生成JUnit测试用例总共划分出25个用例,等价类分别是:对LatitudeS划分:-90到0,0到90和不正当输入;对LongitudeS划分:-180到0,0到180和不正当输入;对LatitudeF划分:-90到0,0到90和不正当输入;对LongitudeF划分:-180到0,0到180和不正当输入;对半径R划分:大于0和不正当输入;以下为具体测试用例:LatitudeSLongitudeSLatitudeFLongitudeFR预期结果实际测试结果303030301000经过303030-12

30、0100115.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-12010063.003经过-6030-60301000经过-6030-60-120100100.807经过-60-603030100112.296经过-60-6030-120100135.256经过-60-60-603010072.273经过-60-60-

31、60-12010050.536经过软件测试汇报:1203060120100抛出异常经过-1203060120100抛出异常经过6030120120100抛出异常经过6030-120120100抛出异常经过303060120100抛出异常经过30-21060120100抛出异常经过3021060120100抛出异常经过303060-210100抛出异常经过303060120100抛出异常经过303060120-100抛出异常经过Bug引入阶段由上图能够看出,关键为前台编码和页面设计方面 bug,占到了全部 bug 2/3。 四测试结果单元测试尝试里我碰到了多个问题:问题1:代码反复问题太多 处理

32、措施:这个问题很轻易处理,只需要把判定预期结果和实际结果逻辑提取到某个函数中即可。从整个代码来看,有两种类型结果函数:(1)返回布尔型(2)返回整数 所以,需要两个类型判定预期结果和实际结果是否相符函数:问题2:测试结果需要人工去检验 处理措施:对于测试结果不要使用printf方法打印被测试函数返回结果值就能够避免这个问题。 问题3:对测试总体信息也无从得悉(1)实施测试用例总数、经过数量和失败数量 (2)测试实施时间 (3)假如测试用例实施失败了,期望知道是哪个测试用例失败,从而去分析失败原因。 五. 感想认识此次课程设计经过对CPPCheck软件单元测试和系统测试部分测试,使用greatC

33、ircleDistance()函数等方法进行了输入结果是否符合实际情况测试,总结了测试中测试需求、测试设计、测试实施和问题分析内容,难点是单元测试方法和CPPcheck软件使用。经过实习对软件测试有了深入认识。在这短短实习时间里,我对软件测试有了较深了解,放下了心中石头,同时对测试工程师工作也有了一定认识。知道测试工程师不是一个简单工作,需要全方面知识和丰富经验,还要有细心和耐心.在未来十二个月里,我这些方面全部会取得较大提升。经过该次试验我学会了怎样进行测试,了解其过程和原理,并知道了多种工具使用和她呢各自区分,并认识了整个测试步骤,此次试验也出现了部分对应错误和缺点,以后再测试中要严格根据

34、测试计划和要求实施测试,经过本测试掩饰我对策是有了基础认识,同时也知道怎样进行简单测试。六参考文件软件测试从入门到精通 王轶辰 电子工业出版社软件测试入门塔姆瑞斯 人民邮电出版社软件测试理论和实践毛志雄 中国铁道出版社软件测试有效方法 WilliamE.Perry 清华大学出版社计算机系课程设计指导老师评分表课程设计题目CppCheck测试姓名吴兵帅学号0专业班级计科131成绩评定项 目分 值评 分 要 素成 绩1设计过程中出勤、学习态度等方面10上机出勤及端正学习态度、认真刻苦程度等2软件测试质量40测试方法、测试用例、测试文档等方面进行综合评定3 答辩20能简明扼要地叙述测试关键内容,能正确流利地回复多种问题4设计汇报书写10条理清楚,表述清楚、措词适当5 实际动手能力20组长全方面负责,负担复杂模块设计分值就高总 成 绩 指导老师评语: 指导老师署名: 年 7月 5日

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服