开发及环境搭建类软件测试面试题2
- 格式:wps
- 大小:18.50 KB
- 文档页数:2
软件测试面试题大全问题一:为什么要在一个团队中开展软件测试工作?任何软件在开发过程中都会留下缺陷,带有缺陷的软件产品如果提交出去,可能会给公司带来不可估量的损失,我们必须在客户之前发现尽可能多的问题,从而保障客户满意。
而发现问题的这个过程称之为测试。
问题二:简述你在以前的工作中做过哪些事情,比较熟悉什么。
此问题每个人都不一样。
我自己的答案如下。
我主要的工作是系统测试和自动化测试,也曾少量涉及性能测试。
在系统测试中,主要是对BOSS系统的业务逻辑功能,以及软交换系统的Class 5特性进行测试。
性能测试中,主要是进行的压力测试,在各个不同数量请求的情况下,获取系统响应时间以及系统资源消耗情况。
自动化测试主要是通过自己写脚本问题三:你所了解的的软件测试类型都有哪些,简单介绍一下。
1. 基本功能验证。
主要是对发布的版本进行一些最主要功能的测试。
英文常见叫法是Smoking Test, Basic Verification Test或者Sanity Check。
2. 功能测试。
主要是依据需求或者需求分析文档,对所发布的版本进行测试,看看是否满足需求,是否出现了不必要的功能。
3. 单元测试。
是开发人员进行的测试之一,一般是开发人员对很小的模块,比如函数进行测试,一般来说,开发人员还需要开发相应的测试桩来进行此类测试。
4. 集成测试。
在大型的开发过程中,软件是模块化进行开发的,将不同的模块揉合在一起的话,需要进行的测试就是集成测试。
5. 系统测试。
当软件提交给测试组后,是对整个系统的所有功能进行测试,一般来说,功能测试是系统测试的一个部分。
6. 压力测试。
主要是在很大性能的情况下,这个性能已经接近了系统的极限,看看系统运转的情况。
7. 负载测试。
主要是用各种不同的性能去检测系统,采集各个数据在这些性能情况下的数据。
8. 黑盒测试。
指系统对你来说是完全不透明的,只给你留下了输入和最终输出,这个是功能测试的方法之一。
软件开发面试题在软件开发行业,面试是评估应聘者技能和能力的重要环节。
面试题的设计不仅需要考查应聘者的专业知识和技术能力,还需要考察其解决问题的能力、沟通能力和团队合作能力。
下面是一些常见的软件开发面试题:1. 介绍一下你熟悉的编程语言。
在这个问题中,应聘者可以详细介绍自己熟悉的编程语言的特点、用途以及自身在项目中的应用经验等。
2. 请解释什么是对象导向编程。
在这个问题中,应聘者需要解释什么是对象导向编程以及其优点,并举例说明对象、类、继承、封装和多态等概念。
3. 请简要介绍一下敏捷开发方法。
应聘者需要对敏捷开发方法有一定的了解,如需介绍敏捷开发的原则、核心价值观、开发流程以及常用的敏捷开发工具等。
4. 请解释什么是数据库索引,以及索引对数据库性能的影响。
应聘者需要解释数据库索引的概念、作用和使用场景,并说明索引对数据库查询性能的影响,以及如何选择和优化索引。
5. 请简述面向对象设计的原则和设计模式之间的关系。
应聘者需要简要介绍面向对象设计的五个原则(SOLID原则),并解释设计模式是如何应用这些原则的,并给出常见的设计模式的例子。
6. 请解释什么是RESTful API,并说明其设计原则。
应聘者需要解释RESTful API的概念、设计原则以及在实际项目中如何设计和实现一个符合RESTful API标准的接口。
7. 请解释什么是单元测试,并说明它的重要性。
应聘者需要解释什么是单元测试以及它在软件开发中的作用和重要性,同时可以给出一些常用的单元测试框架和工具。
8. 请解释什么是持续集成和持续交付,并说明它们的好处。
应聘者需要解释什么是持续集成和持续交付,以及它们在开发流程中的作用和好处,可以结合实际项目经验进行说明。
9. 请解释什么是云计算,并说明云计算对软件开发行业的影响。
应聘者需要解释什么是云计算以及它的特点、优势和应用场景,同时说明云计算对软件开发行业的影响和变革。
10. 请简要说明你在之前项目中遇到的最大的技术挑战是什么,以及你是如何解决的。
软件测试工程师面试题目以及答案软件测试工程师面试题目和答案1、开发犯低级错误怎么办?开发首先要规范好编码,出低级错时不要指责,内心指出错误。
让他们自己进行测试,反思找出错误。
2、你进行过哪些测试,擅长什么?我主要从事web测试,搭建环境,对程序进行集成测试、系统测试、回归测试。
还有编写测试用例,使用手册,功能测试文档。
单元测试:测试的最早期阶段,焦点在于被测软件的最小的组成部分。
集成测试:确保最小单元被(部分)整合后能正常操作的测试执行阶段系统测试:当应用作为整体运行时的测试执行阶段(测试最终的应用)回归测试:修改了旧代码后,重新进行测试以确认修改操作没有引入新的错误或导致其他代码产生错误。
验收测试:以用户为主,由用户参加设计测试用例,对程序的功能、性能,以及可移植性、兼容性、可维护性、错误的恢复功能等进行确认。
主要运用黑盒测试的方法,对系统主要流程、重要功能进行有效性测试,验证所测试的软件是否满足需求规格说明书列出的要求3、开发说不是bug怎么办?将自己的见解告诉开发,不行就把见解和bug提交项目经理决定。
4、你的职业规划?巩固基础测试知识,提高理解需求能力。
学习自动化测试,并且运用。
技术到位后学习带领测试团队。
最后争取达到测试经理水平。
5、什么测试用例才是合格?能覆盖到所有测试点6、缺陷测试报告组成?缺陷编号、缺陷标题、缺陷描述、缺陷优先程度、缺陷所属模块、缺陷所属版本、缺陷所属开发人员、输入数据、输出结果、缺陷分析等。
C/S模式,使用交替方法确认是client还是server端问题。
7、测试用例包括哪些?用例编号、测试项描述、操作步骤、输入、预期结果、实际结果、测试人、测试时间、备注8、软件评审的人员和目的人员:客户、项目经理、开发人员、测试人员目的:查看软件是否还存在问题。
是否在不同平台正常运行,是否有和客户理解不一致的地方,是否有改进的地方9、什么是软件测试?目的?使用人工或自动化手段运行程序,为了发现软件的错误而执行检验的一个过程目的:以最少的人力、物力、时间找到软件中的缺陷并修改,从而回避风险。
第1篇一、前言随着科技的飞速发展,软件测试行业在我国逐渐崛起,成为IT行业中的重要分支。
越来越多的企业开始重视软件测试,对测试人才的需求也越来越大。
校招测试面试作为进入测试行业的第一步,其重要性和难度不言而喻。
本文将为大家整理一份校招测试面试题目及解析,帮助大家更好地备战面试。
二、基础知识1. 题目一:请简述软件测试的定义和目的。
解析:软件测试是指通过各种方法和技术,对软件产品进行测试,以发现软件中的错误,保证软件质量,提高软件可用性。
软件测试的目的是确保软件满足需求,满足用户期望,降低风险。
2. 题目二:请列举常见的软件测试类型。
解析:常见的软件测试类型包括:(1)功能测试:验证软件功能是否符合需求规格说明书。
(2)性能测试:测试软件在特定负载下的性能表现。
(3)安全测试:测试软件在安全方面的表现,如防止恶意攻击。
(4)兼容性测试:测试软件在不同平台、操作系统、浏览器等环境下的兼容性。
(5)回归测试:验证软件修改或升级后,原有功能是否受到影响。
3. 题目三:请简述黑盒测试和白盒测试的区别。
解析:黑盒测试和白盒测试的区别主要体现在测试方法、测试依据和测试内容上。
(1)测试方法:黑盒测试主要关注软件功能,不考虑内部实现;白盒测试关注软件内部实现,通过代码审查、静态分析等方法进行测试。
(2)测试依据:黑盒测试依据需求规格说明书;白盒测试依据软件设计文档和代码。
(3)测试内容:黑盒测试关注软件功能;白盒测试关注软件内部逻辑、代码质量。
三、测试用例设计1. 题目四:请简述等价类划分法。
解析:等价类划分法是一种黑盒测试方法,通过将输入数据划分为若干等价类,从每个等价类中选取一个代表值作为测试用例,以达到测试全面性的目的。
2. 题目五:请简述边界值分析法。
解析:边界值分析法是一种黑盒测试方法,通过选取输入数据的边界值作为测试用例,以提高测试覆盖率。
3. 题目六:请简述错误猜测法。
解析:错误猜测法是一种黑盒测试方法,通过测试人员凭借经验或直觉猜测可能存在的错误,并设计相应的测试用例进行验证。
软件测试面试题汇总测试技术面试题 (5)1、什么是兼容性测试?兼容性测试侧重哪些方面? (5)2、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题? (5)3、测试的策略有哪些? (5)4、正交表测试用例设计方法的特点是什么? (5)5、描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程? (5)6、你觉得bugzilla在使用的过程中,有什么问题? (5)7、描述测试用例设计的完整过程? (6)8、单元测试的策略有哪些? (6)9、LoadRunner分哪三部分? (6)10、LoadRunner进行测试的流程? (6)什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样? (6)12、使用QTP做功能测试,录制脚本的时候,要验证多个用户的登录情况/查询情况,如何操作? (6)13、QTP中的Action有什么作用?有几种? (6)14、TestDirector有些什么功能,如何对软件测试过程进行管理? (7)15、你所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试......)? . (7)16、条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录? (8)17、Beta测试与Alpha测试有什么区别? (8)18、软件的评审一般由哪些人参加?其目的是什么? (8)19、测试活动中,如果发现需求文档不完善或者不准确,怎么处理? (8)20、阶段评审与项目评审有什么区别? (8)21、阐述工作版本的定义? (8)22、什么是桩模块?什么是驱动模块? (8)23、什么是扇入?什么是扇出? (8)24、你认为做好测试计划工作的关键是什么? (8)25、你认为做好测试用例工作的关键是什么? (9)26、简述一下缺陷的生命周期? (9)27、软件的安全性应从哪几个方面去测试? (9)28、软件配置管理工作开展的情况和认识? (9)29、你觉得软件测试通过的标准应该是什么样的? (10)30、引入测试管理的含义? (10)31、一套完整的测试应该由哪些阶段组成? (10)32、单元测试的主要内容? (10)33、集成测试也叫组装测试或者联合测试,请简述集成测试的主要内容? (10)34、简述集成测试与系统测试关系? (10)35、软件测试的文档测试应当贯穿于软件生命周期的全过程,其中用户文档是文档测试的重点。
软件开发工程师面试题及答案在软件开发领域,面试是选拔优秀人才的关键环节。
以下是一些常见的软件开发工程师面试题及相应的答案参考。
一、基础知识类1、什么是面向对象编程(OOP)?它的主要特点有哪些?答:面向对象编程是一种编程范式,它将数据和对数据的操作封装在对象中。
主要特点包括封装、继承和多态。
封装是将数据和方法包装在一个类中,隐藏内部实现细节;继承允许一个类从另一个类继承属性和方法,实现代码复用;多态则是同一个方法在不同的对象中有不同的实现方式。
2、解释一下进程和线程的区别。
答:进程是程序的一次执行过程,拥有独立的内存空间;线程是进程中的一个执行单元,多个线程共享进程的内存空间。
进程的创建和销毁开销较大,而线程相对较小。
进程间通信相对复杂,线程间通信较为简单。
3、谈谈你对数据库索引的理解。
答:数据库索引是一种用于提高数据库查询效率的数据结构。
它就像是一本书的目录,可以快速定位到所需的数据。
常见的索引类型有B 树索引、哈希索引等。
索引可以加快查询速度,但过多或不恰当的索引会导致数据插入、更新和删除的性能下降。
二、编程语言类1、如果让你用 Python 实现一个冒泡排序算法,你会怎么做?答:```pythondef bubble_sort(arr):n = len(arr)for i in range(n):for j in range(0, n i 1):if arrj > arrj + 1 :arrj, arrj + 1 = arrj + 1, arrj```2、在 Java 中,如何实现线程同步?答:在Java 中,可以使用`synchronized` 关键字来实现线程同步。
可以将方法声明为`synchronized` ,或者使用同步块。
另外,还可以使用`Lock` 接口和相关实现类来实现更灵活的线程同步。
3、谈谈 C++中的指针和引用的区别。
答:指针是一个变量,存储的是另一个变量的内存地址;引用则是一个别名,必须在初始化时绑定到一个对象,并且之后不能再重新绑定。
测试开发岗位面试题
1. 你是如何进行测试计划的编写和执行的?
2. 你在测试中使用哪些自动化工具和框架?可以讲一下你的经验和使用场景吗?
3. 请描述一下你对持续集成和持续交付的理解,以及你在项目中如何实施这些流程?
4. 在开发过程中,你如何与开发人员进行有效的沟通和合作来确保质量?
5. 你是如何进行测试用例设计的?是否遵循某种特定的方法?
6. 请分享一下你在测试过程中遇到的一个难题,以及你是如何解决的?
7. 你对性能测试有什么经验?你常用的性能测试工具是什么?
8. 你如何发现和跟踪软件缺陷?你通常采用的缺陷管理工具是什么?
9. 请讲一个你在工作中遇到的高风险问题,并讲述你是如何应对和解决的?
10. 在测试中,你如何保证测试用例的可维护性和复用性?
11. 你如何评估和管理测试优先级?
12. 请描述一下你在多个项目同时进行时如何管理和分配测试
任务的情况?
13. 在开发团队中,你如何培训和指导其他成员进行测试工作?
14. 在测试过程中,你如何处理和处理开发人员对你的测试结
果提出的异议?
15. 你有参与过软件架构设计的经验吗?如果有,请讲一下你
在其中扮演的角色和你的贡献。
这些问题可以帮助面试官了解面试者在测试开发方面的经验、知识和能力。
面试者可以根据自己的实际经验和项目经历来回答这些问题,并展示自己的技能和解决问题的能力。
软件测试面试题汇总。
测试技术面试题。
1、什么是兼容性测试?兼容性测试侧重哪些方面? (5)2、我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题? (5)3、测试的策略有哪些? (5)4、正交表测试用例设计方法的特点是什么? (5)5、描述使用bugzilla缺陷管理工具对软件缺陷(BUG)跟踪的管理的流程? (5)6、你觉得bugzilla在使用的过程中,有什么问题? (6)7、描述测试用例设计的完整过程? (6)8、单元测试的策略有哪些? (6)9、LoadRunner分哪三部分? (7)10、LoadRunner进行测试的流程? (7)什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样? (7)12、使用QTP做功能测试,录制脚本的时候,要验证多个用户的登录情况/查询情况,如何操作? (7)13、QTP中的Action有什么作用?有几种? (8)14、TestDirector有些什么功能,如何对软件测试过程进行管理? (8)15、你所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试......)? . (9)16、条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录? (9)17、Beta测试与Alpha测试有什么区别? (9)18、软件的评审一般由哪些人参加?其目的是什么? (9)19、测试活动中,如果发现需求文档不完善或者不准确,怎么处理? (9)20、阶段评审与项目评审有什么区别? (9)21、阐述工作版本的定义? (10)22、什么是桩模块?什么是驱动模块? (10)23、什么是扇入?什么是扇出? (10)24、你认为做好测试计划工作的关键是什么? (10)25、你认为做好测试用例工作的关键是什么? (10)26、简述一下缺陷的生命周期? (11)27、软件的安全性应从哪几个方面去测试? (11)28、软件配置管理工作开展的情况和认识? (11)29、你觉得软件测试通过的标准应该是什么样的? (11)30、引入测试管理的含义? (11)31、一套完整的测试应该由哪些阶段组成? (11)32、单元测试的主要内容? (11)33、集成测试也叫组装测试或者联合测试,请简述集成测试的主要内容? (11)34、简述集成测试与系统测试关系? (12)35、软件测试的文档测试应当贯穿于软件生命周期的全过程,其中用户文档是文档测试的重点。
软件测试面试题软件测试面试题11.等价类划分常见的软件测试面试题划分等价类:等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.2.边界值分析法边界值分析方法是对等价类划分方法的补充。
测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.3.错误推测法基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的'设计测试用例的方法.错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例.例如,在单元测试时曾列出的许多在模块中常见的错误.以前产品测试中曾经发现的错误等,这些就是经验的总结。
还有,输入数据和输出数据为0的情况。
输入表格为空格或输入表格只有一行.这些都是容易发生错误的情况。
可选择这些情况下的例子作为测试用例.4.因果图方法前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等.考虑输入条件之间的相互组合,可能会产生一些新的情况.但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多.因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例.这就需要利用因果图(逻辑模型).因果图方法最终生成的就是判定表.它适合于检查程序输入条件的各种组合情况.5.正交表分析法有时候,可能因为大量的参数的组合而引起测试用例数量上的激增,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性。
软件测试面试题(含答案)1、你的测试职业发展是什么?考试经验越多,考试能力越高。
所以我的职业发展需要时间积累,一步一步走向高级测试工程师。
而且,我也有了初步的职业规划。
前三年积累了测试经验,按照如何做一名测试工程师的要点要求自己,不断更新自己,修正自己,做好测试任务。
优势在于我对测试坚定不移的信心和热情,虽然经验还不够,但测试需要的基本技能我有信心在工作中得以发挥。
2、你认为测试人员需要具备哪些素质做测试应该要有一定的协调能力,因为测试人员经常要与开发接触处理一些问题,如果处理不好的话会引起一些冲突,这样的话工作上就会不好做。
还有测试人员要有一定的耐心,有的时候做测试很枯燥乏味。
除了耐心,测试人员不能放过每一个可能的错误。
3、你为什么能够做测试这一行虽然我的测试技术还不是很成熟,但是我觉得我还是可以胜任软件测试这个工作的,因为做软件测试不仅是要求技术好,还有有一定的沟通能力,耐心、细心等外在因素。
综合起来看我认为我是胜任这个工作的。
4、测试的目的是什么?测试的目的是找出软件产品中的错误,是软件尽可能的符合用户的要求。
当然软件测试是不可能找出全部错误的。
5、测试分为哪几个阶段?一般来说分为5个阶段:单元测试、集成测试、确认测试、系统测试、验收测试6.单元测试的测试对象、目的、依据和方法?测试对象是模块内部的程序错误,目的是消除局部模块逻辑和功能上的错误和缺陷。
测试依据是模块的详细设计,测试方法是采用白盒测试。
7、怎样看待加班问题加班的话我没有太多意见,但是我还是觉得如果能够合理安排时间的话,不会有太多时候加班的。
8.结合你之前的学习和工作经验,你认为如何做好测试?根据我以前的工作和学习经验,我认为要做好工作,首先要有良好的沟通。
只有沟通无障碍,才能有好的合作,更好的效率。
还有一个就是技术一定要过关,一定要有足够的耐心和良好的工作习惯。
如果有不明白的地方,一定要提出问题,和同事实时交流。
9、你为什么选择软件测试行业因为之前了解软件测试这个行业,觉得他的发展前景很好。
软件开发及环境搭建类软件测试面试题2_达内总部
1.Windows操作系统中PA TH环境变量的作用是什么?
参考答案:
PA TH是Windows操作系统环境变量,PA TH作用是用户在命令行窗口执行一个命令,则在PA TH变量设置的目录下依次寻找该命令或对应的执行文件,若找到,则执行,若没有找到,则命令行窗口返回无效命令。
2.Ghost的主要用途和常用方法?
参考答案:
Ghost是一个非常著名的硬盘克隆工具。
该工具的主要作用是可以将一个硬盘或硬盘中的某个分区原封不动的复制到另一个硬盘或其他的分区中。
如果你需要备份启动分区或者是需要在多台机器上安装相应的系统和应用程序,都可以通过Ghost来实现,相信通过这个工具备份,恢复速度和硬盘安装速度会成倍的提高。
Norton Ghost有一个很大的特点,就是在克隆硬盘时不会改变任何文件信息,程序可以很好的支持FAT16、FAT32以及NTFS格式的文件分配结构(其中包括Windows 2000的文件分配格式),虽然是DOS环境下运行的程序,但工具可支持Win 9x的长文件名特性。
常用方法包括:硬盘克隆、分区克隆、硬盘或分区克隆成镜像文件等。
3.在RedHat中,从root用户切到userl用户,一般用什么命令?
参考答案:su
su user1 切换到user1,但切换后的当前目录还是root访问的目录
su – user1 切换到user1,并且当前目录切换到user1的根目录下(/home/user1/)
4.Linux中,一般怎么隐藏文件?
参考答案:文件名以一个.开头
5.如何将自己的本地磁盘(D)做成FTP供远端主机使用?
参考答案:Windows下安装FTP服务,并将FTP的根目录指向D盘即可。
6.对RUP.CMM,CMMI,XP,PSP.TSP的认识?
参考答案:软件过程标准:CMMI、PSP、TSP、RUP、软件工程规范国家标准;(AP、XP、ASD等开发过程思想好像还不能称其为标准)
RUP(Rational Unified Process)是Rational公司提出的一套开发过程模型,它是一个面向对象软件工程的通用业务流程。
它描述了一系列相关的软件工程流程,它们具有相同的结构,即相同的流程构架。
RUP 为在开发组织中分配任务和职责提供了一种规范方法,其目标是确保在可预计的时间安排和预算内开发出满足最终用户需求的高品质的软件。
RUP具有两个轴,一个轴是时间轴,这是动态的。
另一个轴是工作流轴,这是静态的。
在时间轴上,RUP划分了四个阶段:初始阶段、细化阶段、构造阶段和发布阶段。
每个阶段都使用了迭代的概念。
在工作流轴上,RUP设计了六个核心工作流程和三个核心支撑工作流程,核心工作流轴包括:业务建模工作流、需求工作流、分析设计工作流、实现工作流、测试工作流和发布工作流。
核心支撑工作流包括:环境工作流、项目管理工作流和配置与变更管理工作流。
RUP 汇集现代软件开发中多方面的最佳经验,并为适应各种项目及组织的需要提供了灵活的形式。
作为一个商业模型,它具有非常详细的过程指导和模板。
但是同样由于该模型比较复杂,因此在模型的掌握上需要花费比较大的成本。
尤其对项目管理者提出了比较高的要求。
CMM(Capability Maturity Model能力成熟度模型) 由美国卡内基-梅隆大学的软件工程研究所(简称SEI)受美国国防部委托,于1991年研究制定,初始的主要目的是为了评价美国国防部的软件合同承包组织的能力,后因为在软件企业应用CMM模型实施过程改进取得较大的成功,所以在全世界范围内被广泛使用,SEI同时建立了主任评估师评估制度,CMM的评估方法为CBA-IPI。
CMM的本质是软件管理工程的一个部分。
它是对于软件组织在定义,实现,度量,控制和改善其软件过程的进程中各个发展阶段的描述。
他通过5个不断进化的层次来评定软件生产的历史与现状:初始层是混沌的过程;可重复层是经过训练的软件
过程;定义层是标准一致的软件过程;管理层是可预测的软件过程;优化层是能持续改善的软件过程。
CMM/PSP/TSP即软件能力成熟度模型/ 个体软件过程/群组软件过程,是1987年美国Carnegie Mellon 大学软件工程研究所(CMU/SEI)以W.S.Humphrey为首的研究组发表的研究成果"承制方软件工程能力的评估方法"。
CMMI是SEI于2000年发布的CMM的新版本。
CMMI不但包括了软件开发过程改进,还包含系统集成、软硬件采购等方面的过程改进内容。
CMMI纠正了CMM存在的一些缺点,使其更加适用企业的过程改进实施。
CMMI适用SCAMPI评估方法。
需要注意的是,SEI没有废除CMM模型,只是停止了CMM评估方法:CBA-IPI。
现在如要进行CMM评估,需使用SCAMPI方法。
但CMMI模型最终代替CMM模型的趋势不可避免。
XP (极限编程)规定了一组核心价值和方法,可以让软件开发人员发挥他们的专长:编写代码。
XP 消除了大多数重量型过程的不必要产物,通过减慢开发速度、耗费开发人员的精力(例如干特图、状态报告,以及多卷需求文档)从目标偏离。
XP 的核心价值:交流、简单、反馈、勇气。