软件测试知识点总结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xiebingbing103/article/details/78334681

1、软件测试的过程分为单元测试、集成测试、系统测试和验收测试。


(1)单元测试(也称模块测试):针对软件设计的基本单元——程序模块,进行正确性检验的测试工作。目的在于发现各个模块内部可能存在的各种差错。单元测试需要从程序内部结构出发设计测试用例,多个模块可以平行、独立地进行测试;

(2)集成测试(也称组装测试,联合测试):在单元测试的基础上,将所有模块按设计要求集成在一起进行测试,以检验总体设计中各模块间的接口设计问题、模块之间的相互影响、上层模块存在的各种差错及全局数据结构对系统的影响等方面。

系统集成测试主要包括以下过程:

1. 构建的确认过程。

2. 补丁的确认过程。

3. 系统集成测试测试组提交过程。

4. 测试用例设计过程。

5. 测试代码编写过程。

6. Bug的报告过程。

7. 每周/每两周的构建过程。

8. 点对点的测试过程。

9. 组内培训过程

(3)确认测试(也称验收测试,有效性测试):主要检验软件的功能和性能是否与需求说明书中的规定一致。

(4)系统测试:将软件系统作为一个元素,放入整个实际的计算机系统中,与计算机硬件、其他软件、使用人员等系统元素结合在一起,在实际使用环境下进行综合全面的测试。

2、静态测试是不运行程序本身而寻找程序代码中可能存在的错误或评估程序代码的过程。静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。人工测试技术主要包含三种静态测试技术,分别是抽查、审查和正式评审。

动态测试是实际运行被测程序,输入相应的测试实例,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。

黑盒测试一般用来确认软件功能的正确性和可操作性,目的是检测软件的各个功能是否能得以实现,把被测试的程序当作一个黑盒,不考虑其内部结构,在知道该程序的输入和输出之间的关系或程序功能的情况下,依靠软件规格说明书来确定测试用例和推断测试结果的正确性。

白盒测试根据软件内部的逻辑结构分析来进行测试,是基于代码的测试,测试人员通过阅读程序代码或者通过使用开发工具中的单步调试来判断软件的质量,一般黑盒测试由项目经理在程序员开发中来实现。

α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha 测试不能由程序员或测试员完成。

β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta 测试不能由程序员或测试员完成。

3、白盒测试:

白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻辑覆盖法、基本路径测试法、域测试 、符号测试、路径覆盖和程序变异。

白盒测试流程:详细设计-->源程序-->分析程序内部逻辑结构-->流程图-->制定测试用例-->被测程序-->执行路径-->覆盖情况分析。

白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试,其中逻辑覆盖包括有6种覆盖标准,强度由弱到强依次是:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖。

白盒测试必须遵守以下4条原则:

(1)  保证一个模板中的所有路径至少被测试一次。

(2)  有逻辑值均需测试真(true)和假(false)两种情况。

(3)   检查程序的内部数据结构是否有效性。

(4)   在上、下边界及可操作范围内运行所有循环。

4、白盒测试关心的是内部代码,依据是设计文档。黑盒测试只关心输入输出,依据的是需求文档。黑盒测试:不考虑软件内部逻辑,根据需求文档对软件进行功能检测,主要检测产品的外部功能和接口。

5、黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证,黑盒测试完全不考虑程序内部的逻辑结构和内部特性,只根据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明。在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试用例设计方法:等价类划分、边界值分析、错误猜测、因果图、状态图、测试大纲、场景法、正交分析法。主要用于软件确认测试。

6、黑盒测试与白盒测试的优缺点:

黑盒测试的优点:比较简单,不需要了解程序内部的代码及实现;与软件的内部实现无关;从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;在做软件自动化测试时较为方便。缺点:不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的 30%;自动化测试的复用性较低。

白盒测试的优点:帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。白盒测试的缺点

程序运行会有很多不同的路径,不可能测试所有的运行路径;测试基于代码,只能知道测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;系统庞大时,测试开销会非常大。

7、项目立项前,测试人员不需要提交任何工件。

8、网游的测试内容有: 客户端性能, 服务器端性能, 从运行完 game.exe 打开游戏界面后可进行的各种操作、玩法, 界面。

9、软件测试计划评审会需要项目经理、客户(可选)、配置管理员、测试经理、开发组长等人的参加。

10、 基础测试的工作开展更多是站在测试人员的角度上;系统测试站在用户的角度上。

11、 SSH服务默认端口为22;Telnet服务默认端口为23。

12、  软件测试可以是人工测试:如个人复查,抽查和会审等,也可以是机器自动测试,又有不同的分类:

