1、深 圳 市 泽 林 信 息 咨 询 有 限 公 司Shenzhen Zelin Information Consulting Co . , LTD,软件自动化测试,自动化测试概要(了解),第一章,认识QTP(了解),第二章,QTP核心功能解析(重点),第三章,QTP框架简介(了解),第四章,VBS简介(重点),第五章,课程目 录,为什么需要自动化测试?,没有测试的后果,手工测试,发现缺陷率高容易实施 创造性、灵活性覆盖率量化困难重复测试效率低不一致性、可靠性低依赖人力资源,高效率(速度)高复用性覆盖率容易度量准确、可靠 激励团队士气机械、难以发现缺陷一次性投入大,自动化测试PK手工测试,自动测
2、试基本概念,利用软件测试工具自动实现全部或部分测试 自动化测试是软件测试的一个重要组成部分,它能完成许多手工测试无法实现或难以实现的测试 正确、合理的实施自动测试,能够快速、全面的对软件进行测试,从而提高软件质量,节省经费,缩短软件发布周期,自动化实现的一般方法,录制、回放 定位元素 Id、name、css、xpath 纯手工编写脚本,常用自动化工具介绍,商业工具: QTP WinRunner Rational Robot SilkTest: 开源工具: UIAutomation: EFT【easy function testing】: Selenium watir【web automatio
3、n testing in ruby】 STAF【software testing automation frame】 WebDriver waitN Canoo WebTest TestCompele AdvenNet QEngine QARun TestPartner,自动化优势和局限性,改进测试工作质量,发现缺陷少,维护成本高,改进所有的测试领域,减轻测试工作量 加快测试进度,自动化测试的优势,改进所有的测试领域 测试用例设计改进 性能测试改进 压力测试改进 质量度量与测试优化 改进测试工作质量 回归测试改进 多平台兼容性测试改进 软件配置测试改进 普通测试执行改进 手工测试无法完成的测试
4、 定时启动测试,减轻测试工作量并加快测试进度,自动化测试局限,不能灵活处理意外,定制性项目,周期很短的项目,人体感观与易用性测试,涉及物理交互,发现缺陷少,维护成本高,可能会制约软件开发,自动化测试不是万能的,它不能完全替代手工测试。在软件版本还没有稳定的情况下,千万不要开展自动化测试,否则是自讨苦吃。,自动化永恒的座右铭,自动化测试概要(了解),第一章,认识QTP(了解),第二章,QTP核心功能解析(重点),第三章,QTP框架简介(了解),第四章,VBS简介(重点),第五章,课程目 录,QTP背景知识,QTP是HP公司花费45亿收购的美科利产品套件之一 QTP是继WR产品之后推出的以VBS为
5、内嵌语言的工具 QTP是一款用于功能测试的自动化测试工具 QTP可以和HP的QC产品协作进行自动化测试开发 QTP是一款容易掌握但价格很高的测试自动化工具QTP: Quick Test Professional VBS: VB script WR: Win Runner,QTP应用范围,自带插件 ActiveX, Database, StdWindows, TEA,VisualBasic, Web, XML 额外购买插件Java, DotNet, PeopleSoft, VisualAge, Siebel, Oracle,QTP的基本功能介绍(官方),HP QuickTest Professi
6、onal 支持功能测试和回归测试自动化,用于每个主要软件应用程序和环境。此解决方案使用关键字驱动的测试概念,简化了测试创建和维护过程。它使测试人员能够使用专业的捕获技术直接从应用程序屏幕中捕获流程来构建测试案例。测试专家还可通过集成的脚本和调试环境完全访问内在测试和对象属性。,QTP基本流程,准备录制 录制应用程序上的会话 增强测试 调试测试 运行测试 分析结果 报告缺陷,QTP的基本功能介绍,Test,Action,Action,Action,Function,Function,Function,Function,Library,Step,Step,Step,以Test为测试运行单位,每个T
7、est包含若干类型Action。 以Action为最小单位映射对象库,多个Action之间可以共享统一对象库 Action内的Step可以包含用户录制操作或者函数库内对Function的调用,Step,Step,QTP基本功能介绍,用15分钟视频对QTP全部功能进行快速解释。,开发相关参考资料,QuickTest Professional 自动化对象模型 Script56.chm VBS语言参考 F1键可以获得任何方法或函数的帮助 xmlhttp.CHM xmldom对象手册,自动化测试概要,第一章,认识QTP,第二章,QTP核心功能解析,第三章,QTP框架简介,第四章,VBS简介,第五章,课
8、程目 录,核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,确保QTP版本和IE版本兼容,否则无法录制开始录制测试前,请确保将应用程序或网站以及 QuickTest 设置为与测试的需求相匹配,即选择合适的插件。清除浏览器的用户名和密码的“自动完成”选项。开始录制前,请关闭所有浏览器。,创建测试-准备录制测试,3种录制模式对比1.正常录制(Normal Recording)F32.模拟录制(Analog Recording)Shift+Alt+F33.低级录制
9、(Low Level Recording)Ctrl+Shift+F3,创建测试-录制测试,创建测试-在关键字视图中分析测试,创建测试-在专家视图中分析测试,创建测试-编辑器的自动补齐功能,运行测试-直接运行,New run results folder:创建一个新文件夹来保存测试结果 Temporary run results folder:覆盖存在的临时结果目录。(建议调试时选用第二种),运行测试-断点调试,1、单击最左边,出现暗红色圆圈,表示断点 2、开启Debug视图 3、具体调试内容,在tools菜单,分析测试-分析测试结果,自动化测试概要(了解),第一章,认识QTP(了解),第二章,
10、QTP核心功能解析(重点),第三章,QTP框架简介(了解),第四章,VBS简介(重点),第五章,课程目 录,QTP核心功能解析,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,人类是如何认识对象的?,对象库出现改写了软件测试历史,QTP的对象库是这个强大的自动化测试工具的核心,也是其精华所在! 有了对象库这一整套功能、机制,QTP才可以在那么多的自动化测试工具中脱颖而出! QTP的整套对象库功能与对象识别机制给自动化测试人员带来了前所未有的体验,它的成熟、上手度、良好的
11、使用感受都是市面上其他任何自动化测试工具无法给予的。 对象库是QTP在实际项目应用中的枢纽,读者一旦精通了它,会感觉到在项目应用、QTP各项功能中都会和对象库产生必要联系。 小小的总结一下,可以说QTP在实际项目中的应用开发(特别是自动化测试项目做成功的案例)绝大部分都基于对象库编程模式,所以,对象库的出现改写了自动化测试领域的历史,也推动了这个技术领域走向更高的台阶!,对象库-基本简介(一),入口: Resources-Object Repository Ctrl+R 功能: 保存被测试对象属性, 在编写执行步骤时使用,对象库-基本简介(二),对象库中的对象可以在录制过程中自动产生,也可以手
12、动添加指定对象 对象库分为本地对象库和共享对象库,区别是:本地对象库只应用于本地Action调用共享对象库以.tsr扩展名文件形式存在,可以被其他Action调用。 对象库面板具有定义以及更新对象的功能,并且能够进行在被测软件和对象库之间双向查找对象。 对象属性可以在对象库中被任意修改,并且其属性描述支持正则表达式。,对象库-简单的对象识别原理,用户通过录制或指定对象属性的方式将一个对象添加到对象库,在录制过程中添加的对象是根据Tools-Object Identification中的设定记录的。 在回放的过程中QTP通过将对象库中的对象属性和被测软件中的实时对象属性进行比对,如果发现存在能够
13、唯一确定的对象,则对对象使用相应的用户设定的方法,完成用户动作。若不能发现唯一确定的对象,则启动智能识别机制,若智能识别仍无法唯一确定对象,则报错。 更多细节请参见QTP帮助。,对象库-Object Identification,菜单栏ToolsObject Identification。,对象库-智能识别-鸡肋,核心功能-对象库,智能识别是鸡肋,辅助标识符要慎用 对象库与描述性编程的区别: 对象库将对象收集起来,以可视化的方式呈现给用户 描述性编程在运行步骤中通过对象属性指定对象。 结合使用时应注意:描述性编程的子对象不可以是对象库中的对象,反之可以。 具体采用哪种方式指定对象因具体情况和个
14、人喜好所定,并非描述性编程更“高人一筹“,对象库-实战案例,1、打开对象库 2、打开IE浏览器 3、添加ecshop中的用户名和密码及确定按钮到对象库 4、代码实现输入正确用户名和密码,登录成功,对象库-默认对象库截图,对象库-基本操作(一),对象的剪切、复制、粘贴与删除 对象库中对象的查找与替换 添加对象 对象更新 对象闪烁(亮灯) Highlight in Application,对象库-基本操作(二),修改对象库中的控件属性,专家试图中相应的代码也同步发生改变。 运行后,依然成功。,对象库-基本操作(三)-Object Repository Manager,对象库的最高指挥官(Objec
15、t Repository Manager) 使用公共对象库更有利于项目管理,对象库-基本操作(四)-对象库对比与合并(王牌战舰),ToolsObject Repository Comparison Tool ToolsObject Repository Merge Tool,核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,参数化-基本概念(一),在测试应用程序时,可能想检查对应用程序使用不同输入数据进行同一操作时,程序是否能正常的工作。在这种情况下,你可以
16、将这个操作重复录制多次,每次填入不同的数据,这种方法虽然能够解决问题,但实现起来太笨拙了。QuickTest提供了一个更好的方法来解决这个问题参数化测试脚本。 使用 QuickTest 可以通过将固定值替换为参数,扩展基本测试或组件的范围。该过程(称为参数化)大大提高了测试或组件的功能和灵活性。 可在 QuickTest 中使用参数功能,通过参数化测试或组件所使用的值来增强测试或组件。参数是一种从外部数据源或生成器赋值的变量。 QuickTest可以参数化测试或组件中的步骤和检查点中的值。还可以参数化操作参数的值。如果希望参数化测试或组件中多个步骤中的同一个值,可能需要考虑使用数据驱动器,而不
17、是手动添加参数。,参数化-基本概念(二),数据来源可以是:Excel表格,数据库(数据表),XML文件,TXT文件。任何有规则的VBS可以操纵的文件类型都可以作为QTP的数据来源。当然最常用的还是Excel表。参数化测试脚本包括数据输入的参数化和检测点的参数化。,参数化-参数的类型,参数化对象和检查点的属性值 参数化操作的值: 组件参数 环境变量参数 随机数参数,参数化-Data Table,参数化-组件参数,参数化-环境变量参数(一),参数化-环境变量参数(二),随机数参数(三),Browser(“ecshop“).Page(“登录“).WebEdit(“用户名“).Set DataTabl
18、e(“用户名值“, dtGlobalSheet) Browser(“ecshop“).Page(“登录“).WebEdit(“用户名“).Check CheckPoint(“用户名“) Browser(“ecshop“).Page(“登录“).WebEdit(“密码“).SetSecure Environment(“pwd“) Browser(“ecshop“).Page(“登录“).WebButton(“登录“).Click Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“header-frame“).Link(“退出“).ClickBrowser(
19、“ecshop“).Page(“ECSHOP 管理中心“).Frame(“menu-frame“).Link(“文章分类“).Click Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“main-frame“).Link(“添加文章分类“).Click Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“main-frame“).WebEdit(“文章分类名称“).Set DataTable(“文章分类名称“, dtGlobalSheet)fenlei =Browser(“ecshop“).Page(“ECSHOP
20、 管理中心“).Frame(“main-frame“).WebList(“上级分类“).GetROProperty(“items count“) Get_Ran=RandomNumber (1,fenlei-9) Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“main-frame“).WebList(“上级分类“).Select “#“&Get_RanBrowser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“main-frame“).WebButton(“确定“).Click,参数化-运行设置,参数化-分析测试结果,核
21、心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,检查点-什么是检查点?,在QTP中,检查点是一个特殊的步,它比较两个值并显示结果 这两个值是对象的一个属性,也就是测试所产生的相应的值 QTP将测试运行产生的实际结果和测试计划中的期望值进行比较 如果两个值匹配,检查点成功,检查点-在测试脚本中的重要性,没有检查点,录制好的测试脚本不能称为实用的测试脚本。检查点是自动化测试脚本代替测试工程师手工进行测试的主要手段。让我们分析一下测试工程师进行手工测试时的基本逻辑
22、思路。,手工测试,检查点-录制模式下工作机制,Script,Add a checkpoint,Object: Button Logical name: OK Property: enabled Value: True,QUICKTEST (recording),System generated values, like order numbers or object property values captured during recording, become the expected result,检查点-回放模式下工作原理,Script,execute checkpoint,Objec
23、t: Button Logical name: OK Property: enabled Value: True,QUICKTEST (running),检查点-种类,检查点-标准检查点,检查点-Bitmap Checkpoint,检查点-Text CheckPoint,检查点-Text area checkpoint,检查点-表检查点,检查点-Accessibility Checkpoint,核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,Output-
24、基本概念,通过 QuickTest 可以检索测试或组件中的值,并将这些值作为输出值存储。此后,就可以检索这些值,并在运行会话的不同阶段使用该值作为输入。 输出值是一个步骤,在该步骤中,捕获测试或组件中某个特定点的一个或多个值,并在运行会话持续时间存储这些值。随后,在运行会话中的不同点,可以将这些值作为输入使用。 可以输出任何对象的属性值。还可以从文本字符串、表单元格、数据库和XML 文档输出值。 创建输出值步骤时,可以确定运行会话持续时间内的值存储在哪里,以及如何使用这些值。运行会话期间, QuickTest 检索指定点的每个值并将其存储在指定位置。以后当运行会话中需要值时, QuickTes
25、t 将从该位置检索值并根据需要来使用。,Output-参数的类型,标准输出值 文本和文本区输出值 数据库输出值 XML输出值,Output-类型阐述,1标准输出值可以使用标准输出值来输出大多数对象的属性值。例如,在基于 Web 的应用程序中,一个网页中的链接数可能基于用户在上一页的表单中所做选择的不同而变化。可以在测试中创建一个输出值,来存储页面中的链接数。还可以使用标准输出值来输出表单元格的内容。 2文本和文本区输出值可以使用文本输出值来输出屏幕或网页中显示的文本字符串。创建文本输出值时,可以输出对象文本的一部分。还可以指定要在输出文本之前和之后输出的文本。可以使用文本区域输出值来输出 Wi
26、ndows Applications 中屏幕已定义区域内显示的文本字符串。例如,假设在测试的应用程序中,想要存储显示在特定步骤之后的任何错误消息的文本。在 If 语句中,查看带有已知标题栏值(例如 Error)的窗口是否存在。如果该窗口存在,则输出该窗口中的文本(假设窗口大小与所有可能的错误消息的大小相同)。在使用基于Windows的应用程序文本输出值时应注意以下事项:在基于 Windows 的应用程序中创建文本或文本区输出值时使用文本识别机制,有时会检索到不想要的文本信息(例如隐藏文本和带阴影的文本,这些文本会作为同一字符串的多个副本显示)。此外,在不同的运行会话中,文本(和文本区)输出值的
27、表现方式可能不同,具体取决于使用的操作系统版本、已经安装的 Service Pack、安装的其他工具包、的应用程序中使用的 API 等等。,Output-类型阐述,3数据库输出值可以使用数据库输出值,基于在数据库上定义的查询的结果(结果集)来输出数据库单元格内容的值。可以从结果集的全部内容中创建输出值,也可以从其中某一部分创建输出值。在运行会话过程中, QuickTest 从数据库中检索当前数据,并根据指定的设置来输出值。 4XML输出值可以使用 XML 输出值输出 XML 文档中的 XML 元素和属性的值。运行会话完成后,可以在“测试结果”窗口中查看 XML 输出值的概要结果。还可以通过打开
28、“XML 输出值结果”窗口来查看详细结果。例如,假设网页中的某个 XML 文档包含新车的价目表。可以通过选择要输出的相应的 XML 元素值来输出特定汽车的价格。,Output-输出值各插件支持情况,*S-支持 NS-不支持 NA-不适用,Output-标准输入值,Output-文本输入值,Output-Text Area OutPut,实例解析: 解决登录验证码 案例解析:解决Echop有验证码无法回放成功问题 解决办法:插入Text area checkpoint,然后执行copy action。,核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,
29、核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,Spy,核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,TO&RO-三兄弟SETTO、 GETTO、 GETRO,cc=Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“main-frame“).WebElement(“继续添加分类“).GetTOProperty(“innertext“) msgbox cc,TO&RO-
30、GetTOProperties,Set TestObject = Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“main-frame“).WebElement(“继续添加分类“) Set Properties = TestObject.GetTOProperties() 2 PropertiesCount = Properties.Count 3 msgbox PropertiesCountPrint “对象总计存在“ & PropertiesCount & “个封装属性。“ 4For i = 1 To PropertiesCount-1 step
31、15PropName = Properties(i).NamePropValue = Properties(i).Valuemsgbox PropNamemsgbox PropValuePrint PropName & “ = “ & PropValue next,TO&RO- SetTOProperty,cc=Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“menu-frame“).Link(“文章分类“).SetTOProperty(“text“,“文章分类“) Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame
32、(“menu-frame“).Link(“文章分类“).Click cc=Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“menu-frame“).Link(“文章分类“).SetTOProperty(“text“,“商品列表“) Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“menu-frame“).Link(“文章分类“).Click,TO&RO- GetROProperty,Browser(“ecshop“).Page(“登录“).WebEdit(“用户名“).Set DataTable(“用户名值“,
33、 dtGlobalSheet) va=Browser(“ecshop“).Page(“登录“).WebEdit(“用户名“).GetROProperty(“value“) Browser(“ecshop“).Page(“登录“).WebEdit(“用户名“).Check CheckPoint(“用户名“) Browser(“ecshop“).Page(“登录“).WebEdit(“密码“).SetSecure Environment(“pwd“) Browser(“ecshop“).Page(“登录“).WebButton(“登录“).Clickcc=Browser(“ecshop“).Pag
34、e(“ECSHOP 管理中心“).Frame(“menu-frame“).Link(“文章分类“).SetTOProperty(“text“,“文章分类“) Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“menu-frame“).Link(“文章分类“).Click Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“main-frame“).Link(“添加文章分类“).Click Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“main-frame“).WebEdit
35、(“文章分类名称“).Set va Browser(“ecshop“).Page(“ECSHOP 管理中心“).Frame(“main-frame“).WebButton(“确定“).Click,核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,核心功能简介,创建测试 对象库 参数化 检查点 OUTPUT SPY TO&RO 描述性编程,描述性编程-(直描),Browser(“abs_x:=111,abs_y:=261“).Page(“title:=ECSHOP 管理中心“).WebEdit(“name:=username“).Set “caicha
36、ng“ Browser(“abs_x:=111,abs_y:=261“).Page(“title:=ECSHOP 管理中心“).WebEdit(“name:=password“).SetSecure “caichang1“ Browser(“abs_x:=111,abs_y:=261“).Page(“title:=ECSHOP 管理中心“).WebButton(“name:=进入管理中心“).Click,描述性编程-(间描),Set username=Description.Create() username(“html tag“).Value=“INPUT“ username(“name“)
37、.Value=“username“Set pwd=Description.Create() pwd(“html tag“).Value=“INPUT“ pwd(“name“).Value=“password“Set btn=Description.Create() btn(“html tag“).Value=“INPUT“ btn(“name“).Value=“进入管理中心“Browser(“abs_x:=111,abs_y:=261“).Page(“title:=ECSHOP 管理中心“).WebEdit(username).Set “caichang“ Browser(“abs_x:=11
38、1,abs_y:=261“).Page(“title:=ECSHOP 管理中心“).WebEdit(pwd).SetSecure “51a209fe380ea6b4fdb58c353b5dc05657308dcc27a359b3“ Browser(“abs_x:=111,abs_y:=261“).Page(“title:=ECSHOP 管理中心“).WebButton(btn).Click,自动化测试概要(了解),第一章,认识QTP(了解),第二章,QTP核心功能解析(重点),第三章,QTP框架简介(了解),第四章,VBS简介(重点),第五章,课程目 录,QTP框架-例子-QTP自带示例,ht
39、tp:/localhost/ecshop/admin本程序用例只完成了用户登录模块,若读者有兴趣,可以自己补充完成整个登录程序的测试代码设计作者观点: 1:能够最优化你的开发过程的框架就是最好的框架。 2:测试自动化程度越高,风险越大。,QTP框架-例子-流行框架简介,测试脚本模块化框架(The Test Script Modularity Framework)测试库构架框架(The Test Library Architecture Framework) 关键字驱动或表驱动测试框架(The Keyword-Driven or Table-Driven Testing Framework) 数
40、据驱动测试框架(The Data-Driven Testing Framework) 混合的测试自动化框架(The Hybrid Test Automation Framework),QTP框架-QTP自带示例-框架,Data,Lib,Step,Action,OR,Lib: 函数库 OR:对象库 Data:数据源,Action,Test,Run Script,Result,Run Script:启动脚本 Result:测试结果,QTP框架-QTP自带示例-框架,业务函数,基础函数,用例函数,逻辑封装,Action 中 的 测 试 步 骤,LIB库| .VBS文件,存在形式,QTP框架-QTP自
41、带示例-框架,自动化测试概要(了解),第一章,认识QTP(了解),第二章,QTP核心功能解析(重点),第三章,QTP框架简介(了解),第四章,VBS简介(重点),第五章,课程目 录,VBS目录,VBS简介,VBS数据类型,VBS数据控制语句,过程和函数,WSH,VBS简介,VBScript(Microsoft Visual Basic Script Editon).微软公司可视化BASIC脚本版). VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言。 VBS不编译成二进制文件, 直接解释源代码并执行, 简单点说就是你写的程序不需要编译成.exe, 而是直接使用。是
42、asp动态网页默认的编程语言,配合asp内建对象和ADO对象,用户很快就能掌握访问数据库的asp动态网页开发技术。,VBS简介,使用方便 直接调用wsh的COM 灵活使用Windows中的库,比如Access和MSSQL。 应用领域 Windows操作系统 网页浏览器 网页服务器 优点 浏览器解释执行,不需要增大服务器的负担。 易学。 在所有2000 / 98SE以后的Windows版本都可直接使用。 可以使用其它程序和可使用的物件(尤其Microsoft Office)。 缺点 无法作为电子邮件的附件。 操作系统没有任何特别的保护设施。VBS程序与其它JS、EXE、BAT或CMD程序一样对待
43、。操作系统没有监察恶意功能的能力。,VBS目录,VBS简介,VBS数据类型,VBS数据控制语句,过程和函数,WSH,VBScript数据类型,VBScript只有一种数据类型,称为Variant。 Variant是一种特殊的数据类型,根据使用的方式,它可以包含不同类别的信息,所以它也是vbs中所有函数的返回值数据类型,包括empty,null,error三种 可以使用转换函数来转换数据的子类型,另外,可使用VarType函数返回数据的variant子类型。,Variant数据子类型,VBScript变量,使用Dim,private,public显式声明,例如:Dim a 声明多个变量用,分割。
44、例如:Dim a,b,c,d 可以使用变量进行隐式声明 不是一个好习惯 最好显式声明 作为第一条语句,先声明,后使用 命名规则 第一个字符必须是字母 不能包含嵌入的句点 长度不能超过256个字符 在作用域内必须唯一,VBScript变量,变量的作用域和存活期 局部变量 全局变量 变量的赋值 Dim a=123 Dim zelin=“caichang” 数组变量 声明使用用(),如:Dim a(10) 下标从0开始 动态数组用ReDim声明 使用Preserve调整数组大小。 无次数限制。大调小将会丢失被删除元素的数据,VBScript常量,使用Const创建常量,例如:Const Name=“
45、songfu” 建议常量全部大写,避免和变量混淆 内部常量 Msgbox “this is a zelin test” 常用常量,VBScript运算符,目录,VBS简介,VBS数据类型,VBS数据控制语句,过程和函数,WSH,VBS目录,VBScript条件语句-IF,If condition Then statements ElseIf condition-n Then elseifstatements . . . Else elsestatements End If,VBScript条件语句-If.ThenElse,If.ThenElse 单行不需要End If 条件为false和tru
46、e时分别运行某些语句 对多个条件进行判断 Select Case Select Case ivalue Case 1 Msgbox “hello world” Case 2 Msgbox “hello software Testing” Case Else Msgbox “hello zelin testing” End Select,VBScript循环语句,DoLoop WhileWend ForNext For EachNext,VBScript中With语句,对于一个对象执行一系列语句 语法 例如 当程序一但进入With块,object就不能改变。因此不能用一个With语句来设置多个不
47、同的对象 With语句可以嵌套,目录,VBS简介,VBS数据类型,VBS数据控制语句,过程和函数,WSH,VBS目录,VBScript过程,在VBS中,过程分为2类:Sub和Function Sub 无返回值 如Sub无参,则Sub语句必须包含空括号() Function 可以带返回值 通过函数名返回一个值,这个值是在过程的语句中赋给函数名的 返回的类型总是variant 如Function无参,则Sub语句必须包含空括号(),VBScript过程,SubFunction,VBScript过程,agrlist参数 Byte|ByRef varname() Byte 参数按值传递 ByRef 按
48、引用传递 varname 变量名称 过程的声明 没有显示声明时,默认为public Sub和Function局部变量的值在调用过程中不被保留 过程的调用 Call 直接输入过程名调用 支持递归调用,VBScript常用函数(1),字符串函数 Len Left Mid Right InStr InStrRev Ltrim,Rtrim,trim Lcase Ucase Replace StrComp Split Join,VBScript常用函数(2),转换函数 Asc Chr Str Val Cbool Cbyte Ccur Cdate Cdbl Cint Clng Csng Cstr,VBSc
49、ript常用函数(3),判断函数 Isarray Isdate Isempty Isnumeric Isnull Isobject Vartype Typename,VBScript常用函数(4),时间函数 Date Day Hour Minute Month Now Second Time Weekday Weekdayname Year,VBScript常用函数(5),其他函数 Rnd函数和Randomize语句 Createobject函数 GetObject 函数 Int 、Fix函数 Lbound、Ubound函数 Msgbox、InputBox函数,VBScript的对象,Class对象 Property get 语句 Property let语句 Property set语句 Initalize 事件 Terminate 事件 Err对象 属性 Description Helpcontext Helpfile Number source 方法 Clear Raise RegExp对象,VBS简介,VBS数据类型,VBS数据控制语句,过程和函数,WSH,VBS目录,