已阅读5页,还剩70页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ad i s s e r t a t i o ns u b m i t t e dt og u a n g d o n gu n i v e r s i t yo ft e c h n o l o g yf o r t h ed e g r e eo fm a s t e ro fe n g i n e e r i n gs c i e n c e r e s e a r c ha n da p p l i c a t i o no nm u t a t i o nt e s t i n gf o r c o m p o n e n t c a n d i d a t e :l i uc h a n g y o u s u p e r v i s o r :a s s o c i a t ep r o f x uh a i s h u i m a y2 0 1 0 f a c u l t yo fc o m p u t e r g u a n g d o n gu n i v e r s i t yo ft e c h n o l o g y g u a n g z h o u ,g u a n g d o n g ,p r ic h i n a 。5 10 0 9 0 摘要 摘要 近年来,基于构件的软件开发( c b s d ) 技术发展迅速,越来越受到业界的欢迎。 在开发一个构件化软件时,只需把一个个现成的构件进行组装即可完成一个应用系统。 c b s d 能够取得成功的前提是已经开发出了高质量的构件,在开发构件时需要对构件 进行测试,在使用构件时仍然需要对构件的交互情况进行测试。因此,如何对构件进 行有效测试以保证其质量,也成为软件工程领域研究的热点问题。 目前的构件测试方法大多是从传统的面向过程的软件测试技术和面向对象的软件 测试技术演化而来,并结合构件的特点提出的一些测试方法。本文站在构件使用者的 角度做测试研究,而面向构件使用者的测试最大的问题就是构件的源代码不可得,因 此需要尽可能多地获取测试相关的构件信息,然后根据这些构件规格说明信息来设计 测试用例和测试计划。在实践中,可以从构件开发者提供的规格说明文档中获取,也 可以从已发布的构件中获取。 由于构件使用者在使用构件时都是通过访问构件的接口来完成对构件功能的调用, 因此对构件的测试也要从构件提供的接口入手。通过对构件的接口方法进行参数传递 和调用,观察构件的行为是否与需求规格说明一致。这一过程中设计充分的测试用例 成为构件测试的关键任务,生成测试用例的任务是通过变异测试来完成的。在本文的 研究中把遗传算法应用在变异测试的两个方面:一是应用到构件接口变异上去,通过 交叉和变异操作符生成构件的变异体,为了更具通用性,在描述接口变异方法时使用 了i d l ;二是在根据构件规格说明信息生成初始的测试用例集后,运用遗传算法的选 择、交叉和变异操作符来优化测试用例集,在保证相同充分度的情况下减少测试用例 的数量。在实施测试时,组建构件测试需要的环境,把测试用例运行在构件及其变异 体上,通过变异测试的迭代执行过程补充和优化测试用例,直到得到可接受充分度的 测试用例集。有了测试用例后,就可以对构件进行测试以验证其功能了。本文给出了 一个基于接口变异的构件测试流程图,并详细说明了构件测试的步骤和方法。文章最 后,通过实验,对j 2 e e 平台的采购系统中的一个e j b 构件进行测试,用以验证所研究 的构件测试方法。 关键词:构件测试;接口变异;遗传算法;测试用例 c o m p o n e n tt e s t i n g ,s e c o n d l y , r u n st e s t c a s e so nc o m p o n e n ta n di t sm u t a n t s ,f i n a l l y , g e t s 1 i i 目录 摘要i a j 玉;t r a c t i i 目录v c o n t e n t s v i i i 第一章绪论1 1 1 研究背景和意义1 1 2 构件测试的研究概况2 1 2 1 常见的构件测试方法2 1 2 2 构件测试面临的问题5 1 3 本文研究的目标和内容6 1 3 1 本文的研究目标6 1 3 2 本文的研究内容6 1 4 本文的章节结构和安排8 第二章软件变异测试9 2 1 软件测试的基础9 2 1 1 软件测试的目标与准则9 2 1 2 软件测试的发展历程1 0 2 2 变异测试概述1 1 2 2 1 变异测试过程描述1 1 2 2 2 变异测试的例子1 3 2 2 3 程序变异算子1 4 2 3 测试充分度评估15 2 3 1 变异测试的充分度1 5 2 3 2 软件测试覆盖类型l5 2 4 变异测试存在的问题和解决方法1 7 2 5 本章小结18 v 大学硕士学位论文 4 2 2 测试用例的生成3 2 4 2 3 接口变异测试流程3 3 4 3 构件接e l 变异测试充分度评价3 4 4 4 本章小结3 5 第五章j 2 e e 采购系统构件测试应用。3 6 5 1j 2 e e 协议供货电子管理平台介绍3 6 5 1 1 系统概要3 6 5 1 2 系统的技术特点3 7 5 1 3 系统使用到的构件技术3 7 5 1 4j a v a 领域的构件3 8 v l 9 9 9 0 l 1 2 3 3 4 4 5 6 6 6 7 8 9 0 l l 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 目录 5 2e j b 构件基础3 9 5 2 1e j b 构件模型3 9 5 2 2e j b 构件介绍4 l 5 3e j b 构件接1 2 变异测试流程4 2 5 4 测试信息的提取4 4 5 4 1 获取x m l 文件数据信息4 4 5 4 2 获取类文件信息4 6 5 4 3 获取用户定制的规约信息4 6 5 5 构件测试用例的生成4 7 5 5 1 初始测试用例的生成4 7 5 5 2 运用遗传算法优化测试用例4 9 5 6e j b 构件变异体的生成5 0 5 7 执行构件测试工5 2 5 7 1 组建测试环境5 2 5 7 2 输入数据运行测试5 4 5 7 3 测试充分度评价5 4 5 8 本章小结5 5 总结和展望5 6 参考文献5 7 攻读学位期间发表的论文6 0 独创性声明6 1 致谢6 2 v i i c o n t e n t s a b s t r a c t ( c h i n e s e ) ”i a b s t r a c t “i i c o n t e n t s ( c h i n e s e ) v c o n t e n t s v i i i c h a p t e r1p r e f a c e 1 1 1b a c k g r o u n da n ds i g n i f i c a n c eo f r e s e a r c h ”1 1 2r e s e a r c ho v e r v i e wo f c o m p o n e n tt e s t i n g 2 1 2 1c o m m o nm e t h o d sf o rt e s t 访gc o m p o n e n t 2 1 2 2p r o b l e m si nc o m p o n e n tt e s t i n g 5 1 3 ( 沁a la n dc o n t e n to f r e s e a r c h 6 1 3 1g o a lo f r e s e a r c h 6 1 3 2c o n t e n to f r e s e a r c h 6 1 4c h a p t e rs t r u c t u r eo f t h i sp a p e r 8 c h a p t e r2m u t a t i o nt e s t i n go f s o f t w a r e 9 2 1b a s i co f s o f t w a r et e s i n g 9 2 1 1g o a l a n dr u l eo f s o f t w a r e t e s i n g 9 2 1 2h i s t o r yo fs o f t w a r et e s t i n g 1 0 2 2o v e r v i e wo f m u t a t i o nt e s t i n g 1 1 2 2 1p r o c e s so f m u t a t i o nt e s t i n g 1 1 2 2 2e x a m p l e so f m u t a t i o nt e s t i n g 1 3 2 2 3m u t a t i o no p e r a t o r 1 4 2 3e v a l u a t i n ga d e q u a c yo f t e s t i n g 1 5 2 3 1a d e q u a c yo f m u t a t i o n t e s t i n g 1 5 2 3 2c o v e r a g et y p eo f s o f t w a r et e s t i n g ”1 5 2 4p r o b l e m a n ds o l u t i o no f m u t a t i o n t e s t i n g 1 7 2 5s u m 删1 8 c h a p t e r3g e n e t i ca l g o r i t h m s a n da p p l i c a t i 。n 1 9 v i i i c o n t e n t s 3 1o v e r v i e wo f g e n e t i ca l g o r i t h m s 1 9 3 1 1b a s i co f g e n e t i ca l g o r i t h m s 1 9 3 1 2p r o c e s so f g e n e t i ca l g o r r h m s 2 0 3 1 3c h a r a c t e ro f g e n e t i ca l g o r i t h m s 2 1 3 2o p e r a t o ro f g e n e t i ca l g o r k h m s 2 l 3 3f l a wg r a p ho f g e n e t i ca l g o r “h m s 2 2 3 4a p p l y i n gg e n e t i ca l g o r i t h m st om u t a t i o nt e s t i n g 2 3 3 4 1a p p l y i n gg e n e t i ca l g o r i t h m st om u t a t i o nt e s t i n g 2 3 3 4 2a p p l y i n gg e n e t i ca l g o r i t h m st om u t a n t 2 4 3 4 3a p p l y i n gg e n e t i ca l g o r i t h m st ot e s tc a s e s 一2 4 3 5s u m m a r y 2 5 c h a p t e r4r e s e a r c ho ni n t e r f a c em u t a t i o nt e s t i n g f o rc o m p o n e n t 2 6 4 1b a s i co f c o m p o n e n tt e s t i n g 2 6 4 1 1c h a r a c t e ro f c o m p o n e n ta b o u tt e s t i n g 2 6 4 1 2m e m b e ra n ds o r to f c o m p o n e n tt e s t 啦一2 7 4 1 3s p e c i f i c a t i o no fc o m p o n e n t 2 8 4 2i n t e r f a c em u t a t i o nt e s t i n gf o rc o m p o n e n t 2 9 4 2 1i n t e r f a c em u t a t i o nt e s t i n g 一3 0 4 2 2g e n e r a t i n gt e s tc a s e s 3 2 4 2 3p r o c e s so f i n t e r f a c em u t a t i o nt e s t i n g 3 3 4 3e v a l u a t i n ga d e q u a c yo f i n t e r f a c em u t a t i o nt e s t 堍f o rc o m p o n e n t 3 4 4 4s u m m a r y 3 5 c h a p t e r 5a p p k c a t i o no ft e s t i n gf o rc o m p n e n ti nj 2 e ep u r c h a s i n gs y s t e m 3 6 5 1i n t r o d u c t i o no f j 2 e ep u r c h a s i n gs y s t e m 3 6 5 1 1o v e r v i e wo fp u r c h a s i n gs y s t e m 3 6 5 1 2t e c h n o l e d g eo f p u r c h a s i n gs y s t e m 3 7 5 1 3c o m p o n e n tt e c h n o l e d g eo f p u r c h a s i n gs y s t e m 3 7 5 1 4j a v ac o m p o n e n t 3 8 5 2b a s c io f e j bc o m p o n e n t 3 9 i x 5 2 1m o d e lo f e j bc o m p o n e n t 3 9 5 2 2i n t r o d u c t i o no f e j bc o m p o n e n t 4 l 5 3p r o c e s so f i n t e r f a c em u t a t i o nt e s t i n gf o re j bc o m p o n e n t ”4 2 5 4g e t t i n gi n f o r m a t i o nf o rt e s t i n g j 4 4 5 4 1g e t t i n gx m lf i l ei n f o r m a t i o n 4 4 5 4 2g e t t i n gc l a s sf i l ei n f o r m a t i o n 4 6 5 4 3g e t t i n gs p e c i f i c a t i o ni n f o r m a t i o n 4 6 5 5g e n e r a t i n gt e s tc a s e sf o rc o m p o n e n t 4 7 5 5 1g e n e r a t i n gi n i t i a lt e s tc a s e sf o rc o m p o n e n t 4 7 5 5 2a p p l y i n gg e n e t i ca l g o r i t h m st oo p t i m i z et e s tc a s e s 4 9 5 6g e r e r a t i n gm u t a n t sf o re j bc o m p o n e n t 5 0 5 7t e s t i n gc o m p o n e n t 5 2 5 7 1c o n s t r u c t i n ge n v i r o r m m e to f t e s t i n g “5 2 5 7 2t e s i n gc o m p o n e n t 5 4 5 7 3e v a l u a t i n ga d e q u a c y 5 4 5 8s u i 珈唧5 5 s u m m a r ya n df u t u r ew o r k “5 6 r e f e r e n c e s 5 7 p u b l i c a t i o n sd u r i n gm a s t e r ss t u d i e s 6 0 o r i g i n a lc r e a t i o nd e c l a r a t i o n ”6 1 a c k n o w l e d g e m e n t s 6 2 x 1 1 研究背景和意义 近年来,基于构件的软件开发( c o m p o n e n tb a s e ds o t t w a r ed e v e l o p m e n t ,c b s d ) 逐 渐发展起来,且越来越受到业界的欢迎。与传统的软件开发过程不同,c b s d 开发一 个系统可以由现成的构件组装而成,而不必一切都从头开发。这一变化大大提高了软 件开发的效率。使用可复用构件来构建软件系统,使得开发变得高效,软件产品的可 靠度也得到提高,同时对软件产品的维护需求也大大减少了。虽然构件的设计开发和 维护是一个复杂的过程,但是从长远的角度看,这种可复用的软件体系结构是经济而 且可靠的。可以说,c b s d 是软件工业化生产的必由之路。 目前对构件定义还没有统一的说法。根据计算机百科全书中的定义招,构件是 软件系统中具有相对独立功能、可以明确辨识、接口由契约指定、和语境有明显依赖 关系、可独立部署、可组装的软件实体。构件根据其形态可以分为三类一:( 1 ) 以源代 码形式存在的构件。( 2 ) 运行时构件,即构件源代码编译后的二进制文件、文件包、 类库等形式的构件,如d l l ,c l a s s ,j a r 等。( 3 ) 文档构件,即不能执行的构件,可能 是模型和规约,一般以文档的形式进行描述。 由于构件化软件系统的质量依赖于构件的质量,任何一个构件都可能对复用了该构 件的系统产生波及和影响。因此,构件的有效性和质量控制对于构件的提供者和使用 者都至关重要。为了验证构件的质量,构件提供者必须花费很大的丌销对所有的构件 进行测试并实施严格的质量保证过程。构件的使用者必须在复用第三方构件之前,通 过良好定义的过程对这些构件进行评估和验证。 进入2 0 世纪9 0 年代后,许多软件组织开始使用可复用软件构件来构造大型的信息 系统以降低开发成本和缩短产品的生产周期。与此同时,更多的人注意到软件构件测 试和构件化软件测试的问题。在过去的几十年罩,许多人在基于构件的软件开发方法 上做出了很多努力,他们中的大多数人关注基于构件的软件丌发过程以及分析和设计 模型;只有部分研究人员发表了有关可复用构件测试和构件化软件测试问题解决方案 的论文以及其它的研究成果。 当前,基于构件的软件开发和构件技术不仅给创建构件的方法带来了改变,而且还 广东工业大学硕士学位论文 为软件构件引入了新的特点和属性。这种改变使得软件开发和面向创建 ( c o n s t r u c t o r i e n t e d ) 变为面向复用( r e u s e o r i e n t e d ) 。这些新的特点和属性又为构件 和构件化软件的测试带来了新的需求、问题和挑战。另外,面向复用的软件开发也引 起了人们对构件测试和构件化软件测试的关注。如果人们打算在各种软件项目、产品 和环境中使用软件构件,那么就需要新的方法来测试和维护软件构件以保证它们的高 可靠性和可复用性。 1 2 构件测试的研究概况 目前,国内外对构件测试的研究已经有了一些成就,比如已经研究出了一些构件测 试方法,但是同时构件测试依旧面临一些问题。 1 2 1 常见的构件测试方法 1 内置测试法 所谓内置测试法( b u i l t i nt e s t ,b i t ) ,就是通过为构件增加一种“测试维护 模 式,在该模式下可以激活一些专门为测试构件而书写的代码,从而方便构件的测试。 使用步骤如下: ( 1 ) 将b i t s 作为成员函数写入源代码,他与对象中的构造和析构标准函数具有相 同的语法功能。 ( 2 ) 设置j 下常与测试维护两种模式来确定程序的行为及b i t 的激活,即b i t s 在 正常模式下不被激活,而在测试维护模式下被激活。 ( 3 ) b i t s 执行时,会自动报告测试结果。 b i t 将测试作为软件的内在固有属性,增强了软件系统中自包含的概念。b i t 构件 可以继承和复用,极大地加强了软件的可维护性。很明显,内置测试法需要对源代码 进行处理,因此这种测试方法适合构件开发者。 2 测试工作台 该方法基于如下假设:由于构件开发者已经完成了对构件的测试,因此针对构件使 用者而言,可以全部或部分地省略单元测试阶段,但在构件集成时仍需考察构件的功 能。因此,该方法提出了个工具构件测试工作台( c o m p o n e n tt e s tb e n c h , c t b ) , 2 第一章绪论 以方便对构件功能的考查,其主要步骤如下: ( 1 ) 写一个描述构件实现、实现接口以及用于该接口的测试集的测试规约。 ( 2 ) 从规约中生成测试操作。执行一次测试需要经过一系列称之为测试操作的步 骤。这些测试操作主要针对构件中的一个方法,因此可以说,一个测试操作就是一个 方法调用序列,它标记了规约的版本。 ( 3 ) 用i r t b ( i n s t r u m e n t e dr u n t i m es y s t e m ) 工具执行测试操作,测试操作也可以 运行在任何j a v a 的标准虚拟机上,或者以c 或c + + 代码编译和执行。 ( 4 ) 测试的运行结果经过分析后被分为:确定、强接受、弱接受、未决、中间和 未知。 c t b 给出了测试生成和测试执行过程,使得构件开发者可以在开发环境中生成测 试,构件使用者可以在某些目标环境中验证构件功能,当构件修改后,构件开发者和 构件使用者都可以进行回归测试。c t b 的特点是将构件和相关的测试耦合在一起,包 括测试生成和测试执行过程,可以使用规约来构造基本的测试用例,同时还可以分析 代码并进一步识别应该如何测试,并提供了多种生成测试技术,包括手工、计算机辅 助和自动化方式,提高了系统的灵活性。用户无需运行测试操作,可以使用符号执行 来得到并存储测试操作数据。 3 元数据法 在使用构件时,最急切的问题就是缺乏构件信息。h a r r o l d 曾经从构件开发者和构 件使用者来两个不同角度出发,阐述了程序切片、控制依赖分析、数据流等分析和测 试技术,提出这些技术的结果可以作为构件的摘要信息( s u m m a r yi n f o r m a t i o n ) 来帮助 构件软件测试。 由于知识产权和商业私密信息的问题,构件使用者不能从构件开发者那里获取源代 码。元数据使构件开发者可以提供他想要提供的信息,那么构件使用者无需知道构件 的私密信息就能够完成他要执行的任务。对一个给定的构件而言,任何软件工程的制 品都可以是元数据,元数据使用一种标准方法和构件包在一起的。元数据的类型主要 依靠构件使用者的特定需求,而这个需求是不断变化的。这就要求有一种通用的方法 束提供和检索构件信息。对构件开发者而言,提供构件信息的能力决定了该构件是否 能被构件使用者选择、是否能被正确使用。因此,构件丌发者和构件使用者同样需要 构件的额外信息。元数据采用了m i m e ( m u l t i p u r p o s ei n t e m e tm a i le x t e n s i o n ) 类似的 据以供构件使用者使用。构件使 ( 2 ) 获取构件的元数据,用来帮助测试系统中的构件。 元数据描述了构件的静态特性和动态特性,增加了程序分析的精确性。元数据可以 根据构件使用者的功能要求做相应改变,体现了存储信息方法的灵活性,并提供了构 件定制的完整考虑。该方法为构件使用者提供了合适的查询便利,因此测试可以以一 种系统化和便利的方式进行。但是该方法需要开发一种元数据的标准概念。要想让所 有的第三方构件开发者都遵循一种元数据附件的标准格式是很困难的,到目前为止, 该方法只用小程序进行过测试。 4 构件交互图 基于构件的控制依赖和数据依赖,该方法可用于主要检测构件接口处的错误和构件 间交互引起的失效。如果每个接口异常及其每次的调用激活、每条上下文敏感路径和 内容敏感路径至少执行一次,就说一个构件软件系统被“充分测试 了。如果能够覆 盖所有的接口和事件,就有把握进行构件之间的基本交互。此方法定义调用一个接口 产生一个事件,一个事件的生成需要调用一个构件的接口,一个事件的生成会触发位 于同一或不同构件内的另一个构件。构造构件交互图( c o m p o n e n ti n t e r a c t i o ng r a p h , c i g ) 的算法,其输入和输出是一组需要测试的路径p 的集合,这组路径是用深度优先搜索 生成。该技术利用静念和动态信息来设计测试用例,还提供了几种确定测试充分性的 准则。基于所有接口和所有事件的准则来选择测试用例简单有效,然而它们只能提供 某种程度的可靠性。为了进一步提高系统质量,使用了所有上下文敏感依赖部分上下 文敏感依赖准则。c i g 可以处理c o m d c o m 、c o r b a 、e j b 这3 种构件技术。该方 法可用于所有类型的构件系统,并不依赖于源代码的知识。 5 基于u m l 的构件集成测试 在基于u m l 的软件构件模型中,通常的基于u m l 的软件模型和目标测试模型之 间存有差别,这是因为通常的u m l 软件构件模型主要目标是构件的设计和实现,而没 有包含充分的测试信息1 。运用u m l 时序图和协作图来得到系统中接口相互作用产生 的错误,这种方法把基于u m l 的开发过程与测试过程结合起来。首先根据时序图来得 4 第一章绪论 到正常和非正常事件流,通过协作图来得到并发事件的事件流,然后根据构件的信息 传递模式把时序图和协作图划分成自动系统功能( a u t o m a t i cs y s t e mf u n c t i o n ) 单元,据 此得到完整的测试模型,然后根据a 1 1 e d g e 判断选择测试用例。 这种方法假设每个构件都进行了充分的单元测试,不再包含错误,因此把构件看作 黑盒。测试用例的选择还有待探讨,以保证测试的充分性。有可能实现自动化测序, 但目前尚未做到。 除了以上介绍的测试方法外,构件测试方法还有构件方法序列、形式化测试需求、 第三方验证框架、接口探查等,每种测试方法各有特点。 1 2 2 构件测试面临的问题 与传统的软件测试不同,构件本身的特性为构件化软件和构件测试带来了新的挑 战,构件测试有以下问题。 异构性( h e t e r o g e n e i t y ) :构成系统的构件可以用不同编程语言实现,运行在不同 的平台上。此性质提供了高度的可扩展性和灵活性,并对构件的互操作性提出了较高 的要求。既然每种编程语言、编译器、操作系统和机器架构都有处理数据的唯一方法, 对不同的接收构件而言,从一个构件传到另一个构件的数据可能有不同的含义。 源代码的可得性( s o u r c ec o d ea v a i l a b i l i t y ) :c o t s ( c o m m e r c i a l 0 i f - t h e s h e i f ) 构件通常以二进制形式交付,不包括源代码。 演化性( e v o l v a b i l i t y ) :基于构件系统的即插即用特性允许构件无须再编译或再 配置就可以动态升级。构件升级或增加新构件会经常发生,每次变化都会带来潜在的 新问题。除了上述由于构件内在特性带来的困难,构件软件系统还会遇到一些其他问 题,如分布式系统中的同步问题、规约失败、设计缺陷和基于代码的错误。然而在某 种程度上,构件的使用降低了软件系统的易测试性。为了保证构件软件系统的质量和 可靠性,应该区分复用不同构件对测试带来的不同影响。 复用不同项目开发的构件:如果专门为某个项目或应用开发一个构件而没有复用 的意图,测试过程不会有什么异样。如果该构件将被复用,则对构件的预期使用信息 通常会影响测试用例的选择。不同的用户看待构件的视图不同,在系统中使用构件的 侧重点也不同,因此一个被复用构件在不同环境中都必须进行新一轮的测试,即为某 个项目开发的构件不能不经测试就应用到另一个项目。 广东工业大学硕士学位论文 复用不同级别用户开发的构件:对于这种构件,开发部门的测试人员只能设想尽 可能多的场景进行测试,但现实情况千变万化,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 景区合作开发经营合同范例
- 2024年智慧城市公共安全监控网络合同
- 2024年度多媒体跨平台游戏合作开发合同模板3篇
- 2024版养老产业承包招商合同范本3篇
- 2024年度餐饮店会员管理系统服务合同
- 2024年度绿植花卉电商平台运营合同3篇
- 学校绿化施工合同范例
- 2024年度店面合作品牌推广协议3篇
- 鱼池施工合同范例
- 2024年企业内退员工合同终止及补偿协议书3篇
- 02565+24273中医药学概论
- 2023年中央纪委国家监委机关直属单位招聘工作人员考试真题
- 2024-2025学年度教科版初中物理八年级上册期末模拟卷(含答案)
- 《旅游概论》考试复习题库(附答案)
- 1000亩水产养殖建设项目可行性研究报告
- 量子计算与区块链
- 微电子器件期末复习题含答案
- 广东珠海市驾车冲撞行人案件安全防范专题培训
- 2022版ISO27001信息安全管理体系基础培训课件
- 广东省深圳市宝安区多校2024-2025学年九年级上学期期中历史试题
- 广州市海珠区六中鹭翔杯物理体验卷
评论
0/150
提交评论