按照有关软件内部结构具体实现角度划:A.白盒测试B.黑盒测试 C.灰盒测试 。

按照软件开发过程按阶段划:A.单元测试  B.集成测试  C.确认测试  D.系统测试  E.验收测试。

验收测试常用策略:正式验收、非正式验收或Alpha测试、Beta测试(由用户来实施)。

13、软件测试一般分α、β、λ三个阶段,α是第一阶段,一般只供内部测试使用;β是第二个阶段,已经消除了软件中大部分的不完善之处,但仍有可能还存在缺陷和漏洞,一般只提供给特定的用户群来测试使用;λ是第三个阶段,此时产品已经相当成熟,只需在个别地方再做进一步的优化处理即可上市发行。

14、  软件验收测试分为三类:正式验收测试;非正式验收测试其中包括α测试(由用户、测试人员、开发人员共同参与的内部测试。)和β测试(内测后的公测,即完全交给最终用户测试。)

15、 软件测试用例主要由测试输入数据和测试的预期结果两部分组成。

16、测试人员在软件开发过程中的任务是什么?寻找 Bug;避免软件开发过程中的缺陷;衡量软件的品质;关注用户的需求。总的目标是:确保软件的质量。

17、 代码评审(开发人员担任)也称代码复查,是指通过阅读代码来检查源代码与编码标准的符合性以及代码质量的活动。

18、 软件测试的对象包括源程序、目标程序、数据及相关文档。

19、  “5W1H”规则

Why:为什么要进行这些测试。

What:测试哪些方面,不同阶段的工作内容。

When:测试不同阶段的起止时间。

Where:相应文档,缺陷的存放位置,测试环境等。

Who:项目有关人员组成,安排哪些测试人员进行测试。

How:如何去做,使用哪些测试工具以及测试方法进行测试。利用“5W”规则创建软件测试计划,可以帮助测试团队理解测试的目的(Why),明确测试的范围和内容(What),确定测试的开始和结束日期(When),安排哪些测试人员进行测试(who),指出测试的方法和工具(How),给出测试文档和软件的存放位置(Where)。

20、 软件实施活动的进入准则:A.需求工件已经被基线化 B.详细设计工件已经被基线化 C.构架工件已经被基线化

21、 测试用例是测试程序正确性与否的关键。一个覆盖完全的测试用例可以测试出程序是否正确运行,是否有bug等等,是最重要的。

22、 系统测试的16个测试策略:功能测试、性能测试、压力测试、容量测试、安全性测试、GUI测试、可用性测试、安装测试、配置测试、异常测试、备份测试、健壮性测试、文档测试、在线帮助测试、网络测试、稳定性测试。

23、 主流测试工具:

(1)Apache Jmeter:JMeter作为一款广为流传的开源压测产品,JMeter可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP服务器等等,还能对服务器、网络或对象模拟巨大的负载,通过不同压力类别测试它们的强度和分析整体性能。JMeter能够对应用程序做功能测试和回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。JMeter的特点包括对HTTP(80)、FTP(20,21)服务器、数据库进行压力测试和性能测试;完全的可移植性;完全 Swing和轻量组件支持包;完全多线程;缓存和离线分析/回放测试结果;可链接的取样器;具有提供动态输入到测试的功能;支持脚本编程的取样器等。在设计阶段,JMeter能够充当HTTP PROXY(代理)来记录浏览器的HTTP请求,也可以记录Apache等WebServer的log文件来重现HTTP流量,并在测试运行时以此为依据设置重复次数和并发度(线程数)来进行压测。

