




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
游戏软件测试主讲人:徐丽.4.7可测性4.7.1要有一套一致打印函数及详细的阐明在同一工程组或产品组内,要有一套一致的为集成测试与系统联调预备的调测开关及相应打印函数,并且要有详细的阐明。阐明:本规那么是针对工程组或产品组的。4.7.2信息串的格式要一致在同一工程组或产品组内,调测打印出的信息串的格式要有一致的方式。信息串中至少要有所在模块名〔或源文件名〕及行号。阐明:一致的调测信息格式便于集成测试。.4.7.3选择恰当的测试点编程的同时要为单元测试选择恰当的测试点,并仔细构造测试代码、测试用例,同时给出明确的注释阐明。测试代码部分应作为〔模块中的〕一个子模块,以方便测试代码在模块中的安装与装配〔经过调测开关〕。阐明:为单元测试而预备。4.7.4集成测试/系统联调之前的预备在进展集成测试/系统联调之前,要构造好测试环境、测试工程及测试用例,同时仔细分析并优化测试用例,以提高测试效率。阐明:好的测试用例应尽能够模拟出程序所遇到的边境值、各种复杂环境及一些极端情况等。.4.7.5运用断言来发现软件问题运用断言来发现软件问题,提高代码可测性。阐明:断言是对某种假设条件进展检查〔可了解为假设条件成立那么无动作,否那么应报告〕,它可以快速发现并定位软件问题,同时对系统错误进展自动报警。断言可以对在系统中隐藏很深,用其它手段极难发现的问题进展定位,从而缩短软件问题定位时间,提高系统的可测性。实践运用时,可根据详细情况灵敏地设计断言。.4.7.6运用断言检查非法情况用断言来检查程序正常运转时不应发生但在调测时有能够发生的非法情况。4.7.7断言的正确运用不能用断言来检查最终产品一定会出现且必需处置的错误情况。阐明:断言是用来处置不应该发生的错误情况的,对于能够会发生的且必需处置的情况要写防错程序,而不是断言。如某模块收到其它模块或链路上的音讯后,要对音讯的合理性进展检查,此过程为正常的错误检查,不能用断言来实现。.4.7.8对较复杂的断言加上明确的注释阐明:为复杂的断言加注释,可廓清断言含义并减少不用要的误用。4.7.9用断言确认函数的参数例如:假设某函数参数中有一个指针,那么运用指针前可对它检查,如下。intExamFun(unsignedchar*str){EXAM_ASSERT(str!=NULL);//用断言检查“假设指针不为空〞这个条件 ...//otherprogramcode}.4.7.10确保不运用没有定义的特性或功能用断言保证没有定义的特性或功能不被运用。例如:假设某通讯模块在设计时,预备提供“无衔接〞和“衔接〞这两种业务。但当前的版本中仅实现了“无衔接〞业务,且在此版本的正式发行版中,用户〔上层模块〕不应产生“衔接〞业务的恳求,那么在测试时可用断言检查用户能否运用“衔接〞业务。.#defineEXAM_CONNECTIONLESS0//无衔接业务#defineEXAM_CONNECTION1//衔接业务
intMsgProcess(EXAM_MESSAGE*msg){unsignedcharservice;/*messageserviceclass*/
EXAM_ASSERT(msg!=NULL);
service=GetMsgServiceClass(msg);
EXAM_ASSERT(service!=EXAM_CONNECTION);//假设不运用衔接业务
...//otherprogramcode}.4.7.11用断言对程序开发环境的假设进展检查用断言对程序开发环境〔OS/Compiler/Hardware〕的假设进展检查。阐明:程序运转时所需的软硬件环境及配置要求,不能用断言来检查,而必需由一段专门代码处置。用断言仅可对程序开发环境中的假设及所配置的某版本软硬件能否具有某种功能的假设进展检查。如某网卡能否在系统运转环境中配置了,应由程序中正式代码来检查;而此网卡能否具有某想象的功能,那么可由断言来检查。.对编译器提供的功能及特性假设可用断言检查,缘由是软件最终产品〔即运转代码或机器码〕与编译器已没有任何直接关系,即软件运转过程中〔留意不是编译过程中〕不会也不应该对编译器的功能提出任何需求。例如:用断言检查编译器的int型数据占用的内存空间能否为2,如下。EXAM_ASSERT(sizeof(int)==2);4.7.12正式软件产品中应把断言及其它调测代码去掉正式软件产品中应把断言及其它调测代码去掉〔即把有关的调测开关关掉〕。阐明:加快软件运转速度。.4.7.13不能影响软件实现的功能在软件系统中设置与取消有关测试手段,不能对软件实现的功能等产生影响。阐明:即有测试代码的软件和关掉测试代码的软件,在功能行为上应一致。4.7.14减少维护的难度用调测开关来切换软件的DEBUG版和正式版,而不要同时存在正式版本和DEBUG版本的不同源文件,以减少维护的难度。.4.7.15确保软件版本在实现功能上的一致性软件的DEBUG版本和发行版本应该一致维护,不允许分家,并且要时辰留意保证两个版本在实现功能上的一致性。4.7.16编写代码之前要留意的事项在编写代码之前,应预先设计好程序调试与测试的方法和手段,并设计好各种调测开关及相应测试代码如打印函数等。阐明:程序的调试与测试是软件生存周期中很重要的一个阶段,如何对软件进展较全面、高率的测试并尽能够地找出软件中的错误就成为很关键的问题。因此在编写源代码之前,除了要有一套比较完善的测试方案外,还应设计出一系列代码测试手段,为单元测试、集成测试及系统联调提供方便。.4.7.17调测开关应分为不同级别和类型调测开关应分为不同级别和类型。阐明:调测开关的设置及分类应从以下几方面思索:针对模块或系统某部分代码的调测;针对模块或系统某功能的调测;出于某种其它目的,如对性能、容量等的测试。这样做便于软件功能的调测,并且便于模块的单元测试、系统联调等。4.7.18用断言宣布发生错误编写防错程序,然后在处置错误之后可用断言宣布发生错误。.4.8程序效率4.8.1编程时要经常留意代码的效率阐明:代码效率分为全局效率、部分效率、时间效率及空间效率。全局效率是站在整个系统的角度上的系统效率;部分效率是站在模块或函数角度上的效率;时间效率是程序处置输入义务所需的时间长短;空间效率是程序所需内存空间,如机器代码空间大小、数据空间大小、栈空间大小等。4.8.2提高代码效率在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率。阐明:不能一味地追求代码效率,而对软件的正确性、稳定性、可读性及可测性呵斥影响。.4.8.3部分效率与全局效率部分效率应为全局效率效力,不能由于提高部分效率而对全局效率呵斥影响。4.8.4提高空间效率经过对系统数据构造的划分与组织的改良,以及对程序算法的优化来提高空间效率。阐明:这种方式是处理软件空间效率的根本方法。.例如:如下记录学生学习成果的构造不合理。typedefunsignedcharBYTE;typedefunsignedshortWORD;
typedefstructSTUDENT_SCORE_STRU{ BYTEname[8]; BYTEage; BYTEsex; BYTEclass; BYTEsubject; floatscore;}STUDENT_SCORE;.由于每位学生都有多科学习成果,故如上构造将占用较大空间。应如下改良〔分为两个构造〕,总的存贮空间将变小,操作也变得更方便。typedefstructSTUDENT_STRU{ BYTEname[8]; BYTEage; BYTEsex; BYTEclass;}STUDENT;
typedefstructSTUDENT_SCORE_STRU{ WORDstudentIndex; BYTEsubject; floatscore;}STUDENT_SCORE;.4.8.5循环体内任务量最小化阐明:应仔细思索循环体内的语句能否可以放在循环体之外,使循环体内任务量最小,从而提高程序的时间效率。例如:如下代码效率不高。for(ind=0;ind<MAX_ADD_NUMBER;ind++){ sum+=ind; backSum=sum;/*backupsum*/}
.4.8.6算法的优化仔细分析有关算法,并进展优化。4.8.7改良系统及模块处置输入的方式仔细调查、分析系统及模块处置输入〔如事务、音讯等〕的方式,并加以改良。4.8.8提高程序效率对模块中函数的划分及组织方式进展分析、优化,改良模块中函数的组织构造,提高程序效率。阐明:软件系统的效率主要与算法、处置义务方式、系统功能及函数构造有很大关系,仅在代码上下功夫普通不能处理根本问题。.4.8.9留心代码效率编程时,要随时留心代码效率;优化代码时,要思索周全。4.8.10恰当优化代码提高效率不应花过多的时间拼命地提高伐用不很频繁的函数代码效率。阐明:对代码优化可提高效率,但假设思索不周很有能够引起严重后果。4.8.11慎重运用汇编嵌入方式要仔细地构造或直接用汇编编写调用频繁或性能要求极高的函数。阐明:只需对编译系统产活力器码的方式以及硬件系统较为熟习时,才可运用汇编嵌入方式。嵌入汇编可提高时间及空间效率,但也存在一定风险。.4.8.12提高空间效率在保证程序质量的前提下,经过紧缩代码量、去掉不用要代码以及减少不用要的部分和全局变量,来提高空间效率。阐明:这种方式对提高空间效率可起到一定作用,但往往不能处理根本问题。4.8.13在多重循环中,应将最忙的循环放在最内层阐明:减少CPU切入循环层的次数。.例如:如下代码效率不高。for(row=0;row<100;row++){ for(col=0;col<5;col++) { sum+=a[row][col]; }}可以改为如下方式,以提高效率。for(col=0;col<5;col++){ for(row=0;row<100;row++) { sum+=a[row][col]; }}.4.8.14尽量减少循环嵌套层次4.8.15防止循环体内含判别语句防止循环体内含判别语句,应将循环语句置于判别语句的代码块之中。阐明:目的是减少判别次数。循环体中的判别语句能否可以移到循环体外,要视程序的详细情况而言,普通情况,与循环变量无关的判别语句可以移到循环体外,而有关的那么不可以。.例如:如下代码效率稍低。for(ind=0;ind<MAX_RECT_NUMBER;ind++){ if(dataType==RECT_AREA) { areaSum+=rectArea[ind]; } else {rectLengthSum+=rect[ind].length;rectWidthSum+=rect[ind].width; }}.由于判别语句与循环变量无关,故可如下改良,以减少判别次数。if(dataType==RECT_AREA){for(ind=0;ind<MAX_RECT_NUMBER;ind++){areaSum+=rectArea[ind];}}else{for(ind=0;ind<MAX_RECT_NUMBER;ind++){rectLengthSum+=rect[ind].length;rectWidthSum+=rect[ind].width;}}.4.8.16用乘法或其它方法替代除法尽量用乘法或其它方法替代除法,特别是浮点运算中的除法。阐明:浮点运算除法要占用较多CPU资源。例如:如下表达式运算能够要占较多CPU资源。#definePAI3.1416
radius=circleLength/(2*PAI);
应如下把浮点除法改为浮点乘法。#definePAI_RECIPROCAL(1/3.1416)//编译器编译时,将生成详细浮点数radius=circleLength*PAI_RECIPROCAL/2;
4.8.17不要一味追求紧凑的代码阐明:由于紧凑的代码并不代表高效的机器码。.4.9宏4.9.1用宏定义表达式时,要运用完备的括号例如:如下定义的宏都存在一定的风险。#defineRECTANGLE_AREA(a,b)a*b#defineRECTANGLE_AREA(a,b)(a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 餐厅项目股权融资协议书范例
- 知识产权采购与风险控制协议
- 购物中心玻璃幕墙防火安全措施
- 教育行业教材供货组织措施
- 基础设施建设质量问题及防治措施
- 校园绿化虫害防治措施
- 线上教育平台学生健康监测与防治措施
- 水产品品牌形象塑造与传媒推广策略分析考核试卷
- 老年人安全防护措施考核试卷
- 蜜饯制作与食品产业链优化升级考核试卷
- GB/T 30828-2014预应力混凝土用中强度钢丝
- GB/T 28650-2012公路防撞桶
- 井下作业修井防喷演习手动双闸板防喷器课件
- 《月光下的中国》朗诵稿
- MSA量测系统分析RMSA量测系统分析课件
- 麻醉与肝脏课件
- 《高等数学》全册教案教学设计
- 工程样板验收表格
- 应急管理部《安全生产十五条措施》专题片
- 粘包钢加固施工方案
- 信息管理学教程ppt课件汇总(完整版)
评论
0/150
提交评论