版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,PSP(Personal Software Process) 程序效能分析 单元测试,个人开发技术和流程,2,本 章 内 容,理论和知识点: 个人软件开发流程PSP 效能分析 单元测试与回归测试,3,PSP(Personal Software Process) 程序效能分析 单元测试与回归测试,个人开发技术和流程,4,一、PSP,1.CMU PSP简介 2.软件工程师的任务清单 3.个人项目耗时对比记录表,5,软件工程包括了开发,运营,维护软件的过程中有很多技术,做法,习惯,和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”。 软件开发流程不光指团队的流程,软件团队
2、是由个人组成的。在团队的大流程中,是每一个具体的个人在做开发,测试,用户界面设计,管理,交流等工作。因此,个人在软件团队中也有个人的流程。,6,1.CMU PSP简介,Personal Software Process (PSP) CMU的专家们针对软件工程师的一套模型,7,PSP的目的 记录工程师如何实现需求的效率,而不是记录顾客对产品的满意度。工程师可能很高效地开发出一个顾客不喜欢的软件,那这个工程师还是一个优秀的工程师么?,8,PSP的特点: 不局限于某一种软件技术(如编程语言),而是着眼于软件开发的流程,这样不同应用的工程师可以互相比较。 不依赖于考试,而主要靠工程师自己收集数据,然后
3、统计提高。 在小型,初创的团队中,高质量的项目需求很难找到,这意味着给程序员的输入质量不高,在这种情况下,程序员的输出(程序/软件)往往质量不高,然而这并不能全部由程序员负责。 PSP依赖于数据 需要工程师输入数据,记录工程师的各项活动,这本身需要不小的代价。 如果数据不准确或有遗失,怎么办?让工程师编造一些? 如果一些数据不利于工程师本人(例如:花很多时间修改缺陷),我们怎么能保证工程师能如实地记录这些数据呢?,9,2.软件工程师的任务清单,10,3.个人项目耗时对比记录表,数据来源: Senior Student:在中科大“现代软件工程”课程中,每个学生记录了自己在完成个人项目时所花费的时
4、间(学生情况:大学4年级上学期,计算机/电子/数学专业)。 SDE:一群平均工作时间在3年左右,平均毕业学位为硕士的职业软件工程师(Software Design Engineer)的匿名调查.,11,12,结果分析 SDE比Senior Student多读了3年书,多工作了3年.两类人任务的质量要求也不全一样 SDE在“需求分析”和“测试”这两方面明显地要花更多的时间(多60%以上);但是在具体编码上, SDE要少花1/3强的时间。,13,PSP(Personal Software Process) 程序效能分析 单元测试与回归测试,个人开发技术和流程,14,二、程序效能分析,1.效能与效能
5、分析含义 2.效能分析方法,15,1.效能与效能分析含义,Performance 让自己的程序跑得又快又好 时间上:最好是比别的同学快一个数量级,别人的程序是O(N2),而我的程序是O(n*logN),或者是O(N) 。 空间上 Performance Analysis 找到程序的效能瓶颈,以改进程序。 重复进行“效能测试,分析,改进,再效能测试”的流程,逐渐提高程序的效能和自身的编程水平。,16,效能分析的相关名词,17,Performance Analysis 写一个程序,分析一个文本文件中各个词出现的频率,并且把频率最高的10个词打印出来。,18,DoIt() ProcessFile()
6、/store all words in a big buffer ProcessBuffer()/calculate and store the frequency of each word OutputResult()/output top 10 ProcessBuffer() GetOneWord()/get one word from buffer FreqOneWord() FreqOneWord(word) Find the word in the array list, If (found) Update the frequency If (not found) Add the w
7、ord in the array list with frequency = 1 OutputResult() ArrayList.Sort()/sort the array Output Top 10 entry; ,19,2.效能分析方法,(1)抽样(Sampling) (2)代码注入(Instrumentation) 一般的做法是,先用抽样的方法找到效能瓶颈所在,然后对特定的模块用代码注入的方法进行详细分析。,20,2.效能分析方法,(1)抽样(Sampling) 当程序运行时,时不时看一看这个程序运行在哪一个函数内,并记录下来,程序结束后,得出一个关于程序运行时间分布的大致的印象。 优
8、点:不需要改动程序,运行较快,可以很快地找到瓶颈。 缺点:但是不能得出精确的数据,代码中的调用关系(CallTree)也不能准确表示。,21,2.效能分析方法,(2)代码注入(Instrumentation) 将检测的代码加入到每一个函数中。 优点:程序的一举一动都被记录在案,程序的各个效能数据都可以被精准地测量。 缺点是程序的运行时间会大大加长,还会产生很大的数据文件,数据分析的时间也相应增加。同时,注入的代码也影响了程序真实的运行情况(这有点像量子物理学中的“测试的光线干扰了测试物体本身”的现象)。,22,PSP(Personal Software Process) 程序效能分析 单元测试
9、与回归测试,个人开发技术和流程,23,三、单元测试与回归测试,1.单元测试 2.回归测试,24,1. 单元测试,又称模块测试 是针对软件设计的最小单位 程序模块,进行正确性检验 从程序的内部结构出发设计测试用例。 多个模块可以平行地独立进行单元测试。 主要采用白盒测试的测试用例,辅之以黑盒测试的测试用例,使之对任何合理的输入和不合理的输入,都能鉴别和响应。,25,创建单元测试函数的主要步骤 (1)设置数据 (2)使用被测试模块的功能 (3)比较实际结果和预期的结果,26,好的单元测试的标准 单元测试应该在最低的功能/参数上验证程序的正确性。 单元测试必须由最熟悉代码的人(程序的作者)来写。 单
10、元测试过后,机器状态保持不变。 单元测试要快(一个测试运行时间是几秒钟,而不是几分钟)。 单元测试应该产生可重复、一致的结果。 独立性,单元测试的运行/通过/失败不依赖于别的测试,可以人为构造数据,以保持单元测试的独立性。 单元测试应该覆盖所有代码路径,包括错误处理路径,为了保证单元测试的代码覆盖率,单元测试必须测试公开的和私有的函数/方法。 单元测试应该集成到自动测试的框架中。 单元测试必须和产品代码一起保存和维护。,27,2. 回归测试Regression Testing,在单元测试的基础上, 我们就能够建立关于这一模块的回归测试 (Regression Test). Regress 的英
11、语定义是: return to a worse or less developed state。是倒退、退化、退步的意思。 在软件项目中,如果一个模块或功能以前是正常工作的,但是在一个新的构建中出了问题,那这个模块就出现了一个“退步”(Regression),从正常工作的稳定状态退化到不正常工作的不稳定状态。,28,回归测试的情形: 在新版本上运行所有已通过的测试用例以验证有没有“退化”情况发生,这个过程就是一个“Regression Test”。如果这样的“倒退”是由于模块的功能发生了正常变化(由于设计变更的原因)引起的,那么测试用例的基准就要修改,以便和新的功能保持一致。 针对一个Bug
12、Fix, 也要作Regression Test。 (1)验证新的代码的确把缺陷改正了。 (2)同时要验证新的代码没有把模块的现有功能破坏,没有Regression。,29,对于“回归测试”中的“回归”,我们可以理解为“回归到以前不正常的状态”。 回归测试最好要自动化,因为这样就可以对于每一个构建快速运行所有回归测试,以保证尽早发现问题。单元测试是回归测试的基础.,30,在一个模块的功能逐步完成的同时,与此功能有关的测试用例也同样在完善中。 一旦有关的测试用例通过,我们就得到了此模块的功能基准 (Baseline) ,一个模块的所有单元测试就是这个模块最初的Baseline。,31,本 章 小 结,PSP 程序效能分析 单元测试与回归测试,32,实 践
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年浙江省瑞安市高二生物下册期末考试测试卷(完整版)附答案
- 2025年江西省高安市高二生物下册期末考试模拟卷含答案【B卷】
- 2026年河北省武安市高二生物下册期末考试考试卷附答案【培优B卷】
- 2025年浙江省瑞安市高二生物下册期末考试试卷【综合题】附答案
- 2026年河北省安国市高二生物下册期末考试考试卷附参考答案【培优】
- 2026年广东省连州市高二生物下册期末考试试卷含答案【突破训练】
- 2026年河北省武安市高二生物下册期末考试检测卷及完整答案(名校卷)
- 2026年山东省昌邑市高二生物下册期末考试测试卷含答案【夺分金卷】
- 2026年湖南省沅江市高二生物下册期末考试试卷【典型题】附答案
- 2026年四川省彭州市高二生物下册期末考试试卷(达标题)附答案
- 2025年陕西省中考物理真题(A卷+B卷)(含答案解析)
- 《变频器的应用》课件
- 游乐设施设备安装技术方案
- NB-T+10110-2018风力发电场技术监督导则
- JGJ52-2006 普通混凝土用砂、石质量及检验方法标准
- 【8历期末】安徽省合肥市庐阳区2022-2023学年八年级下学期期末历史试题(含解析)
- 国开2024年《机械设计基础》形考任务1-4答案
- 中考前安全教育主题班会
- 城市地下管网的维护与改造要点
- 20G361 预制钢筋混凝土方桩
- 2024年云南省三校生高考铁道运输类《铁道概论》考试题库大全-上(单选题汇总)
评论
0/150
提交评论