(2)LoadRunner:是一种预测系统行为和性能的负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题, 可适用于各种体系架构的自动负载测试,能预测系统行为并评估系统性能其测试组件有(1VuGenLoad Generator(虚拟用户生成器)用于捕获最终用户业务流程和创建自动性能测试脚本(也称为虚拟用户脚本)。2Controller(控制器)用于组织、驱动、管理和监控负载测试。(3)Analysis(分析器)有助于您查看、分析和比较性能结果。

(3)CloudTest 是一个集性能和功能测试于一体的综合压力测试云平台,专为现代网络和移动应用测试而设计开发,CloudTest可以图形化实现判断、循环,整体减轻了测试开发的工作量,缩短了开发时间。CloudTest基于内存的分析引擎,可以实时收集和展示数据,所有数据在3秒内汇聚显示。

CloudTest采用虚拟化技术,完美的配合公有/私有云计算技术,无需过多的硬件,带宽资源的投入,人力维护成本几乎为零,测试按需获得,远程接入,适合多团队协作。各种规模的模拟成本均远远优于传统工具,同时大大缩短了测试周期。

(4)WinRunner是一种企业级的功能测试工具,用于检测应用程序是否能够达到预期的功能及正常运行。

24、LoadRunner分为用户动作设计、场景设计、测试数据分析三部分组成。其测试流程为测试测试、创建虚拟用户脚本、创建运行场景、创建测试脚本、监视场景、分析测试的结果。

25、桩模块(Stub)是指模拟被测试的模块所调用的模块,而不是软件产品的组成的部分。在自顶向下的集成过程中尤其有效。

26、请你分别画出 IOSI 的七层网络结构图和TCP/IP  的四层结构图。

OSI 七层网络结构图,由上至下:应用层 ,表示层 ,会话层 ,传输层 ,网络层 ,数据链路层,物理层。

TCP/IP 的四层结构图:应用层,传输层,互联层,链路层。

27、 因为缺陷放大理论,在单元测试阶段发现的bug会在系统测试阶段被放大,放大倍数完全符合80/20理论。

28、 负载测试:在一定的工作负荷下,系统的负荷及响应时间。

强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。

容量测试:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。

29、【软件需求】是软件开发之前做好的,软件开发是根据这个做的,那么软件测试自然也需要参考该文件 【迭代计划】是软件的某个周期的计划,自然也需要参考 【可行性】是软件开发前做好,用于证明该计划可行的,没有必要参考

30、BUG报告包括哪些内容:日期、发现人、使用数据、bug出现的位置、可重现的步骤,bug截图。

31、 自动化测试工具有:基于web的测试管理工具TestDirector、配置管理工具VSSQTP以及性能测试工具LoadRunner

32、  LoadRunner-负载压力测试:预测系统性能。

JMeter+Badboy:基于JAVA的压力测试工具,Badboy用来进行脚本的录制。

功能测试:通过自动录制、检测和回放用户的应用操作。将输出记录同预先给定的记录比较。 

JUnit是一个Java语言的单元测试框架http://blog.csdn.net/andycpp/article/details/1327147/。白盒测试工具:针对代码测试 

测试管理工具:对测试需求、计划、用例、实施进行管理 

测试辅助工具:本身不执行,可以生成测试数据,为测试提供数据准备 

负载压力测试:LoadRunner:预测系统行为和性能的工业标准级负载测试工具。模拟上千万用户同时实施并发操作,来实时监控可能发生的问题。 

功能测试: QTP http://hanviseas.blog.51cto.com/5400240/1341692(quicktest professional):自动测试工具包括5个步骤:录制测试脚本、编辑测试脚本、调试测试脚本、运行测试脚本、分析测试脚本。 

白盒测试:C++ TEST(做C和C++的白盒测试)、JUnit(Java白盒测试) 

缺陷管理工具:Mantis、BugFree、QC、TD 

用例管理工具:TestLink、QC 

测试辅助工具:SVN

33、强度测试:在一定的负荷条件下,在较长时间跨度内的系统连续运行给系统性能所造成的影响。

容量测试:容量测试目的是通过测试预先分析出反映软件系统应用特征的某项指标的极限值(如最大并发用户数、数据库记录数等),系统在其极限值状态下没有出现任何软件故障或还能保持主要功能正常运行。容量测试还将确定测试对象在给定时间内能够持续处理的最大负载或工作量。容量测试的目的是使系统承受超额的数据容量来发现它是否能够正确处理。容量测试是面向数据的,并且它的目的是显示系统可以处理目标内确定的数据容量。

(11)什么是测试用例 什么是测试脚本两者的关系是什么?

测试用例是为实施测试而向被测试系统提供的输入数据、操作或各种环境设置以及期望结果的一个特定的集合。测试脚本是为了进行自动化测试而编写的脚本。测试脚本的编写必须对应相应的测试用例。

 1、例题:


2、测试用例






(1)在  C/C++中 中 c static  有什么用途?(请至少说明两种)

1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。

3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用

(2)引用与指针有什么区别?

1) 引用必须被初始化,指针不必。

2) 引用初始化以后不能被改变,指针可以改变所指的对象。

3) 不存在指向空值的引用,但是存在指向空值的指针。

 

测试例题:

1、详细的描述一个测试活动完整的过程。

(1)项目经理通过和客户的交流,完成需求文档,由开发人员和测试人员共同完成需求文档的评审,评审的内容包括:需求描述不清楚的地方和可能有明显冲突或者无法实现的功能的地方。项目经理通过综合开发人员,测试人员以及客户的意见,完成项目计划。然后 SQA(软件质量保证) 进入项目,开始进行统计和跟踪。

