我的毕业论文————面向对象的软件测试
面向对象的软件测试
作者:周仁丹
摘 要:如今,面向对象开发技术正大力地的推动着软件产业的快速发展。在保证软件产品质量的手段中,最有效、最重要的技术要数软件测试技术。然而,传统的测试技术和方法,对面向对象技术开发的的软件多少显得有些力不从心。鉴于此,提出了面向对象的测试技术!
在此,本文通过翻阅大量的文献,总结出着实有效的面向对象的软件测试技术。首先,阐明面向对象软件测试的基本概念;然后,分别讨论分析和设计模型测试技术、类测试技术、对象交互测试技术、类层次结构测试技术、面向对象系统测试技术;最后,对面向对象软件测试的实施进行小结。
关键词:面向对象;软件测试;类测试;对象交互;测试用例
Object-Oriented Software Test
Abstract:Now, Object-Oriented development technique is strongly pushing the fast development of the software industry.In the means of the assurance software product quality, most valid,the most important technique wants the few software test technique.However, the traditional test technique and method, the opposite develops toward the object technique of software how much seem to be some to lack the ability to do.Owing to this, put forward to the Object-Oriented test technology!
Here, this text passes to browse a great deal of cultural heritage, tallying up to really effectively Object-Oriented software test technique。First, clarify the basic concept of Object-Oriented software test;then, discuss respectively the Class test technique;a test technique,object hands over to with each other test the technique,a layer structure test technique, the distribute type object test technique and face to the object system test technique; finally,the implement that tests toward the object software in front carries on the sub-footing.
Key Words:Object-Oriented ;Software test;Class test;Object interact;Test case
目 录
引 言... 1
1. 面向对象的软件测试的基本概念... 2
2. 分析和设计模型测试技术... 3
2.1.分析和设计模型测试的内容... 3
2.2.分析和设计模型测试的方法... 3
3. 类测试技术... 4
3.1. 类测试的内容... 5
3.2. 类测试的时间... 5
3.3. 类测试的测试人员... 5
3.4. 类测试的方法... 6
3.5. 测试程度... 6
3.6. 构建类测试用例... 6
4. 类层次结构测试技术... 9
4.1. 分层、增量测试... 10
4.2 抽象类测试... 11
5.对象交互测试技术... 12
5.1.汇集类测试... 12
5.2.协作类的测试... 13
6.面向对象系统测试技术... 13
总 结... 15
参 考 文 献... 16
致 谢... 17
引 言
软件测试的发展历程 软件测试是伴随着计算机软件的产生而产生的。在早期软件开发的过程中,软件就是由程序员写的简单计算机程序代码。因而,软件测试的含义比较狭窄----测试等同于“调试”。软件测试的目的就是为寻找和纠正软件中的故障,这部分的工作常常由开发人员自己完成。
直到上世纪80年代早期,“质量”的号角才开始吹响。软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且包含软件质量评价的内容。软件开发人员和测试人员开始坐在一起探讨软件工程和测试问题。制定了各类标准,包括IEEE(Institute of Electrical and Electronic Engineers)标准、美国ANSI(American national Standard Institute)标准以及ISO(International Standard Organization)国际标准。1983年,Bill Wetzel在《软件测试完全指南》(Complete Guide of Software Testing)一书中指出:“测试是以评价一个程序或者系统属性为目标的任何一种活动。测试是对软件质量的度。”Myers和Wetzel的定义至今仍被引用。
到了2002年,Rick和Stefan在《系统的软件测试》(Systematic Software Testing)中对软件测试做了进一步定义:“测试是为了度量和提高被测软件的质量,对测试件进行工程设计、实施和维护的整个生命周期过程。”这些经典论著对软件测试研究的理论化和体系化产生了巨大的影响。
近20年来,随着计算机和软件技术的飞速发展,软件测试技术研究也取得了很大的突破。测试专家总结了很好的测试模型,比如著名的V模型、W模型等,在测试过程改进方面提出了TMM(Testing Maturity Model)的概念,在单元测试、自动化测试、负载压力测试以及测试管理等方面涌现了大量优秀的软件测试工具。
虽然软件测试技术的发展很快,但是其发展速度仍落后于软件开发技术的发展速度,使得软件测试在今天面临着很大的挑战。软件规模越来越大,功能越来越复杂,如何进行充分而有效的测试成为难题。尤其是面向对象的开发技术越来越普及,但是面向对象的测试技术却刚刚起步。
面向对象软件开发过程及其特点 面向对象的开发方法(简称OO)的基本思想认为,客观世界是由各种各样的对象组成的,每种对象都有各自的内部状态和运动规律,不同的对象之间的相互作用和联系就构成了各种不同的系统。故面向对象软件开发的工作过程为:
1. 调查、分析系统需求,建立一个全面、合理、统一的模型。
2. 在繁杂的问题域中抽象地识别出对象以及其行为、结构、属性、方法
3. 对象设计——即对分析的结果作进一步地抽象、归类、整理,并最终以范式的形式将它们确定下来。
4. 程序实现——即用面向对象的程序设计语言将上一步整理的范式直接映射(直接用程序语言来取代)为应用程序软件。
面向对象开发的特点是遵循一下三项原则:
1. 抽象原则(abstraction)——指为了某一分析目的而集中精力研究对象的某一性质,它可以忽略其它与此目的无关的部分
2. 封装原则(encapsulation)即信息隐藏——指在确定系统的某一部分内容时,应考虑到其它部分的信息及联系都在这一部分的内部进行,外部各部分之间的信息联系应尽可能的少。
3. 继承原则(inheritance)——指能直接获得已有的性质和特征而不必重复定义它们
1. 面向对象的软件测试的基本概念
2. 分析和设计模型测试技术
2.1.分析和设计模型测试的内容
分析和设计模型测试的重点是测试模型的完整性和一致性,其主要内容有:
2.2.分析和设计模型测试的方法
4. 对测试结果以及对模型的测试覆盖率(基于某中标准)进行评估。
1. 制订检查的范围和深度:范围将通过描述材料的实体或一系列详细的用例来定义。对小的项目来说,范围可以是整个模型。深度将通过指定须要测试的模型(MUT)的某种UML图的集合层次中的级别来定义。
2. 确定MUT产生的基础:除原始模型之外,所有的UMT的基础是前一开发阶段创建的一系列模型:比如,应用分析模型就是以域分析模型和用例模型为基础。起初模型则是基于所选择的一组人头脑里的知识。
3. 为每一个评价标准开发测试用例,标准在应用时使用基本模型的内容作为输入。这种从用户用例模型出发的方式对许多模型的测试用例来说是一个很好的出发点。
4. 为测量测试的覆盖率建立标准。比如对一个类图来说,如果图中每一个类都被测试到了,那么覆盖率就算不错了。
5. 使用合适的检查列表进行静态分析。将MUT与基本的模型相比较可以确定2个图型之间的连贯性。
采用指导性审查技术对分析和设计产生的文本进行正确性验证,是软件开发前期的关键性测试。
3. 类测试技术
类测试是由那些与验证类的实现是否和该类的说明完全一致的相关联的活动组成的。该类测试的对象主要是指能独立完成一定功能的原始类。如果类的实现正确,那么类的每一个实例的行为也应该是正确的。
3.1. 类测试的内容
3.2. 类测试的时间
3.3. 类测试的测试人员
3.4. 类测试的方法
类测试的方法有代码检查和执行测试用例。在某些情况下,用代码检查代替基于执行的测试方法是可行的,但是,和基于执行的测试相比,代码检查有以下两个不利之处:
2. 代码检查在回归测试方面明显需要更多的工作量,常常和原始测试差不多。
一旦确定了一个类的可执行测试用例,就必须执行测试驱动程序来运行每一个测试用例,并给出每一个测试用例的结果。
3.5. 测试程度
3.6. 构建类测试用例
1. 确定在表1中与前置条件形成相匹配的各个项目所指定的一系列前置条件的影响。
2. 确定在表2中与后置条件形成相匹配的各个项目所指定的一系列前置条件的影响。
3. 根据影响到列表中各个项目的所有可能的组合情况从而构造测试用例需求。一种简单的方法就是:用第一个列表中的每一个输入约束来代替第二个列表中每一个前置条件。
前置条件 |
影 响 |
True |
(true 、post) |
A |
(A、post) (not A、exception) * |
Not A |
(not A、post) (A、exception) * |
A and B |
(A and B、post) (not A and B、exception) * (A and not B、exception) * (not A and not B、exception) * |
A or B |
(A、post) (B、post) (A and B、post) (not A and not B、post) |
A xor B |
(not A and B、post) (A and not B、post) (A and B、exception) * (not A and not B、exception) * |
A implies B |
(not A、post) (B、post) (not A and B、post) (A and not B、exception) * |
if A then B else C endif |
(A and B、post) (not A and C、post) (A and not B、exception) * (not A and not C、exception) * |
注:①.A、B、C代表用OCL表示的组件。 ②.假如类说明中的保护性设计方法是隐式的,那么也必须对那些标记有*的测试用例进行阐述。如果保护性设计方法在类的说明中是显式出现的,那么测试用例也就确定了。 |
后置条件 |
影 响 |
A |
(pre ;A) |
A and B |
(pre ;A and B) |
A or B |
(pre ;A) (pre ;B) (pre ;A or B) |
A xor B |
(pre ;not A or B) (pre ;A or not B) |
A implies B |
(pre ;not A or B) |
if A then B else C endif |
(pre and * ;B) (pre and not * ;C) |
注:①.A、B、C代表用OCL表示的组件。 ②.对于“if A then B else C endif” 这个后置条件,假如测试用例不会对表达式A产生影响那么在用这个后置条件时,* = A else * 就是使得A为真的一个条件 |
4. 类层次结构测试技术
类的层次结构测试就是用来测试类的继承关系的技术,主要是用来测试层次关系的一系列类(包括父类和子类)。其测试的方法有用于测试子类的分层增量测试和用于测试父类的抽象类测试。
4.1. 分层、增量测试
C |
D |
Void op1 ( );Void op2 ( ); |
Void op2 ( );Void open ( ); |
Newvar type; |
说 明 子类D添加了一个新的实例变量(NewVar)和一个新的操作(newop( ))。D重载了C中定义的方法op2(),因为该操作在D中有新的规范或操作的实现 |
图1 类的派生及增量变化 |
由于D类是C类的子类,则所有用于C类的基于规范的测试用例也都适用于D类。那么,哪些继承的测试用例(用于子类的测试用例)适用于子类的测试,哪些又不必在子类中执行呢?要解决以上问题,可通过对子类的增量分析。可能情况如下:
1. D的接口中添加一个或多个新的操作,并且有可能D中的一个新方法实现一个新操作。新的操作引入了新的功能和新的代码,这些都需要测试。如果操作不是抽象的并且有具体的实现,那么为了合乎测试计划中的覆盖标准,需要添加基于规范和基于交互的测试用例。
2. 通过两种方式改变由C申明的操作的规范和实现:一.在D中改变那些在D中申明的操作规范。二.在D中覆盖那些在C中实现了某个操作并且被D继承了的方法。
3. 在D中添加一个或多个实例变量来实现更多的状态和属性。新添的变量最有可能与新的操作和重载方法中代码有关,而且对测试的处理也与他们有关。如果新的变量没有在任何地方使用,那么就不必做任何的变化。
4. 在D中改变类常量。类常量组成每个侧使用例的附加的后置条件,并且,“类常量句柄”在每个测试用例输出中是显示的。因此,如果类常量变化了,就需要重新运行所有继承的测试用例以验证常量句柄。
从基类派生出派生类时,不必为那些未经变化的操作添加基于规范的测试用例,测试用例能够不加修改的复用。如果测试的操作没有以任何方式加以修改,就不必运行这些测试用例中的任何一个。但是,如果一个操作的方法被间接的修改了,不但需要重新运行那些操作的任何一个测试用例,还需要运行附加的机遇实现的测试用例。
4.2 抽象类测试
对类基于执行的测试时,需要建构一个类的实例。然而,一个继承体系的根类通常是抽象的,许多编程语言在语义上不允许建构抽象类的实例。这位抽象类的测试带来了很大的困难。在此,提出三种测试抽象类的方法:
1. 需要测试的抽象类单独定义一个具体的子类。通过对具体子类创建的实例测试,来完成对抽象类的测试。这种方法的缺点是,如果不是用多层继承,抽象类的方法的实现就不能轻易的传递给抽象子类。但是大部分面向对象的编程语言都不支持多重继承,而且不提倡将多重继承用在这些方面。
2. 将抽象类作为测试第一个具体子孙的一部分进行测试。这种方法不需要开发额外的用于测试的目的类,但需要考虑到为每一个祖先提供恰当的、正确的测试用例和测试脚本方法,而增加了测试具体类的复杂性。
3. 以对用于测试目的的抽象类的具体版本作直接实现,尝试找到一种为类编写源代码的方法,从而使得该类可以做为一个抽象或具体类而很容易编译。然而,不管是基于编辑遗产方案还是基于条件编译的方案都没有产生好的结果。应为合成代码都很复杂,而且难以阅读,很容易出错。
5.对象交互测试技术
面向对象的软件是由若干对象组成的,通过这些对象的相续协作来解决某些问题。对象的交互和写作方式决定了程序能作什么,从而决定了这个程序执行的正确性。也许可信任的原始类的实例可能不包含任何错误,但是如果那个实例的服务部被其他程序组件正确的使用的话,那么这个程序也就包含了错误。因此,程序中对象的正确协作——即交互——对于程序的正确性是非常关键的。
对象的交互测试的重点是确保对象(这些对象的类已经被单独测试过)的消息传送能够正确进行。交互测试的执行可以使用嵌入到应用程序中的交互对象,或者在独立的测试工具(例如一个Tester类)提供环境中,交互测试通过使得该环境中的对象相互交互而执行。
根据类的类型可以将对向交互测试分为汇集类测试和协作类测试。
5.1.汇集类测试
汇集类指的是这样的一种类,这些类在他们的说明中使用对象,但是实际上从不和这些对象中的任何一个进行协作——即他们从不请求这些对象的服务。相反,他们会表现出以下的一个或多个行为:
1. 存放这些对象的引用(或指针),通常表现程序中的对象之间一对多的关系。
2. 创建这些对象的实例。
3. 删除这些对象的实例。
可以使用测试原始类的方法来测试汇集类,测试驱动程序要创建一些实例,作为消息中的参数被传送给一个正在测试的集合。测试用例的中心目的主要是保证那些实例被正确加入集合和被正确的从集合中移出,以及测试用例说明的集合对其容量有所限制。因此,每个对象的准确的类(这些对象是用在汇集类的测试中)在确定汇集类的正确操作是不重要的,因为在一个集合实例和集合中的对象之间没有交互。假如在实际应用中可能要加入40到50条信息,那么生成的测试用例至少要增加50条信息。如果无法估计出一个有代表性的上限,就必须使用集合中大量的对象进行测试。
如果汇集类不能为增加的新元素分配内存,就应该测试这个汇集类的行为,或者是可变数组这一结构,往往一次就为若干条信息分配空间。在测试用例的执行期间,可以使用异常机制,帮助测试人员限制在测试用例执行期间可得到的内存容量的分配情况。如果已经使用了保护设计方法,那么,测试系列还应该包括否定系列。即当某些即和已拥有有限的制定容量,并且有实际的限制,则应该用超过指定的容量限制的测试用例进行测试。
5.2.协作类的测试
凡不是汇集类的非原始类(原始累即一些简单的,独立的类,这些类可以用类测试方法进行测试)就是协作类。这种类在它们的一个或多个操作中使用其它的对象并将其作为他们的实现中不可缺少的一部分。当接口中的一个操作的某个后置条件引用了一个协作类的对象的实例状态,则说明那个对象的属性别使用或修改了。由此可见,写作类的测试的复杂性远远高于汇集类或者原始类测试的复杂性。鉴于协助类的测试需要根据具体的情况来定,而具体情况复杂多变,在此,就方便不论述了。
6.面向对象系统测试技术
通过类测试、对象交互测试、类层次结构测试,仅能保证软件开发的功能得以实现。但不能确认在实际运行时,它是否满足用户的需要,是否大量存在实际使用条件下会被诱发产生错误的隐患。为此,对完成开发的软件必须经过规范的系统测试。换个角度说,开发完成的软件仅仅是实际投入使用系统的一个组成部分,需要测试它与系统其他部分配套运行的表现,以保证在系统各部分协调工作的环境下也能正常工作。
系统测试应该尽量搭建与用户实际使用环境相同的测试平台,应该保证被测系统的完整性,对临时没有的系统设备部件,也应有相应的模拟手段。系统测试时,应该参考OOA分析的结果,对应描述的对象、属性和各种服务,检测软件是否能够完全"再现"问题空间。系统测试不仅是检测软件的整体行为表现,从另一个侧面看,也是对软件开发设计的再确认。
这里说的系统测试是对测试步骤的抽象描述。它体现的具体测试内容包括:
1. 功能测试:测试是否满足开发要求,是否能够提供设计所描述的功能,是否用户的需求都得到满足。功能测试是系统测试最常用和必须的测试,通常还会以正式的软件说明书为测试标准。
2. 强度测试:测试系统的能力最高实际限度,即软件在一些超负荷的情况,功能实现情况。如要求软件某一行为的大量重复、输入大量的数据或大数值数据、对数据库大量复杂的查询等。
3. 性能测试:测试软件的运行性能。这种测试常常与强度测试结合进行,需要事先对被测软件提出性能指标,如传输连接的最长时限、传输的错误率、计算的精度、记录的精度、响应的时限和恢复时限等。
4. 安全测试:验证安装在系统内的保护机构确实能够对系统进行保护,使之不受各种非常的干扰。安全测试时需要设计一些测试用例试图突破系统的安全保密措施,检验系统是否有安全保密的漏洞。
5. 恢复测试:采用人工的干扰使软件出错,中断使用,检测系统的恢复能力,特别是通讯系统。恢复测试时,应该参考性能测试的相关测试指标。
6. 可用性测试:测试用户是否能够满意使用。具体体现为操作是否方便,用户界面是否友好等。
7. 安装/卸载测试(install/uninstall test)等等。
系统测试需要对被测的软件结合需求分析做仔细的测试分析,建立测试用例。
总 结
2. 从测试第一个模型开始应用指导性检查,直到模型不再更新。
3. 创建测试用例时使用SYN-PATH分析以确保覆盖所有可能的故障。
4. 当需要运行的测试多于现有资源所能运行的测试用例的测试时,一定要考虑分层增量测试。
由于面向对象软件的复杂性,本文还有许多的面向对象软件测试的问题还没有讨论到。比如,分布式系统的测试、对象的多态性和动态绑定的测试等等。因此有待于进一步研究
参 考 文 献
[1] McGregor.J.D.等著;杨文宏等译.《面向对象的软件测试》[M].机械工业出版社,2002.8.
[2] BinderRobertV.等著;华庆一,陈莉等译.《面向对象系统的测试》[M].北京:人民邮电出版社,2001
[3] 赵元聪,朱三元.面向对象软件测试的认识[J].计算机应用与软件,1996,17(3):1~4
[4] 郭菏清主编.《现代软件工程——原理,方法,与管理》[M].广州:华南理工大学出版社,2004.2(2005.1)
[5] 齐治昌等编著.《软件工程》[M].北京:高等教育出版社,2001.8(2002重印)
[6] 郑人杰等编著.《基于软件能力成熟度模型(CMM)的软件过程改进——方法实施》[M].北京:清华大学出版社,2003
[7] 周梦醒.面向对象软件的测试[OL].http://www.m1570.com/Article/article_view.asp?id=159,2006.2
[8] 姬莹,罗钧日,钟联炯.面向对象软件测试主要问题的探讨[J].西安工业学院学报,2001,21(1):31237
[9] 杨小平,王胜开.面向对象软件测试探讨[J].计算机工程与应用,2000,36(1):44246.
[12] DUSTINE,RASHKAJ,PAULJ.Automated Software Testin[M].Addison2Wesley,1999.
[13] 作者不详.使用面向对象的思想进行测试(游戏测试相关)[OL].http://www.iceshi.com/html/2006-3/200634044842188.htm,2006-3-4
[14] 张海藩.软件工程导论[M].北京:清华大学出版社,1998.
[15] 张毅坤.面向对象软件测试的特点及方法 [ J ] .西安理工大学学报, 2002 , 18(4) : 361 365 .
我的毕业论文————面向对象的软件测试相关推荐
- 一篇毕业设计论文 | 面向对象的软件测试
[文章摘要] 面向对象的软件测试摘 要: 如今,面向对象开发技术正大力地的推动着软件产业的快速发展.在保证软件产品质量的手段中,最有效.最重要的技术要数软件测试技术.然而,传统的测试技术和方法,对面向 ...
- 面向对象的软件测试技术
相关知识点-面象对象(=Object Oriented)技术 1. 对象和类 l 面象对象的编程语言:以对象为中心,以消息为驱动,程序=对象+消息 l 类是一种新的数据类型,是设计的核心,是通过抽象数 ...
- 付费计算机毕业论文毕业设计课程设计
付费资料 驱动器 F 中的卷是 资料 卷的序列号是 6B36-8880 F:/论文/计算机毕业设计 的目录 [.] [..] -商贸有限公司销售管理系统(论文+源代码+答辩PPT).rar 1.ppt ...
- 软件测试黑马程序员课后答案_软件测试教程课后答案
软件测试教程课后答案 [篇一:软件测试习题答案] > 一.简答题和应用题: 1 测试人员面试题 01 .为什么要在一个团队中开展软件测试工作? 因为没有经过测试的软件很难在发布之前知道该软件的质 ...
- 面向对象的类测试技术研究
面向对象的类测试技术研究 摘要:类是面向对象软件的基本构成单元,类测试是面向对象软件测试的关键.从基于服务的.基于对象动态测试模型的.基于流图的以及基于规约的四个方面论述了类测试的思想和方法. 关键词 ...
- 这应该是最全的软件测试工程师必读书籍
测试入门 软件测试(第2版) Software Testing (2e), Ron Patton 一本测试入门的好书,较全面地介绍了各种测试领域和方法,为测试新手提供了正确的观念和宽泛的基础. 软件 ...
- 软件测试初学者精华(一)
转自http://blog.csdn.net/gslcn/article/details/1611283 作者: life0 发表日期: 2006-08-04 09:56 文章属性: 转 1.测试新手 ...
- 软件测试教程教学大纲,软件测试教学大纲
<软件测试教学大纲>由会员分享,可在线阅读,更多相关<软件测试教学大纲(4页珍藏版)>请在人人文库网上搜索. 1.软件测试教学大纲一.软件测试的基本概念掌握软件测试的定义与目标 ...
- 软件测试入门基础知识汇总
第一部分:软件评测知识 1. 软件质量与软件测试 软件测试:在规定条件下对程序进行操作,以发现错误,对软件质量进行评估,包括对软件形成过程的文档.数据以及程序进行测试 软件质量:软件特性的总和,软件 ...
- 软件测试工程师必读图书
测试入门 软件测试(第2版) Software Testing (2e), Ron Patton 一本测试入门的好书,较全面地介绍了各种测试领域和方法,为测试新手提供了正确的观念和宽泛的基础. ...
最新文章
- 总在说SpringBoot内置了tomcat启动,那它的原理你说的清楚吗?
- 清华大学计算机博士,带你搞定大厂面试题
- NDK断点无法调试Unable to detect application ABI's
- php curl errno 3,PHP curl_errno函数
- 使用饼图_使用R做饼图展示单细胞的cluster的比例
- Npm install failed with “cannot run in wd”
- Spark源码分析之SparkContext
- 服务器添加管理员隐藏账号,绝招:隐藏管理员账号 三分钟搞定
- 用python画玫瑰花-用python画一朵玫瑰花
- android 访问本地image url_微信图片无法通过 WXSS 获取,可使用网络图片或 base64或image...
- 现在维吾尔语在计算机中发展,维吾尔语手写体在线计算机识别技术研究.doc
- Mysql 如何设置字段自动获取当前时间
- DoIP协议:通用DoIP首部否定确认码02和03的区别
- Xmind 8 Pro破解版安装激活教程(Windows版)
- 空白脂质体冻干粉制备以及荧光素修饰空白脂质体的应用
- 【MineCraft】-- 学习我的世界Mod制作引雷附魔书与事件
- VirtualBox增强功能包
- 北川中学教师群体:一切都是为了学生
- BitXHub跨链交易的流程
- The Thirty-fifth Of Word-Day
热门文章
- 如何下载:卫星地图高清2018,谷歌地图高清卫星地图,最新Google卫星地图
- 【Python量化】蒙特卡洛模拟法预测股价走势
- 计算机网络知识竞赛没有分数,计算机网络知识竞赛.ppt
- android手势密码csdn,LeetCode 351. 安卓系统手势解锁(回溯)
- 盘点微信的前世今生,微信成功的必然和偶然
- js获取当前路径的url
- Android系统最高的电视盒子,2019年电视盒子排行榜:市面上性能最强的电视盒子大盘点...
- SSM框架的原理和运行流程
- 2019年南京大学计算机考研复试机试真题
- 虚幻引擎UE4源码编译安装(x86,arm64平台)