版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、LoadRunner性能测试基础,学习目标,学习目标 性能测试是什么 性能测试的范畴 性能指标介绍 性能测试的类型 性能测试过程 性能调优介绍 LoadRunner基础,性能测试是什么?,定义 性能测试是指通过特定方式,对被测系统按照一定策略施加压力,获取系统响应时间、TPS、吞吐量、资源利用率等性能指标,以期保证生产系统的性能能够满足用户需求的过程。 命名用户数 命名用户数是指在应用系统中注册的所有系统用户。 该用户数取决于系统应用范围和业务范围,可以通过统计应用系统数据库中用户登记表取得。 在线用户数 在线用户数是指同时登录应用系统的用户数量。 该数据可通过检查系统应用与数据库连接取得。
2、对于已投产系统,该数量一般通过系统跟踪监控获取。 新投产系统通过经验值估算。,性能测试是什么?,并发用户数 并发用户数是指系统运行期间同一时刻进行业务操作的用户数量。 该数量取决于用户操作习惯、业务操作间隔和单笔交易的响应时间。 使用频率较低的应用系统并发用户数一般为在线用户数的5%左右。 使用频率较高的应用系统并发用户数一般为主线用户数的10%左右。 交易 交易分为业务层面和技术层面两种定义。 业务层面交易是指完成一次完整的业务操作,如进行一次查询、转账。 技术层面交易是指进行一次应用程序至应用程序、或者应用程序至数据库的系统操作。 一般的一笔业务交易由多笔技术交易组成。根据业务交易的复杂度
3、和系统应用架构的不同,其比例大致为1:2 -1:10,性能测试的范畴,软件性能的范畴较广,通常包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等。 用户视角的软件性能 从用户角度来说,软件性能就是软件对用户操作的响应时间。2-5-10原则。 产品开发人员视角的软件性能 架构设计是否合理; 数据库设计是否合理; 代码是否存在性能方面的问题; 系统中是否有不合理的内存使用方式。,性能测试的范畴,系统管理员视角的软件性能 系统运行时服务器的状态,如CPU利用情况、内存使用情况等; 系统是否能够实现扩展; 系统支持多少用户访问; 系统的稳定性,是否支持7*24小时的业务访问。,性能测试
4、指标介绍,并发用户数 响应时间 交易成功率 吞吐量 TPS与HPS 资源利用率,性能测试指标,并发用户数(最佳、最大) 应用系统可支持的并发用户数通常反映系统的容量,即系统的处理能力情况。 响应时间 响应时间指的是从开发端发起一个请求开始,到客户端接收到从服务器端返回的响应结束,这个过程所耗费的时间。,性能测试指标,交易成功率 交易成功率指的是一段时间内成功的交易数在总交易数中所占的比例,金融行业应用系统一般要求在99%以上。 吞吐量 吞吐量是指单位时间内系统处理的客户请求的数量,直接体现应用系统的性能承载能力。,性能测试指标,TPS与HPS TPS:Transaction per secon
5、d-指应用系统每秒钟处理完成的交易数量 是估算应用系统性能的重要依据。 一般而言,评价系统性能均以每秒完成的技术交易的数量来衡量。 系统整体处理能力取决于处理能力最低模块的TPS值。 HPS:Hit per second 每秒点击次数 指一秒钟的时间内用户对web页面的链接、提交按钮等点击总和。 HPS一般与TPS成正比关系,是B/S系统中非常重要的性能指标之一。,性能测试指标,资源利用率 资源利用率是指系统在负载运行期间,数据库服务器、应用服务器、web服务器的CPU、内存、硬盘、外置存储,网络带宽的使用率。 据经验,低于20%的利用率为资源空闲,20%-60%的使用率为资源使用稳定,60%
6、-80%的使用率表示资源使用饱和,超过80%的资源使用率必须尽快进行资源调整与优化。 其他指标 在性能测试过程中还有大量与软件产品或硬件设备相关的测算指标; 行业相关指标,性能测试类型,负载测试 压力测试 疲劳强度测试 大数据量测试,性能测试类型,负载测试(Load Test) 通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足性能指标的情况下,系统所能承受的最大负载量的测试。 压力测试(Stress Test) 通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态,并以此来获得系统能够提供的最大服务级别的测试。 压力测试是一种特定类型的负载测试。,
7、性能测试类型,疲劳强度测试 通常是采用系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。 疲劳强度测试可以反映出系统的性能问题,例如内存泄漏等。 大容量测试(Volume Test) 对特定存储、传输、统计、查询业务的测试。,性能测试过程,规划阶段 (测试目标、测试范围、测试组织、测试时间) 准备阶段 (测试环境、测试数据、测试脚本、测试程序) 执行阶段 (响应时间基准测试、负载测试、压力测试、容量测试、稳定性测试) 调优阶段 (收集/分析测试结果,定位瓶颈,性能调优) 报告阶段 (
8、测试成果确认、测试目标完成确认、测试报告编制),性能测试过程,测试目标 测试目标一般包含应用系统要达到的性能指标。 系统处理的最大并发用户数; 系统运行高峰时期,响应时间小于X秒; TPS不小于多少X; 服务器资源利用率不超过80%; 运行7*24小时,无明显的内存泄漏现象。,性能测试过程,测试监控项 操作系统监控 Cpu 内存 IO:通过Iostat查看iowait的运行情况 文件系统空间监控 中间件 执行线程数 数据库连接数 查看队列状态(空闲执行线程数/队列长度) 查看Weblogic启动的内存大小、Jvm大小以及输出,性能测试过程,测试监控项 数据库 建索引 共享池命中率 避免全表扫描
9、,性能调优介绍,调优基本原则 如果某个部分不是瓶颈,就不要试图优化。 优化是为系统提供足够的资源并且充分的利用资源,而不是无节制的扩充资源。 优化有时候也意味着合理的分配或划分任务。 优化可能会过头,注意协调整个系统的性能。,性能调优介绍 Oracle,Oracle中的两类等待事件 空闲等待:Oracle正在等待某种动作的发生 Client message (客户机消息) SQL*Net message from client( 来自客户端的消息) Rdbms ipc message(数据库ipc消息) 非空闲等待:数据库发生了竞争 Buffer busy waits(数据高速缓存忙等待);
10、Db read(数据文件离散读); Db read(数据文件顺序读); Enqueue(队列);,性能调优介绍 Oracle,监控Oracle性能的sql语句 select sid,event from v$session_wait where event not like rdbms% and event not like SQL*Net message%; select sql_text from v$sqltext_with_newlines a where (a.hash_value, a.address) in (select DECODE (sql_hash_value,0, pr
11、ev_hash_value,sql_hash_value),DECODE (sql_hash_value, 0, prev_sql_addr, sql_address) from v$session b WHERE b.sid = 4 ) order by piece asc;,性能调优介绍 Oracle,通过ORACLE提供的底层SQL来查找性能最差的SQL。 SELECT * FROM ( SELECT PARSING_USER_ID EXECUTIONS, SORTS, COMMAND_TYPE, DISK_READS, sql_text FROM v$sqlarea ORDER BY
12、disk_reads DESC ) WHERE ROWNUM10 ; -查找前十条性能差的sql,LoadRunner基础,LoadRunner常用的版本有哪些? V7.8 V8.0 V8.1 V9.0 V9.1 V9.5 LoadRunner是那个公司的产品? Mecury公司,现为HP收购 世界500强的企业中,有75%的企业使用其产品 Test Director 9.0版本称为QC(Mercury Quality Center) Win Runner Load Runner Quick Test Professional (QTP) Loadrunner支持哪些常用的插件? .net 和
13、JBuilder 两种插件 Loadrunner常用的开发语言是什么? C,LoadRunner基础,Loadrunner支持哪些常用协议? Web(HTTP/HTML) Sockets .net 协议 web services 常用数据库协议(ODBC,ORACLE,SQLSERVER 等 邮件(SMTP、pop3) 其它协议,LoadRunner基础,Loadrunner常用组件 Controller Virtual User Generator (Vugen) 创建脚本 Controller 设计和运行场景 Analysis 分析场景 Tuning Console(LoadRunner8
14、.0以上) 调优,LoadRunner基础,设置Recording Options 选项?(以单协议http/html为例) 菜单tools-Recording Options进入录制的设置窗体 Recording标签页:选用哪种录制方式 Browser标签页:浏览器的选择 Recording Proxy 标签页:浏览器上的代理设置 Advanced 标签页:可以设置录制时的think time,支持的字符集标准等 Correlation标签页:手工设置关联,通过关联可在测试执行过程中保存动态值。使用这些设置可以配置 VuGen 在录制过程中执行的自动关联的程度。,LoadRunner基础,H
15、TML-Based scrpt 和URL-Based scrpt 录制的区别? 基于浏览器的应用程序推荐使用HTML-Based scrpt。 不是基于浏览器的应用程序推荐使用URL-Based scrpt。 如果基于浏览器的应用程序中包含了Java scrpt并且该脚本 向服务器产生了请求,比如DataGrid的分页按钮等,也要使用URL-Based scrpt方式录制。 基于浏览器的应用程序中使用了HTTPS安全协议,使用URL-Based scrpt方式录制。 录制过程中不要使用浏览器的“后退”功能,LoadRunner对其支持不太好。,LoadRunner基础,创建脚本操作步骤: 启动
16、VuGen:选择需要新建的协议脚本,可以创建单协议,或是多协议脚本 点击Start Record按钮,输入程序地址,开始进行录制 使用VuGen进行录制:创建的每个 Vuser 脚本都至少包含三部分:vuser_init、一个或多个 Actions 及vuser_end。录制期间,可以选择脚本中 VuGen 要插入已录制函数的部分。运行多次迭代的Vuser 脚本时,只有脚本的Actions部分重复,而vuser_init和vuser_end部分将不重复,LoadRunner基础,完善脚本 插入事务 插入集合点 模拟用户思考时间 参数化输入 插入Text/Imag 检查点 Run-Time Se
17、tting选项,LoadRunner基础,插入事务(Transaction) 事务为衡量服务器的性能,需要定义事务。 LoadRunner 运行到该事务的开始点时,LR就会开始计时,直到运行到该事务的结束点,这个事务的运行时间在结果中会有反映。 插入事务操作可以在录制过程中进行,也可以在录制结束后进行。LR 运行在脚本中插入不限数量的事务。 在菜单中单击InsertStart Transaction后,输入事务名称,也可在录制过程中进行,在需要定义事务的操作后面插入事务的“结束点”。默认情况下,事务的名称列出最近的一个事务名称。一般情况下,事务名称不用修改。事务的状态默认情况下是LR_AUTO
18、。一般情况下,我们也不需要修改状态的,LoadRunner基础,插入集合点(Rendezvous) 插入集合点是为了衡量在加重负载的情况下服务器的性能情况。 在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LR 中可以通过在提交数据操作前面加入集合点,当虚拟用户运行到提交数据的集合点时,LR 就会检查同时有多少用户运行到集合点,从而达到测试计划中的需求。 具体的操作方法如下:在需要插入集合点的前面,点击菜单InsertRendezvous,也可在录制时按插入集合点按钮 注意:集合点经常和事务结合起来使用。集合点只能插入到Action 部分,vuser_init和vuser_en
19、d 中不能插入集合点。,LoadRunner基础,模拟用户思考时间 用户在执行两个连续操作期间等待的时间称为“思考时间”。 Vuser 使用lr_think_time 函数模拟用户思考时间。录制 Vuser 脚本时,VuGen 将录制实际的思考时间并将相应的 lr_think_time 语句插入到 Vuser 脚本。 可以编辑已录制的 lr_think_time 语句,也可在 脚本中手动添加更多lr_think_time 语句。 以秒为单位指定所需的思考时间,LoadRunner基础,参数化 如果用户在录制脚本过程中,填写提交了一些数据,这些操作都被记录到了脚本中。当多个虚拟用户运行脚本时,都
20、会提交相同的记录,这样不符合实际的运行情况,而且有可能引起冲突。为了真实的模拟实际环境,需要各种各样的输入。 录制业务流程时,VuGen 生成一个包含可以用参数替换已录制的值。这被称为脚本参数化。 参数化包含以下两项任务: 在脚本中用参数取代常量值。 设置参数的属性以及数据源。 注意:不是所有的函数都可以参数化的。也可以将参数化的内容进行还原,LoadRunner基础,创建参数化 选中需要参数化的内容,点击右键,选择 Replace with a parameter 在“参数名”框中键入参数的名称,或从列表中选择一个现有的参数名。 在从“参数类型”列表中选择参数类型。 点击属性,设置参数属性
21、也可以点击菜单:VuserParameter List,进行添加参数,设置相应的属性,LoadRunner基础,参数的类型介绍 数据文件:文件(现有文件或者用 VuGen 或 MS Query 创建的文件)中包含的数据 分配内部数据:Vuser 内部生成的数据。这包括日期/ 时间、组名、迭代编号、负载生成器名、随机编号、唯一编号和 Vuser ID 用户定义的函数:使用外部 DLL 函数生成的数据,LoadRunner基础,参数化设置属性界面,LoadRunner基础,参数属性设置 定义选取列:表示指定选取哪一列的值 定义“列分隔符:用来分隔表格中的列的字符 选取下一个值的方式:表示在 Vus
22、er 脚本执行期间如何选择表格数据。选项包括:“顺序”、“随机”和“唯一”。 从“更新值的时间”列表中选择更新选项。选项包括“每次迭代”、“每次出现”和“一次”。,LoadRunner基础,从现有数据库中导入数据 通过 LoadRunner,可以从数据库中导入数据以用于参数化。您可以用下列两种方法中的一种导入数据: 新建查询 指定 SQL 语句 VuGen 提供一个指导您完成从数据库中导入数据的过程的向导。在该向导中,您可以指定如何导入数据(通过 MS Query 新建查询或者指定 SQL 语句)。 导入数据之后,它被另存为一个扩展名为.dat 的文件,并且存储为常规参数文件。,LoadRun
23、ner基础,插入Text/Image 检查点 在进行压力测试时,为了检查Web 服务器返回的网页是否正确,这些检查点验证网页上是否存在指定的Text 或者Image,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。 操作步骤: 1、可以将视图切换到TreeView 视图 2、在树形菜单中选择需要插入检查点的一项,然后点鼠标右键,选择将检查点插到该操作执行前(Insert Before)还是执行后(Insert After)。 3、在弹出对话框中选择web Checks 下面的Image Check 或是 Text Check 4、对需要检查点设置相关的属性,LoadRunner
24、基础,Controller 可以使用LoadRunner Controller来管理和维护方案。 LoadRunner使您可以从一个单一的控制点简单有效地控制所有的Vuser。,LoadRunner基础,创建运行场景 使用集合点 运行方案 监视方案,LoadRunner基础,Controller窗体介绍 Controller 窗口包含两个选项卡 选择“视图”“显示输出”,则 Controller 将打开“输出”窗口,会显示方案执行期间生成的错误、警告、通知、调试和批处理消息。 设计视图该视图显示方案中的所有 Vuser 组/ 脚本的列表、负载生成器计算机以及分配给每个组/ 脚本的 Vuser
25、数。还显示有关方案计划或目标方案)的基本信息。 运行视图显示有关运行的 Vuser 和 Vuser 组的信息以及联机监视器图。,LoadRunner基础,创建运行场景 创建手动方案 创建面向目标的方案,LoadRunner基础,计划方案 计划定义 按方案计划:定义整个方案的设置。“加压”选项卡、“持续时间”选项卡、 “减压”选项卡。 按组计划:定义各个组的设置。从左侧的框中,选择 要计划的 Vuser 组。“开始时间”选项卡、“加压”选项卡、“持续时间”选项卡、“减压”选项卡。 注意:Vuser 组设置不适用于百分比模式。,LoadRunner基础,创建手动方案 通过创建并指定脚本、负载生成器
26、和每个组中包括的Vuser数,可以生成手动方案。也可通过“百分比模式”定义要在方案中使用的Vuser的总数,并为每个脚本分配负载生成器和占总数一定百分比的Vuser。 运行场景描述在测试活动中发生的各种事件。一个运行场景包括一个运行虚拟用户活动的Load Generator机器列表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。可以选择下列两种方法之一来创建方案:“手动方案”或“面向目标的方案”。在面向目标的方案中,可以定义通过测试要实现的目标, LoadRunner 将根据这些目标自动生成方案。,LoadRunner基础,“加压”选项卡 点击Edit Schedule按钮,即可进入Sch
27、edule 设置窗口。 点击New新增一个方案名称要确定方案开始的方式,请单击“加压”选项卡。选择下列选项之一: 同时加载所有的vuser:同时启动方案中的所有 Vuser。 启动xx个vuser,每x(时W分W秒):同时开始运行指定数目的Vuser,并在两次Vuser加压之间等待指定的时间。,LoadRunner基础,“持续时间”选项卡 要设置方案的持续时间,请单击“持续时间”选项卡。 运行直到完成 在加压完成之后运行x(时W分W 秒):所有 Vuser 都已加压之后,再运行方案约一段指定的时间。 无限期运行 注意:持续时间设置将覆盖 Vuser 迭代设置。这意味着,如果将持续时间设为五分钟
28、,那么 Vuser 将继续在五分钟时间内运行尽可能多的迭代,即使运行时设置仅指定一次迭代。,LoadRunner基础,“减压”选项卡 要确定方案停止的方式,请单击“减压”选项卡。 同时停止所有的Vuser:同时停止方案中的所有 Vuser。 停止x个Vuser,每x(时W 分W 秒):在指定的时间段内停止一定数目的Vuser。,LoadRunner基础,设置延迟方案开始时间 对于手动和面向目标的方案,您都可以指示LoadRunner 在稍后的某个时间点开始运行方案。您可以指定让 LoadRunner 自发出Run命令以来等待的分钟数,也可以指定让方案开始的特定时间。 点击Secnaion St
29、at Time按钮,进入Scenario Start Time 窗口,LoadRunner基础,选择“按组计划 ”选项 创建 Vuser 组后,您可以通过设置以下内容,计划该组的脚本执行: 方案开始后,该组开始运行之前,它必须等待的时间量 在指定时间段内运行的 Vuser 的数量 在指定时间段内将停止的 Vuser 的数量 该组运行的时间量 注意:Vuser组设置不适用于百分比模式。,LoadRunner基础,“开始时间”选项卡 选择下列三个选项之一: 在方案开始时启动组 在方案开始后x时启动:运行该组之前等待指定的时间量。 组x完成时启动:指定的组结束运行后开始运行该组。,LoadRunne
30、r基础,加压”选项卡 选择下列选项之一: 同时加载所有的Vuser: 启动x个Vuser,每x(时W分W秒):同时开始运行指定数目的Vuser,并在两次 Vuser 加压之间等待指定的时间。 注意:方案运行时,您可以在方案中添加Vuser 组,然后启用它们。在逐渐加压模式下,如果在方案中的所有Vuser都加压之后添加Vuser 组,则新的组将立即开始加载,LoadRunner基础,“持续时间”选项卡 选择下列选项之一: 运行直到完成 在加压完成之后运行x(时W 分W 秒) 初始化时间很长的 Vuser 在可能方案结束之前无法达到“正在运行”状态。要确保所有的 Vuser 都在方案中运行,请选中
31、“运行之前初始化所有的 Vuser”复选框。,LoadRunner基础,“减压”选项卡 注意:仅当在“持续时间”选项卡中选中了第二个选项时,才适用“减压”选项卡设置。 选择下列选项之一: 同时停止所有的Vuser:同时停止组中的所有 Vuser。 停止x个Vuser,每x (时W 分W 秒):在指定的时间段内停止一定数目的Vuser。,LoadRunner基础,创建面向目标的方案 在面向目标的方案中,您可以定义您希望实现的测试目标, LoadRunner 将根据定义的目标自动为您创建一个方案。 在一个面向目标的方案中,您可以定义五种类型的目标:虚拟用户数、每秒点击次数(仅 Web Vuser)
32、、每秒事务数、每分钟页面数(仅 Web Vuser)或方案的事务响应时间。 使用“编辑方案目标”对话框可以对方案目标进行定义。 注意:要定义每秒事务数或事务响应时间目标类型,脚本中必须包含事务。对于每种目标类型,您可以定义脚本中希望测试的事务,LoadRunner基础,目标的种类 每次场景运行只能设置一个目标。 Virtual Users Goal:虚拟用户目标类型,需要测试多少人可以同时运行Web Pages per Minute 、 Hits per Second、Transactions per Second:每分钟页面数和每秒点击次数、事务响应时间,Controller试图使用最少的虚
33、拟用户来达到定义的目标。如果使用最少的用户,不能达到目标,增加用户数,直到定义的最大值。 Transactions Response Time:如果想知道在多少用户并发访问网站时,事务的响应时间达到性能指标说明书中规定响应时间的最大值。,LoadRunner基础,“方案设置”选项卡 在“方案设置”选项卡中,您可以设置方案在达到目标后继续运行的时间长度,以及方案无法达到目标时是否继续。 达到目标后再运行:设置方案在达目标后继续运行的时间长度。 如果无法达到目标:选择下面两个选项中的一个: 停止方案并保存结果:若无法达到您定义的目标,指示Controller 停止方案并保存方案结果。 继续运行方案
34、,无需达到目标:指示 Controller 继续运行方案,即使无法达到设定的目标。,LoadRunner基础,“加载行为”选项卡 加压:选择下列选项之一: 自动:指示 Controller运行一批中默认数量的Vuser 在x时间后达到目标:选择 Controller 达到目标之前,方案运行的时间。 渐进速度(不可用于“每秒事务数”和“事务响应时间”目标类型):选择增长速度, Controller 将按照该速度达到您的目标(X 时间内的 X 虚拟用户数/ 点击次数/ 页面数)。 注:以上的说明是以选择的目标为Virtual Users为基础的。选择不同的目标,内容会稍微有一点不同。,LoadRu
35、nner基础,使用集合点 在方案运行期间,可以通过使用集合点指示多个Vuser同时执行任务。 集合点可以在服务器上创建密集的用户负载,并使LoadRunner 能够测量服务器在负载状态下的性能。 通过创建集合点,可以确保多个 Vuser 同步操作。当 Vuser 到达某个集合点时,它就会被 Controller 滞留在该处。当达到要求的 Vuser 数或者经过一段指定的时间后, Controller 就会从集合中释放 Vuser。,LoadRunner基础,集合点创建过程 1、选择“方案” “集合”。将打开“集合信息”对话框。 2、从“集合”框中选择集合,然后单击“策略”按钮。将打开“策略”对
36、话框,选择策略 3、单击“确定”保存设置,LoadRunner基础,设置集合策略 设置集合策略可以决定 Vuser 如何处理集合点。 释放策略:设置一次有几个Vuser从集合中释放 超时:从集合中释放Vuser之前,Controller要等待多长时间。每个 Vuser 到达集合点之LoadRunner 都会等待一个最大超时间隔,这个超时间隔是为下一个到达的Vuser 设置的。 如果下一个 Vuser 没能在超时时间内到达, Controller就会合中释放所有 Vuser。 每当有新 Vuser 到达,计时器就会重置为零。默认的超时是三十秒。,LoadRunner基础,运行方案 运行方案时,会为Vuser组分配负载生成器并执行它们的Vuser脚本。在方案执行期间,LoadRunner将: 记录在Vuser脚本中定义的事务的持续时间 执行包括在Vuser脚本中的集合 收集Vuser生成的错误、警告和通知消息 在方案运行时,您可以监视每个 Vuser、查看由 Vuser生成的错误、警告和通知消息以及停止 Vuser 组和各个Vuser。可以指示 LoadRunner 允许单个Vuser或组中的Vuser在停止前完成它们正在运行的迭代、在停止前完成它们正在运行的操作或者立即停止运行。,LoadRunner基础,监视方案 可以使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华为消费电子产品设计师招聘指南
- 行政主管工作手册:目标设定与任务安排
- 企业内部控制审核策略与应聘准备指南
- 网络营销推广实战策略及面试要点
- 大型企业人力资源主管的职责与要求
- 互联网 时代下的京东集团业务创新与拓展研究
- 酒店管理专业职位招聘及选拔全攻略
- 大班三八活动方案怎么策划
- 石油化工制造工艺师面试注意事项
- 网络IT管理之安全技术经理招聘流程详解
- 平面构成-比例与分割课件
- 《中国现代文学史(1917-2013)上册》配套教学课件
- 节能检测课件
- 中药学考研习题
- 土木工程专业认识教育课件
- 动脉血气分析六步法杜斌
- 全套电子课件:数据结构(C语言版)(第三版)
- 最新版教科版科学四年级下册全册课件(配套新版教材)
- 2020年小学中高年级书法教程ppt课件
- 某鸡舍工程施工设计方案
- 压力蒸汽灭菌器维护保养记录
评论
0/150
提交评论