(2)开发人员根据需求文档完成需求分析文档,测试人员进行评审,评审的主要内容包括是否有遗漏或者双方理解不同的地方。测试人员完成测试计划文档,测试计划包括的内容上面有描述。

(3)测试人员根据修改好的需求分析文档开始写测试用例,同时开发人员完成概要设计文档,详细设计文档。此两份文档成为测试人员撰写测试用例的补充材料。

(4)测试用例完成后,测试和开发需要进行评审。

(5)测试人员搭建环境

(6)开发人员提交第一个版本,可能存在未完成功能,需要说明。测试人员进行测试,发现 BUG后提交给 BugZilla。(Bugzilla 是一个开源的缺陷跟踪系统(Bug-Tracking System),它可以管理软件开发中缺陷的提交(new),修复(resolve),关闭(close)等整个生命周期。是专门为Unix定制开发的)

(7)开发提交第二个版本,包括 Bug Fix 以及增加了部分功能,测试人员进行测试。

(8)重复上面的工作,一般是 3-4 个版本后 BUG 数量减少,达到出货的要求。

(9)如果有客户反馈的问题,需要测试人员协助重现并重新测试。

2、问:你在测试中发现了一个bug ,但是开发经理认为这不是一个bug ,你应该怎样解决。

首先,将问题提交到缺陷管理库里面进行备案。然后,要获取判断的依据和标准:根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;根据用户的一般使用习惯,来确认是否是缺陷;与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。

1.测试项目:电梯

需求测试:查看电梯使用说明书、安全说明书等

界面测试:查看电梯外观

功能测试:测试电梯能否实现正常的上升和下降功能.电梯的按钮是否都可以用;电梯门的打开,关闭是否正常;报警装置是否可用,报警电话是否可用;通风状况如何.突然停电时的情况;是否有手机信号;比如说上升途中的响应。电梯本来在 1 楼,如果有人按 18 楼,那么电梯在上升到 5 楼的时候,有人按了 10 楼,这时候是否会在 10 楼先停下来;电梯下降到 10 层时显示满员,此时若 8 层有人等待电梯,是否在 8 层停;

可靠性:门关上的一刹那出现障碍物,同时按关门和开门按钮,点击当前楼层号码,多次点击同一楼层的号码等等;同时按上键和下键会怎样;

易用性:电梯的按钮的设计符合一般人使用的习惯吗.

用户文档:使用手册是否对电梯的用法、限制、使用条件等有详细描述

压力测试:看电梯的最大限度的承受重量.在负载过重时报警装置是否有提醒.在一定时间内不断的让电梯上升,下降.最大负载下平稳运行的最长时间。

2.测试项目:杯子

需求测试: 查看杯子使用说明书

界面测试: 查看杯子外观

功能度:用水杯装水看漏不漏;水能不能被喝到

安全性:杯子有没有毒或细菌

可靠性:杯子从不同高度落下的损坏程度

可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用

兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等

易用性:杯子是否烫手、是否有防滑措施、是否方便饮用

用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述

疲劳测试:将杯子盛上水(案例一)放 24 小时检查泄漏时间和情况;盛上汽油(案例二)放 24 小时检查泄漏时间和情况等

压力测试:用根针并在针上面不断加重量,看压强多大时会穿透

跌落测试: 杯子加包装( 有填充物), 在多高的情况摔下不破损

震动测试: 杯子加包装( 有填充物), 六面震动, 检查产品是否能应对恶劣的铁路\ 公路\ 航空运输

测试数据:测试数据具体编写此处略(最讨厌写测试数据了)。其中应用到:场景法、等价

类划分法、因果图法、错误推测法、边界值法等方法

期望输出:该期望输出需查阅国标、行标以及使用用户的需求

3.测试题目:桌子

需求测试:查看国家相关标准。

功能:桌子是办公,或者放置用的,首先考虑桌子的面积大小是否适度.

界面:桌子的版面是否平滑,桌子有没有凹凸不平的地方

安全:桌子肯定有它的支撑点,若支撑点不稳,容易摔坏物品,使用起来也不方便.

易用:桌子的移动性好不,它的重量是否合适

可靠性:将桌子推倒后,再检查桌子是否很容易被损坏.

性能:将很重的物品放在桌子上,看它最大承受的重量是多少...

4.测试题目:洗衣机

功能测试:该洗衣机是否能正常的洗衣服

需求测试:查看洗衣机的使用说明书和安全说明书等

性能测试:使用时用电量如何,是否满足用户需求

