个人开发技术和流程.ppt

上传人:sh****n 文档编号:11514657 上传时间:2020-04-26 格式:PPT 页数:32 大小:430KB
返回 下载 相关 举报
个人开发技术和流程.ppt_第1页
第1页 / 共32页
个人开发技术和流程.ppt_第2页
第2页 / 共32页
个人开发技术和流程.ppt_第3页
第3页 / 共32页
点击查看更多>>
资源描述
1,PSP(PersonalSoftwareProcess)程序效能分析单元测试,个人开发技术和流程,2,本章内容,理论和知识点:个人软件开发流程PSP效能分析单元测试与回归测试,3,PSP(PersonalSoftwareProcess)程序效能分析单元测试与回归测试,个人开发技术和流程,4,一、PSP,1.CMUPSP简介2.软件工程师的任务清单3.个人项目耗时对比记录表,5,软件工程包括了开发,运营,维护软件的过程中有很多技术,做法,习惯,和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”。软件开发流程不光指团队的流程,软件团队是由个人组成的。在团队的大流程中,是每一个具体的个人在做开发,测试,用户界面设计,管理,交流等工作。因此,个人在软件团队中也有个人的流程。,6,1.CMUPSP简介,PersonalSoftwareProcess(PSP)CMU的专家们针对软件工程师的一套模型,7,PSP的目的记录工程师如何实现需求的效率,而不是记录顾客对产品的满意度。工程师可能很高效地开发出一个顾客不喜欢的软件,那这个工程师还是一个优秀的工程师么?,8,PSP的特点:不局限于某一种软件技术(如编程语言),而是着眼于软件开发的流程,这样不同应用的工程师可以互相比较。不依赖于考试,而主要靠工程师自己收集数据,然后统计提高。在小型,初创的团队中,高质量的项目需求很难找到,这意味着给程序员的输入质量不高,在这种情况下,程序员的输出(程序/软件)往往质量不高,然而这并不能全部由程序员负责。PSP依赖于数据需要工程师输入数据,记录工程师的各项活动,这本身需要不小的代价。如果数据不准确或有遗失,怎么办?让工程师编造一些?如果一些数据不利于工程师本人(例如:花很多时间修改缺陷),我们怎么能保证工程师能如实地记录这些数据呢?,9,2.软件工程师的任务清单,10,3.个人项目耗时对比记录表,数据来源:SeniorStudent:在中科大“现代软件工程”课程中,每个学生记录了自己在完成个人项目时所花费的时间(学生情况:大学4年级上学期,计算机/电子/数学专业)。SDE:一群平均工作时间在3年左右,平均毕业学位为硕士的职业软件工程师(SoftwareDesignEngineer)的匿名调查.,11,12,结果分析SDE比SeniorStudent多读了3年书,多工作了3年.两类人任务的质量要求也不全一样SDE在“需求分析”和“测试”这两方面明显地要花更多的时间(多60%以上);但是在具体编码上,SDE要少花1/3强的时间。,13,PSP(PersonalSoftwareProcess)程序效能分析单元测试与回归测试,个人开发技术和流程,14,二、程序效能分析,1.效能与效能分析含义2.效能分析方法,15,1.效能与效能分析含义,Performance让自己的程序跑得又快又好时间上:最好是比别的同学快一个数量级,别人的程序是O(N2),而我的程序是O(n*logN),或者是O(N)。空间上PerformanceAnalysis找到程序的效能瓶颈,以改进程序。重复进行“效能测试,分析,改进,再效能测试”的流程,逐渐提高程序的效能和自身的编程水平。,16,效能分析的相关名词,17,PerformanceAnalysis写一个程序,分析一个文本文件中各个词出现的频率,并且把频率最高的10个词打印出来。,18,DoIt()ProcessFile()/storeallwordsinabigbufferProcessBuffer()/calculateandstorethefrequencyofeachwordOutputResult()/outputtop10ProcessBuffer()GetOneWord()/getonewordfrombufferFreqOneWord()FreqOneWord(word)Findthewordinthearraylist,If(found)UpdatethefrequencyIf(notfound)Addthewordinthearraylistwithfrequency=1OutputResult()ArrayList.Sort()/sortthearrayOutputTop10entry;,19,2.效能分析方法,(1)抽样(Sampling)(2)代码注入(Instrumentation)一般的做法是,先用抽样的方法找到效能瓶颈所在,然后对特定的模块用代码注入的方法进行详细分析。,20,2.效能分析方法,(1)抽样(Sampling)当程序运行时,时不时看一看这个程序运行在哪一个函数内,并记录下来,程序结束后,得出一个关于程序运行时间分布的大致的印象。优点:不需要改动程序,运行较快,可以很快地找到瓶颈。缺点:但是不能得出精确的数据,代码中的调用关系(CallTree)也不能准确表示。,21,2.效能分析方法,(2)代码注入(Instrumentation)将检测的代码加入到每一个函数中。优点:程序的一举一动都被记录在案,程序的各个效能数据都可以被精准地测量。缺点是程序的运行时间会大大加长,还会产生很大的数据文件,数据分析的时间也相应增加。同时,注入的代码也影响了程序真实的运行情况(这有点像量子物理学中的“测试的光线干扰了测试物体本身”的现象)。,22,PSP(PersonalSoftwareProcess)程序效能分析单元测试与回归测试,个人开发技术和流程,23,三、单元测试与回归测试,1.单元测试2.回归测试,24,1.单元测试,又称模块测试是针对软件设计的最小单位程序模块,进行正确性检验从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。,25,创建单元测试函数的主要步骤(1)设置数据(2)使用被测试模块的功能(3)比较实际结果和预期的结果,26,好的单元测试的标准单元测试应该在最低的功能/参数上验证程序的正确性。单元测试必须由最熟悉代码的人(程序的作者)来写。单元测试过后,机器状态保持不变。单元测试要快(一个测试运行时间是几秒钟,而不是几分钟)。单元测试应该产生可重复、一致的结果。独立性,单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。单元测试应该覆盖所有代码路径,包括错误处理路径,为了保证单元测试的代码覆盖率,单元测试必须测试公开的和私有的函数/方法。单元测试应该集成到自动测试的框架中。单元测试必须和产品代码一起保存和维护。,27,2.回归测试RegressionTesting,在单元测试的基础上,我们就能够建立关于这一模块的回归测试(RegressionTest).Regress的英语定义是:returntoaworseorlessdevelopedstate。是倒退、退化、退步的意思。在软件项目中,如果一个模块或功能以前是正常工作的,但是在一个新的构建中出了问题,那这个模块就出现了一个“退步”(Regression),从正常工作的稳定状态退化到不正常工作的不稳定状态。,28,回归测试的情形:在新版本上运行所有已通过的测试用例以验证有没有“退化”情况发生,这个过程就是一个“RegressionTest”。如果这样的“倒退”是由于模块的功能发生了正常变化(由于设计变更的原因)引起的,那么测试用例的基准就要修改,以便和新的功能保持一致。针对一个BugFix,也要作RegressionTest。(1)验证新的代码的确把缺陷改正了。(2)同时要验证新的代码没有把模块的现有功能破坏,没有Regression。,29,对于“回归测试”中的“回归”,我们可以理解为“回归到以前不正常的状态”。回归测试最好要自动化,因为这样就可以对于每一个构建快速运行所有回归测试,以保证尽早发现问题。单元测试是回归测试的基础.,30,在一个模块的功能逐步完成的同时,与此功能有关的测试用例也同样在完善中。一旦有关的测试用例通过,我们就得到了此模块的功能基准(Baseline),一个模块的所有单元测试就是这个模块最初的Baseline。,31,本章小结,PSP程序效能分析单元测试与回归测试,32,实践作业,1、分组,35人一组,选出每组组长,课代表汇总后统一提交2、注册Github,开始管理自己的源代码创建一个Github仓库,命名为test。给出课本P37页编程基本功的代码,并提交至Github的test仓库中。地址提交至本组小组长3、建立个人及团队博客(35人)个人博客内容:团队博客内容:当前主流的单元测试工具汇总由每组组长汇总后将地址提交到网络平台,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!