




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、利用Web Application Stress Tool(WAS)做性能测试Duwamish OnlineAaron Ching, Pedro Silva, and Allen WagnerMicrosoft Developer NetworkJanuary 2001摘要:这篇文章讨论了性能测试对于成功发布一个网络应用的重要性,集中讨论了微软的Web Application Stress (WAS)这个用于测试Duwamish Online的性能的工具。内容 介绍使用WAS的好处WAS的缺陷安装WAS创建测试脚本配置测试脚本运行测试脚本结论:最好的习惯介绍 性能测试是成功发布一个网络应用的关
2、键因素。当越来越多的用户访问你的站点时,清楚地知道你的应用程序和你的服务器群是怎样工作的就显得非常重要了。为了给你的网络应用程序模拟出那种类型的使用,你可以协同几百甚至上千的真实用户在一段设计好的时间段里访问你的站点,你也可以只与一个能复制这么多用户负载的测试工具一起工作,许多性能测试工具可以帮你的忙。基本上,这些工具都允许你以有限的客户端模拟大量的虚拟用户,并发地访问预先确定的页面或网站的URLs (Uniform Resource Locators)。每一个虚拟用户都能精确地仿效在真实浏览器和网站服务器之间进行通讯协议。在这篇文章里,我们将专注于其中一个这样的工具:Microsoft
3、74; Web Application Stress (WAS)工具。你可以在微软的Microsoft Windows® 2000 Resource Kit CD (WAS version 288)里面找到这个工具。注意 WAS 不能再从Microsoft的网站下载了,Visual Studio .NET 的企业架构 和企业开发版本都包含一个新的网络压力测试工具,这个工具叫做Application Center Test,是受Microsoft技术支持的工具。这个工具包含在Visual Studio .NET安装时的Ent
4、erprise Development Tools部分。在写这篇文章时,Application Center Test还没有正式公开发表。关于如何得到Visual Studio .NET,请访问Visual Studio网站。使用WAS的好处 首先,我们来讨论一下使用WAS测试你的应用程序的好处。它简单 WAS允许你以不同的方式创建测试脚本:你可以通过使用浏览器走一遍站点来录制脚本,可以从服务器的日志文件导入URL,或者从一个网络内容文件夹选择一个文件。当然,你也可以手工地输入URL来创建一个新的测试脚本。 不像其它的工具,你可以使用任何数量的客户端运行测试脚本,全部都有一个中央主客户端来控制
5、。在每一个测试开始前,主客户机透明地执行以下任务:· 与其他所有的客户机通讯· 把测试数据分发给所有
6、的客户端· 在所有客户端同时初始化测试· 从所有的客户端收集测试结果和报告这个特性非常重要,尤其对于
7、要测试一个需要使用很多客户端的服务器群的最大吞吐量时非常有用。它的高可用性WAS是被设计用于模拟Web浏览器发送请求到任何采用了HTTP1.0或1.1标准的服务器,而不考虑服务器运行的平台。除了它的易用性外,WAS还有很多其它的有用的特性,包括: · 对于需要署名登录的网站,它允许创建用户帐号。·
8、60; 允许为每个用户存储cookies 和Active Server Pages (ASP) 的session信息· 支持随机的或顺序的数据集,以用在特定的
9、名字-值对· 支持带宽调节和随机延迟(“思考的时间”)以更真实地模拟显示情形。· 支持Secure
10、Sockets Layer (SSL)协议· 允许URL分组和对每组的点击率的说明· 提供一个对象模
11、型,可以通过Microsoft Visual Basic® Scripting Edition (VBScript)处理或者通过定制编程来达到开启,结束和配置测试脚本的效果。WSA的缺陷 除了优势外,WAS的确有一些缺陷存在。当前知道的bug和有关事项都列在WAS的网站上了。以下是当前WAS不支持的特性:· 以前面所发请求返回的结果为基础
12、,修改URL参数的能力。· 运行或模仿客户端逻辑的能力· 为所分配的测试指定一个确定数量的测试周期的
13、能力。· 对拥有不同IP地址或域名的多个服务器的同时测试能力注意 你可以使用多个主客户端来同时测试多个服务器。然而,如果你想把所有测试结果联系起来成为一个整体,则需要整理从各个WAS数据库得到的数据·
14、60; 支持页面在不同IP地址或域名间的重定向的能力· 从Web浏览器直接记录SSL页面的能力注意 WSA已经支持SSL页面的测试,但是没有记录它们。你需要在脚本录制完后,手工地为每个设计好的
15、URL打开SSL支持虽然对这些限制有一些相应的解决办法,但是如果你的应用依赖一个或多个这样的功能的话,你也许不能完全享受WAS带来的好处。安装WAS WAS要求Microsoft Windows NT® 4.0 Service Pack 4或以上版本,包括Windows 2000平台。还要求Internet Explorer 4.0以上版本,与Internet Explorer 5.0工作更好。要安装WAS,首先下载最新版本的setup.exe程序,按照安装向导的指示。拷贝并在你的测试机器上安装。注意 在本文介绍的所有步骤均以WAS version 293为
16、蓝本。创建测试脚本 虽然你可以手动地创建测试脚本,WAS可以通过记录浏览器活动,导入服务器日志文件或评估Web文件夹的内容来帮助你创建测试脚本。在本文,我们将主要通过记录览器活动的方式来创建测试脚本。采用这个方法而不用其它的方法有几个原因,包括:· 记录览器活动的方式以精确的方式捕捉所有用户的交互活动。任何从浏览器发往服务器的URL指向,应用程序参
17、数和HTTP头部信息都会被自动地记录在新的测试脚本里。· 导入服务器日志文件的方法在站点已经进入投入使用阶段,有了真实的用户流量的情况下使用最好。但是,一个新的站点未必有这么多的真实用户使用数据,进一步说,可能还需要合并大量的日志文件来达到较好地体现用户活动的目的,这将需要创建大量的测试脚本,将需要客户端更多的系统资源。·
18、160; 选取Web内容文件夹的方法最好用在测试多数是静态HTML文件的站点。这种方法允许在已有服务器的Web页面的基础上快速创建测试脚本。然而,这种方法并不捕捉任何由大多数应用程序文件产生的参数,像Common Gateway Interface (CGI)程序或Active Server Pages (ASP).你只需要在主客户机器创建和存储你的测试脚本,当测试由主客户端初始化
19、时,测试脚本会自动地分发到其他的测试客户端。准备测试客户端机器 如果你正在你的内部网通过代理服务器使用WAS ,并且从内部网外的客户端发送请求页面,而且你的公司使用Microsoft Proxy Server,那么按照以下的步骤建立你的客户端:1. 从开始菜单,指向设置控制面板。双击管理工具图标,然后是服务图标。2.
20、60; 双击WebTool服务打开属性对话框3. 点Log On As 标签,然后点This account 选择按钮添加你的网络用户名和密码。使用domainuser name的格式4.
21、160; 停止并重起WebTool服务5. 然后,安装Microsoft Windows Proxy client 2.0,也叫Winsock Proxy 客户端,可以在Microsoft Proxy Server CD里找到(更多有关怎样安装和设置这个软件的信息,请参考包含在CD里面的
22、文档)6. 对于希望使用代理服务器的每个测试客户端,重复步骤1-5。如果你的公司使用其他的代理服务器,就要安装该代理服务器的代理客户端。准备浏览器 在开始录制一个脚本前,你需要准备好你的浏览器,清除你的浏览器的缓冲cache。否则,WAS也许不能记录所需的浏览器活动,因为浏览器可能从缓冲区而不是从所请求的服务器取得请求页面。关掉 IE 的缓冲区 1.
23、0; 在工具菜单,点Internet 选项 2. 点常规标签,然后点删除文件。按钮。如果使用IE5。0或以上版本则不需要修改代理设置,因为5。0以上版本的IE允许WAS改变这些设置。然而,对于IE4。0或早期版本,WAS使用一个内置的代理服
24、务器来记录浏览器活动。 按WAS的需要指定代理设置1. 在工具菜单,点Internet 选项 2. 在连接标签里,修改代理设置以使代理服务器指向Localhost 并且使用端口800
25、03. 不选对于本地地址不使用代理服务器 记录脚本 在你的浏览器和客户端已经准备好记录后,做下面的操作:1. 当你第一次运行WAS时,你会看到一个Create new script 的对话框(
26、Figure 1),询问你以什么样的方式创建一个新的测试脚本。2. 点Record 按钮 。如果之前你选择了Don't display at startup ,Create new script 将不会显示出来。你可以在Script 菜单选择Record 然后 Create .3.
27、; 在Browser Recorder Step 1 of 2 对话框,你会被要求指定一些记录设置。在这里,清除所有的选择框点Next 继续。4. 在Browser Recorder Step 2 of 2 对话框,点Finish 。一个新的IE窗口会出现以便记录浏览器活动,同时WAS会被置于记录模
28、式。 5. 在新出现的IE窗口的地址栏,输入你的目的站点的地址。在WAS的窗口你将看到HTTP 信息在跟随你的浏览活动而实时改变着。6. 当完成了你的站点浏览后,转回WAS窗口还处于记录状态点
29、Stop Recording 按钮。就会终止记录并产生一个新的测试脚本。在右边窗口的底部,你将看到一个列出所有脚本的列表。对于需要安全连接的站点,WAS支持SSL页面。然而不允许SSL的记录。要解决这些限制,你可以在服务器端关掉SSL,记录脚本,然后再重新激活服务器上的SSL。设置测试脚本 新录制的脚本还不能立即用来测试。还必须完成以下设置:· 调
30、节脚本项和他们的属性· 调节测试脚本的测试· 建立页面组和点击百份比·
31、0; 建立用户帐号· 建立客户端·
32、60; 建立性能计数器调节脚本项 在修改一个测试脚本的脚本项时需要考虑几点,我们将在下面介绍。去掉不需要的脚本项 去掉冗余项以减少在测试中的噪声因素,或者去掉那些无效的URL。当要调整一项特殊的功能时,去掉所有指向图象,样式表单和其他辅助静态文件的脚本项。为脚本项指定思考时间 脚本项表单的最后一项叫做“延迟”。这项允许你在执行脚本项之前指定特定的延迟时间(也叫思考时间)。对于性能测试来说,如何定义思考时间并没有一个单独的标准。有些人使用零思
33、考时间,有些人考虑使用30秒为思考时间。主要取决于站点的内容和测试的目的。例如,有长页面内容的站点需要比简单页面的站点使用长一点的时间,因为用户需要使用多点的时间来读页面内容。另外,如果你的目的是快速地决定一个只有少量客户端的Web服务器的吞吐量,你可以考虑零思考时间。没有思考时间的话,WAS的每个线程以最快速度对Web服务器施加压力。为脚本项设置一系列的值 WAS允许你为一个脚本项的一对名字-值赋值,而不是对每一个请求都使用相同的值。这个特性对于模拟真实情形很重要,没有用户会不停的以相同的数据值请求同一页面吧?例如,其中一项测试脚本是请求一个ASP页面展示一个产品的详细信息。我们可以设置WA
34、S随机地从一列预先定义的产品ID选取不同的值,而不是每次都用相同的产品ID请求ASP页面。为脚本项建立一列值1. 在WAS窗口的脚本项,双击脚本项最前面的方型按钮(在表单的第一列)打开这项的详细菜单。2.
35、 在Querystring 标签里(也叫Querystring Editor,如Figure 3所示),选定Format data to CGI standard 。相应的名字-值对会出现在check box下的表单里。3. 点选定的名字-值对的值,一个新的按钮会出现4.
36、160; 点这个按钮打开Field Values 对话框5. 在Field values 对话框输入一串值,每一行一个值。你也可以通过剪切,粘贴一个电子表格的数据文件来输入。6. &
37、#160; 在Querystring Editor里,在表单中点有相同名字-值对的Distribution 一列。在下拉菜单选择Random 。 为脚本项设置SSL 为特定的脚本项激活SSL,需要作以下操作:1. 在WAS窗口的脚本项,双击脚本项最前面的方型按钮(在表单的第一列)打开这项的详细菜单。2.
38、0; 在 SSL标签里,选Use SSL . (注意在你激活SSL时确保端口值应该在80到 443之间)。调整脚本设置 为了您能满意地运行你的性能测试,你需要修改你的测试脚本的设置。通过双击左边的脚本名展开脚本的信息,你会找到一个Settings 标签,在这里你可以为你的测试脚本指定很多设置。点击它将在右边窗口打开Settings视图。指定目标Web服务器 默认地,目标服务器是“localhos
39、t”,应该替换为IP地址或目标服务器的域名。改变设置 1. 在左边的窗口点测试脚本的名字2. 在右边窗口顶部的Server 输入目标服务器的IP地址或域名注意 如果你想对有Net
40、work Load Balancing(网络负载均衡)的服务器群组进行测试,就像Duwamish Online一样,则需要输入IP地址群。设置并发连接数 在设置里的Concurrent Connections 部分,你可以指定Stress level (threads) 的值和Stress multiplier (sockets per thread) 来控制对目标服务器的压力/负载程度。Stress level是全部客户端所产生的Windows NT线程的总数。每个线程能产生多个socket而每个socket就是一个并发的请求。以下公式解释了他们之间的关系:Total Concurrent
41、Requests = Stress level (threads) x Stress multiplier(sockets per thread) = Total Number Sockets在我们的实验室,我们使用不同的Stress层次来 性能测试。例如,我们使用过100, 200, 300, 400, 500, 750, 1000, 1500,和2000的值来连续测试以研究我们的服务器群组是如何对连续增长的负载作出反应的。你应该在初步测试的结果基础上调整这些数值。通常来说,你需要在低负载度时收集更多的数据点,因为这时候系统的吞吐量会随线程的增长而线性增长。另一方面,你可以在高负载度时运行较
42、少的测试以节省时间和精力,尤其是系统吞吐量已经高于峰值时。注意我们的第一次测试将设定在1000个线程。目的是运行足够的请求以建立我们程序的数据缓冲。因为程序的性能会因为有没有缓冲而表现大不相同,这将帮助我们为负载测试保持一个一致的环境。设定测试运行时间 在设置视图的Test Run Time 部分,你可以以日,小时,分钟,秒来设定总的运行时间。取决于你的脚本项的预期反应时间,建议你运行测试脚本至少若干分钟以便产生足够的请求,避免变形的测试结果。你的程序的反应时间越高,测试进行的时间就应该越长,以便产生大量的数据。你可以运行短而密集的测试以便监测你的站点的任何问题。另外,你需要运行更长的测试时间
43、(例如,30天),看看你的站点的性能是否随时间而退化,尤其是在中级或高级的负载压力下。在Duwamish Online这个站点,大多数的性能测试都运行7到10分钟,以便有足够时间来稳定测试结果。设置随机延迟时间 在设置视图的Request Delay 部分,你可以在执行测试前为每个脚本项选择加入随机延迟时间(或思考时间)。如果Use random delay 选项框被选中,每个WAS线程会空转一段随机的时间(在最大值和最小值之间)加上为每个脚本项指定的固定的思考时间。下面的公式解释了延迟时间的计算方法:每项的延迟时间=随机延迟时间+每项的固定延迟时间随机延迟时间的特性在固定延迟时间被指定给脚本
44、项时尤为重要。如果没有使用随机延迟时间,所有的线程会在几乎相同的时间发送请求到Web服务器,然后等待几乎相同的固定延迟时间然后发送下一个请求。随机延迟时间在向Web服务器施加负载时有助于压平峰值和谷值,因此为所需的负载水平呈现一个更为精确的环境。设定挂起时间 在设置视图的Suspend 部分,你可以以日,小时,分钟,秒来设定warmup 和cooldown 时间。Warmup时间就是初始化测试运行时间,在这段时间里不会收集和计算性能数据。类似地,cooldown时间就是指定结束阶段的测试时间,也不收集数据。Warmup 和 cooldown被用于最小化测试结果的失真。通常,在一个新测试运行的初
45、始化阶段,很多系统资源是被特定的活动所消耗,像组件或应用程序的缓冲初始化。Warmup时间有助于在任何测试数据被收集之前稳定系统的环境。另一方面,cooldown时间有助于在测试运行的结束阶段避免数据的变形,这时额外的系统资源被用于停止测试和开始从客户端收集数据。另外,socket连接可能会过早地停止,造成大量的socket错误。在Duwamish Online,我们使用30 到 60秒作为大多数性能测试的warmup 和 cooldown时间指定带宽瓶颈 在设置视图里的Bandwidth 部分,WAS允许你模拟从14.4 Kbps的modem连接到T1 (1.5 Mbps)的Local Ar
46、ea Network (LAN)连接的网络带宽。这个特性的最大好处是可以支撑大量的并发连接到目标服务器。这是大多数Web站点(用户使用低速modem连接)所体验的情形。激活带宽瓶颈1. 在设置视图里的Bandwidth 部分,选择Throttle bandwidth 选项框。2.
47、0; 在下拉菜单,选择一个代表大多数用户的连接吞吐量的带宽。在Duwamish Online里,我们试过不同的带宽瓶颈的设置。初始化时。我们把用户连接设在56 Kbps,想明白我们的程序在大多数Web站点的情况下是如何表现的。我们也试过把用户连接设在ISDN Dual Channel (128 Kbps)以模拟未来宽带趋势下,我们的大多数用户通过快速的连接访问我们的站点。最后,我们以没有带宽瓶颈的情形测试我们的站点。有趣的是,我们发现这种设置产生的负载条件与用128 Kbps连接的一样。不管你如何设置带宽瓶颈,
48、务必要在你想比较测试结果的所有测试中保持一致性。指定其他设置 在设置视图的其他部分,我们保持默认值,除HTTP重定向外。我们故意去掉Follow HTTP redirects 选项。这在创建脚本过程中你录制脚本时已经录制了URL的重定向的时候是必须的。你不需要重复两次地运行那些URL。设置页面组 在 WAS里,你可以把一系列的脚本项组织成所谓的页面组。这个特性允许你把所有的页面元素(包括HTML文件,图象文件,样式表单等)或多个相连的页面组织成一个逻辑单元。你可以为每个页面组指定不同的点击率,那样就能控制哪个页面或相连的页面会访问更多或更少。如果你有你的网站的使用方法像目录浏览或购物车页面组允
49、许你以你希望你的站点会获得的点击率来运行。建立页面组1. 展开左边窗口的脚本的信息2. 点Page Groups 节点在右边窗口打开相应的视图你会看到默认的以100%分布率的页面组已经创建好了
50、。所有的脚本项默认都初始化为这个组。3. 在组表单的空白行,在Group 列输入新的组名(像"Home"作为主页),在Distribution 列输入数值。分布率会被用于计算这个页面组的点击率,见Percent 列。重复这个步骤添加更多的页面组。4.
51、60; 点左边窗口的脚本名回到该脚本项的视图5. 在脚本项表单的Group 列,从下拉菜单选择其中一个页面组。为每个脚本项重复这个步骤。所有关联的页面都应该选同样的页面组。Figure 5. Example of page groups definition 6.
52、 点左边窗口的脚本名回到该脚本项的视图7. 在脚本项的表单的Group一列,从下拉菜单选则其中一个页面组。8.
53、; 重复6到7为每一个脚本项选择一个页面组。所有相关项(像ASP 页面,样式表单和图象文件)应该选择相同的页面组。另一种创建和指定页面组的方法是在录制脚本时指定页面组。要使用这种方法,在浏览器跳到新的页面之前返回到WAS窗口(见Figure 2)。点Change Group 按钮然后在New Group 对话框输入组名。以后录制的脚本项都会被指定到这个新的组。指定用户 测试需要署名登录的Web站点时,WAS提供一个特性叫做Users ,可用于存储多个用户的用户名,密码和cookie信息。当一个测试开始时,所有的用户被分配到给
54、定压力系数设置的各线程中。当请求开始时,每个线程使用从与该线程连接的共享池中获得的用户名,密码,和 cookie。如果WAS配置的用户数比线程少,一些线程就会没有用户所有的署名登录页面会登录取失败,任何与cookies的交互会被禁止。所以,当测试需要个人认证的网站时,拥有的用户数比线程多是很重要的。对于可以在WAS中创建的用户数没有硬性的规定和限制。然而,因为每个用户都会需要一定的内存和资源,所以如果使用大量的用户,将会使你的测试启动和停止时间更长些。创建新用户1.
55、; 在左边窗口展开脚本的信息2. 点Users 节点在右边窗口打开相应的视图3. 双击Default 用户组打开用户视图
56、。注意默认已经创建了200个用户。你可以简单地修改用户名和密码就行了。你也可以做以下操作来创建一系列新的用户1. 点Remove All 清除所有的记录2. 在Number of new us
57、ers ,输入你想创建的新用户的数量3. 在User name prefix ,你可以在用户编号的前面输入前缀值,例如“User.”4. 在Password ,输入密码。相同的密码会赋给所有用
58、户。5. 最后,点Create 按钮。用户表单就会填满指定数量的用户如果你想使用定制的用户名和密码列表,你可以从一个预定格式的文本文件导入它们。参考WAS帮助文件的“Importing user names and passwords”部分。建立各客户端机器 WAS允许你使用多个客户端机器测试你的网站。当一个测试开始时,WAS会自动地与所有客户机取得联系,向他们传输所有的测试信息(包括测试脚本
59、项,页面组和用户定义信息),启动和停止他们的测试,然后收集测试结果。使用其中一个客户机器作为你的主客户端。这个主客户端应该是你用来记录和设置测试脚本的机器。建立测试客户端1. 在左边窗口展开脚本信息2. &
60、#160; 点Clients 节点在右边窗口打开相应的视图3. 双击Default 客户端打开客户端视图本地客户端的记录(在你工作的主客户端)已经默认被创建。4. 要想加入新的客户端,在Mac
61、hine name 输入IP地址或域名。5. 点Add 按钮,新的客户端会以Connected 的状态被加到表单中去。6. 重复步骤5和6,直到全部客户端机器都被加入。当添加新的客户端时,尽量
62、加那些大致相同处理能力的机器。我们发现添加一个明显比其他机器速度慢的机器比不添加它还要产生更多的socket错误。我们也发现如果我们设置一台专注的机器作为主客户端,但是这台机器不参与产生负载。这样的设置,我们会产生较少的socket错误,而且测试结束得更快。要这样设置的话,从客户端列表去掉主客户端的名字。如果你有一台慢的机器而你不打算用做负载产生机器,它可以作为你的主客户端而不会影响测试的输出。注意,这台主客户端仍然做所有的产生报告和分发测试脚本的工作。一台慢速度的主客户端意味着你的测试启动和结束的速度会慢些,而且要更多的时间来产生报告。设置性能计数器 WAS可以与Windows NT性能监视
63、器结合简化测试数据的收集。你可以为每个脚本存储你最喜欢的性能监视计数器,WAS 会像其它信息一样收集它们的数据。把性能监视计数器加到你的脚本1. 在左边的窗口展开脚本的信息2. 在右
64、边的窗口点Perf Counters 节点打开相应的视图3. 在Collection Interval ,输入收集时间间隔。这是以秒计算的取样时间。4. 点Add Counter 按钮5.
65、160; 从Add counter to report 对话框,通过点Add 按钮选机器,对象和你感兴趣收集的计数器。在WAS帮助文件的"Common performance monitor counters"部分有一系列的通用性能计数器的介绍。如果你在使用这个特性时遇到什么问题,请参考WAS的基本知识介绍。运行测试脚本 一旦你设置好了测试脚本,就准备好了在你的客户机运行脚本
66、;启动主客户端的测试1. 点需要测试的脚本2. 从Scripts 菜单选Run 也可以点工具栏上的Play 按钮运行脚本。检查测试报告 测试完成后,你应该先检查测试报告看是否有socket 或
67、 HTTP错误从报告中检查这些错误 1. 从View 菜单选Reports 打开相应的视图,见Figure 7.2. 在左边窗口,双击脚本打开测试报告,如果需要的话3.
68、 点测试报告名(有测试运行时间指定),如果需要的话。你会看到右边窗口显示报告的概要。4. 在报告概要,检查Socket Errors 部分是否有任何的socket有关的错误(值不为0)。这里列出每种socket错误的
69、解释:· Connect 客户端不能与服务器取得连接的次数。如果这个值偏高,检查在客户端与服务器之间产生的任何潜在的错误。从每个客户端Ping服务器或telnet服务器的端口80验证你得到正确的回应。·
70、60; Send 客户端不能正确发送数据到服务器的次数。如果这个值偏高,检查服务器是否正确地工作着。在客户端打开一个浏览器然后手工点击站点页面验证站点正确地工作着。·
71、160; Recv 客户端不能正确从服务器接收数据的次数。如果这个值偏高,执行和Send 错误相同的操作。还要检查一下如果你减低负载系数,错误是否跟着减少。· Timeouts 超时的线程的数目,而且随后就关闭了。如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 线上研修、线下沙龙活动方案与总结模版
- while语句开启循环之路天哪输出1000条语句这么简单
- 2025【法务财经】合同风险防范指南
- 2025合法个人借款担保合同
- 2025年度代保管合同协议范本
- 企校合作办学协议
- 高级会计职场技能试题及答案
- 绿色环保从我做起校园公益活动策划(4篇)
- 医疗器械消毒合同
- 新课标 新考纲 新思路高三地理一轮复习课件六14光照图的判读(高品62张)
- 生态修复场地平整施工方案
- 自然辩证法论述题146题带答案(可打印版)
- DB11T 1341-2016 城市地下交通联系隧道施工技术规程
- 小学生火星天问一号祝融车分享
- 第八届全国医药行业特有职业技能竞赛(医药商品购销员)考试题库(含答案)
- 2024-2025学年七年级语文上册第一单元测试卷(统编版2024新教材)
- 短语结构类型(七年级下)
- 厂区保洁服务投标方案【2024版】技术方案
- 中国近现代史考点归纳
- 高考志愿填报指导高考志愿填报指南
- 制作的最好的GRR分析表
评论
0/150
提交评论