界面测试:洗衣机的外观是否满足客户的需求

易用测试: 该洗衣机是否容易操作

兼用性测试:该洗衣机除了能洗衣服以外还能洗别的吗

安全性测试:该洗衣机通电以后人接触以后是否有电

负载测试:通过逐步增加系统负载,最终确定在什么负载条件下系统性能将处于崩溃状态,以此获得系统能提供的最大服务

压力测试:通过逐步增加系统负载,最终确定在什么负载条件下系统性能将处于崩溃状态,以此获得系统能提供的最大服务级别的测试。

稳定性测试:加到一定的衣服然后过一段时间看洗衣机是否正常洗

 

 

1、 接口和抽象类的区别:

(1)抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。

(2)抽象类要被子类继承,接口要被类实现。

(3)接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现。

(4)接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。

(5)抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。

(6)抽象方法只能申明,不能实现,接口是设计的结果,抽象类是重构的结果。

(7)抽象类里可以没有抽象方法

(8)如果一个类里有抽象方法,那么这个类只能是抽象类

(9)抽象方法要被实现,所以不能是静态的,也不能是私有的。

(10)接口可继承接口,并可多继承接口,但类只能单根继承。

(11)抽象类 和 接口 都是用来抽象具体对象的. 但是接口的抽象级别最高

(12)抽象类可以有具体的方法和属性, 接口只能有抽象方法和不可变常量。

(13)抽象类主要用来抽象类别,接口主要用来抽象功能。

(14)抽象类中,且不包含任何实现,派生类必须覆盖它们。接口中所有方法都必须是未实现的。

2、进程和线程的区别:

进程与线程的区别:(1)一个程序至少有一个进程,一个进程至少有一个线程。

(2)进程在执行过程中拥有独立的内存单元,而多个线程共享进程所拥有的内存。

(3)进程可以独立的运行,但线程不能独立执行,必须依存在进程中,由使用该进程的应用程序提供多个线程执行的控制。

3、   线程同步的方式:

临界区、事件、互斥量、信号量

4、    进程间的通信方式:

管道、有名管道、信号、信号量、消息队列、共享内存、套接字

5、    引用与指针的区别:

(1)   指针是一个实体,而引用仅是个别名。

(2)    引用使用时无需解引用(*),指针需要解引用。

(3)    引用只能在定义时被初始化一次,之后不可改变;指针可变。

(4)    引用没有Const,指针有const

(5)    引用不能为空,指针可以为空;

(6)    “sizeof引用得到的是所指向的变量(对象)的大小,而“sizeof指针”得到的是指针本身(所指向的变量或对象的地址)的大小。

(7)      和引用的自增(++)运算不一样。

(8)      在内存分配上,程序为指针变量分配内存区域,而引用不需要分配内存区域。

7、 C++中如何实现多态?

多态有动态多态、静态多态、函数多态和宏多态等。编程者常说的多态为动态多态,是基于继承机制和虚函数来实现的。C++中多态的3种实现方式:使用函数重载、使用函数模板、使用虚函数。

9、 STL中迭代器的范围:

迭代器有两个可以通过容器的begin()操作和end()操作获取。其中begin指向容器中的第一个元素,end指向容器中的最后一个元素的下一个位置即end所指向的并不是容器的元素。通常begin和end之间的范围就是迭代器的范围。

10、软件工程中的四大开发模型:

瀑布模型:

将软件生命周期划分为制定计划、需求分析、软件设计、程序编写、软件测试和运行维护等六个基本活动,并且规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。

瀑布模型有以下优点

1)为项目提供了按阶段划分的检查点。

2)当前一阶段完成后,您只需要去关注后续阶段。

3)可在迭代模型中应用瀑布模型。

4)它提供了一个模板,这个模板使得分析、设计、编码、测试和支持的方法可以在该模板下有一个共同的指导。

瀑布模型有以下缺点

1)各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量。

2)由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从而增加了开发风险。

3)通过过多的强制完成日期和里程碑来跟踪各个项目阶段。

4)瀑布模型的突出缺点是不适应用户需求的变化。

螺旋模型

原型模型

增量模型

11、 继承与多态的区别

封装只要通过类来实现。

继承概念的实现方式有三类:实现继承、接口继承和可视继承。实现继承是指使用基类的属性和方法而无需额外编码的能力;接口继承是指仅使用属性和方法的名称、但是子类必须提供实现的能力;可视继承是指子窗体(类)使用基窗体(类)的外观和实现代码的能力。

多态是由重载和覆盖实现。

       

阅读更多
换一批

没有更多推荐了,返回首页