1、 第二部分 WEB应用测试1 web应用程序测试入门软件测试过程目标系统(被测系统)测试用例输入数据输入数据希望的希望的输出结果输出结果usernamepassword登录成功得到实际输出结果实际输出结果?录入输入数据输入数据常见的目标系统Web系统应用程序应用程序游戏游戏多机应用多机应用B/S架构C/S架构架构单机应用单机应用移动应用移动应用B/S架构的目标系统互联网浏览器浏览器浏览器浏览器目标系统(被测系统)网站系统用户与网站系统的交互过程打开浏览器,打开浏览器,键入网站系统键入网站系统的的URL地址地址网站系统向网站系统向网站系统发送发送HTTP请请求求网站系统收到网站系统收到并解析并解
2、析HTTP请请求求网站系统处理网站系统处理HTTP请求请求网站系统将请网站系统将请求处理结果封装求处理结果封装成成HTTP响应响应浏览器收到并浏览器收到并解析解析HTTP响应响应得到得到HTML页面页面用户做出下一用户做出下一步操作步操作HTTP请求HTTP响应网站系统的演进单机多机集群用户数量增加用户数量增加业务更加复杂业务更加复杂网络速度变快网络速度变快提升用户体验提升用户体验单机网站系统组成应用程序应用服务器数据库文件多机网站系统组成应用程序应用服务器数据库文件文件服务器数据库服务器应用缓存技术应用程序应用服务器数据库文件文件服务器数据库服务器分布式缓存服务器1分布式缓存分布式缓存服务器
3、2分布式缓存本地缓存应用程序本地缓存应用服务器2使用集群技术应用服务器文件服务器数据库服务器分布式缓存服务器1分布式缓存分布式缓存服务器2分布式缓存本地缓存应用程序1Nginx/LVS/H5负载均衡器数据库文件分布式缓存服务器2分布式缓存数据库改造应用程序本地缓存应用服务器2应用服务器文件服务器数据库服务器1本地缓存应用程序1Nginx/LVS/H5负载均衡器数据库文件分布式缓存服务器1分布式缓存数据库服务器2数据库主备写操作读操作同步同步CDN和反向代理分布式缓存服务器2分布式缓存应用程序本地缓存应用服务器2应用服务器文件服务器数据库服务器1本地缓存应用程序1Nginx/LVS/H5负载均衡
4、器数据库文件分布式缓存服务器1分布式缓存数据库服务器2数据库主备反向代理服务器CDNCDN文件服务器2文件使用分布式文件系统分布式缓存服务器2分布式缓存应用程序本地缓存应用服务器2应用服务器数据库服务器1本地缓存应用程序1Nginx/LVS/H5负载均衡器数据库文件服务器1文件分布式缓存服务器1分布式缓存数据库服务器2数据库主备反向代理服务器CDNCDN使用NoSQL和搜索引擎文件服务器2文件分布式缓存服务器2分布式缓存应用程序本地缓存应用服务器2应用服务器数据库服务器1本地缓存应用程序1Nginx/LVS/H5负载均衡器数据库文件服务器1文件分布式缓存服务器1分布式缓存数据库服务器2数据库主
5、备反向代理服务器CDNCDNNoSQL数据库搜索引擎拆分应用服务器文件服务器2文件分布式缓存服务器2分布式缓存应用程序本地缓存A业务应用服务器2数据库服务器1Nginx/LVS/H5负载均衡器数据库文件服务器1文件分布式缓存服务器1分布式缓存数据库服务器2数据库主备反向代理服务器CDNCDNNoSQL数据库搜索引擎A业务应用服务器1应用程序本地缓存B业务应用服务器2B业务应用服务器1消息队列服务器WEB系统技术架构的革新系统技术架构的革新未曾停止未曾停止等待你的发现 第二部分 WEB应用测试1 web性能测试软件性能测试 狭义的性能测试是指在给定条件基准的前提下被测目标系统能达到的运行程度。测
6、试被测目标系统在给定环境下的运行性能,度量其性能与预定义目标的差距。广义的性能测试则是压力测试、负载测试、强度测试、并发(用户)测试、大数据量测试、配置测试、可靠性测试等和性能相关的测试统称。软件性能测试 定义:在极限负载(大数据量、大量并发用户等)情况下的测试,查看应用系统在峰值使用情况下操作行为,以及当负载降低后系统的状态,从而有效地发现系统的某项功能隐患、系统是否具有良好的容错能力和可恢复能力。分类:压力测试分为高负载下的长时间(如24小时以上)的稳定性压力测试稳定性压力测试和极限负载情况下导致系统崩溃的破破坏性压力测试坏性压力测试。目的:发现在什么条件下系统的性能变得不可接受,并通过对
7、应用程序施加越来越大的负载,直到发现应用程序性能下降的拐点。几种性能测试间的区别 负载测试:载重20吨,汽车是否能以100公里时速行驶;或者载重20吨,汽车的最快速度是多少。压力测试:在20吨、30吨、40吨的情况下,汽车是否还能正常行驶,当载重多少时汽车将无法行驶,当汽车无法行驶后减少载重量,汽车是否还能继续正常行驶。容量测试:如果要去汽车以时速100公里的速度行驶,最多可以载重多少吨。为什么要实现性能测试自动化 自动化性能测试的核心是向预部署系统施加工作负载,同 时评估系统性能和最终用户体验。应用程序对目标用户的响应是否足够迅速?应用程序是否能够游刃有余地处理预期用户负载?应用程序是否能够
8、处理业务所需的事务数?在预期和非预期用户负载下应用程序是否稳定?是否能够确保用户在使用此应用程序时感到满意?HP LoadRunner介绍与负载测试设计LoadRunner工具使用一工具简介二工具方法论三VuGen的使用四Controller的使用五Analysis的使用工具简介LoadRunner产品包括五个核心组件:Virtual User Generator:虚拟用户生成器虚拟用户生成器,简称VuGen,用来录制被测目标系统客户端的操作,并自动生成虚拟用户脚本。Controller:控制器控制器,它是整个负载测试的控制中心,用来管理、设计、驱动及监控负载测试场景的执行以及被测目标系统的资
9、源使用情况。Load Generator:负载生成器负载生成器,可以是压力机操作系统中的一个进程或线程,它执行虚拟用户脚本以模拟真实用户的行为对被测目标系统发出请求并接收响应,进而模拟真实的负载。Analysis:分析器分析器,它读取控制器收集的测试过程数据,分析负载测试的结果,进一步生成测试报告。Launcher:加载器加载器,负责提供一个集成的操作界面,从中测试人员可以启动LoadRunner的所有其他组件。术语 场景 场景文件根据性能要求定义每次测试期间发生的事件。Vuser 在场景中,LoadRunner 用虚拟用户(或称 Vuser)代替真实用户。Vuser 模仿真实用户的操作来使用
10、应用系统。一个场景可以包含数十、数百乃至数千个 Vuser。Vuser 脚本 Vuser 脚本描述 Vuser 在场景中执行的操作。由Init、Action、End三部分组成,其中在虚拟用户设置中可以让Action部分重复执行多次,而Init和End部分仅能执行1次。事务 要评测服务器性能,需要定义事务。事务代表要评测的终端用户业务流程。术语 系统用户数系统用户数Nu:使用被测目标系统的总人数 在线用户数在线用户数Nou:高峰时同时访问被测目标系统在线人数 并发用户数并发用户数Ncu:在同一时刻与服务器进行了交互的在线用户数三者存在如下关系:Nu Nou Ncu性能需求 一个拥有4000员工的
11、公司,需要开发一个仅供公司内部员工使用的办公自动化系统(OA系统),最高峰时有500人同时在线人同时在线。对于系统的典型用户来说,一天之内用户使用访问OA系统的平均时长为平均时长为4小时小时,通常用户仅会在8小时工作时间小时工作时间内访问该系统。那么,系统的并发用户数是多少呢?给出了一个并发用户数的推导公式:o3ucucucucuNLNTNNNL为在线用户的平均会话时长,T为考察时间长度,cuN为并发用户数的峰值。o5004=25083=250+3 250=297ucucucucuNLNTNNN工具方法论1.测试计划:测试前要规划测试对象的性能需求,定义压力指标;2.脚本编制:捕获实际用户的业
12、务操作流程,形成自动脚本;3.定义场景:设定所采用的负载方案、业务流程组合和虚拟用户数量;4.执行场景:设定压力管理和执行压力场景,进行性能参数的监控;5.分析结果:使用分析器导出结果生成分析图表;分析结果;6.诊断结论:给出诊断结论;7.调优:针对诊断结果进行调优;生成Vuser的流程 录制业务流程 修改强化脚本 参数化 关联 检查点 集合点 事务化参数化 参数化的作用 通过将一组待提交的数据进行变量化来达到在脚本运行时引入多样数据的目的;关联 关联的作用 将执行过程中从服务端获取即时数据保存在某个变量中,在后续业务中进行提交的机制LoginSession:1a1cc941New Order
13、 SubmitSession:1a1cc941Success1a1cc941=1a1cc941FailedNew Order SubmitSession:1a1cc8401a1cc840!=1a1cc941录制时Sending:LoginReceiving:1a1cc941Sending:Order1a1cc941Receiving:Success回放时Session:1a1cc840Sending:LoginDim ps;Receiving:value-psSending:OrderpsReceiving:Successps=1a1cc840=1a1cc840New Order Submit
14、Session:psps=1a1cc840=1a1cc840检查点 检查点的作用 从业务过程的角度检查用例结果是否正确;运行正确的两个层次:服务器响应正确;业务处理正确;HTTP状态码 LoginUser=wangddPasswd=dd123登录成功Http200密码错误,登录失败Http200服务器崩溃没有响应Http500服务响应正确不等于业务处理正确集合点 集合点的作用 保证用户的绝对并发执行;在模拟多用户对业务流程进行操作时,能够模拟绝对的并发压力;启动点施压点启动点施压点事务化事务化的作用 LoadRunner中默认一个action是一个事务,统计事务处理时间是以整个action来统
15、计。例如,脚本中包含用户登录用户登录、机票检索机票检索、订票订票、支付支付等活动,那么此时度量的结果是完成上述所有操作的总时间。如果希望知道虚拟用户完成每个不同操作的时间,需要使用事务(Transaction)对上述操作进行界定。通过创建事务,可以将连续的业务过程进行事务化分割,能够明确统计每一步骤的处理性能。Controller的使用 场景的设定 运行时设定 监控设定 网络模拟及IP欺骗场景设定 Manual Scenario(手工场景设置)手工设置压力的分布和增长、降低的策略,测试时工具根据设定的压力分配各条脚本的访问用户数量分布,可以选择根据百分比或直接设置绝对数量两种;适用于对预计访问
16、压力的性能评估需要。Goal-Oriented Scenario(目标场景设置)设定压力运行的性能目标,由工具自动调整访问压力来尝试达到;适用于对系统性能需求明确进行验证需要。场景设定 Scenario的设置starttime convert scenarioload generatorsschedule enable ip spoofer Results Rendezvous运行时设定 Run Logic Pacing Think Times Miscellaneous Speed Simulation Proxy Preferences Content Check监控设定 性能监控 tra
17、ns response time trans/sec(passed)网络监控throughput 服务器监控%processor time(Memory)available bytes%disk timeprocessor queue length 专项监控Analysis的使用 导出结果 读取图表 组合图表 取样间隔总结 使用LoadRunner配合合理的方案,能够对系统进行有效的性能测试;性能测试是一项团队合作的工作,需要各个技术角色的参与,从被测系统的开发人员到被测系统的软硬件维护人员多方的配合;HTTP协议状态码的含义100:Continue 101:witching Protocol
18、s 200:OK 201:Created 202:Accepted 203:Non-Authoritative Information 204:No Content 205:Reset Content 206:Partial Content 300:Multiple Choices 301:Moved Permanently 302:Found 303:See Other 304:Not Modified 305:Use Proxy 307:Temporary Redirect 400:Bad Request 401:Unauthorized 402:Payment Required 403:
19、Forbidden404:Not Found 405:Method Not Allowed 406:Not Acceptable 407:Proxy Authentication Required 408:Request Time-out 409:Conflict 410:Gone 411:Length Required 412:Precondition Failed 413:Request Entity Too Large 414:Request-URI Too Large 415:Unsupported Media Type 416:Requested range not satisfia
20、ble 417:Expectation Failed 500:Internal Server Error 501:Not Implemented 502:Bad Gateway 503:Service Unavailable 504:Gateway Time-out 505:HTTP Version not supported Run Logic脚本块由一组脚本组成的集合,脚本块区别于脚本组在于工具的脚本组是固定的,而脚本块使客户自定添加的;脚本组可以含有脚本块;脚本组脚本组是脚本或脚本块的组合,工具有三类固有的脚本组:Init:Init脚本组在一个虚拟并发用户的整个执行周期内只会运行一次;所
21、有该组的脚本或脚本块都只会顺序执行一次;Run:Run脚本组在一个虚拟并发用户的整个执行周期内可以运行多次;End:同Init脚本组End脚本组在一个虚拟并发用户的整个执行周期内只会运行一次;IterationIteration特指的是Run脚本组的迭代;设置Iteration迭代次数时,将影响整个Run脚本组的迭代次数;当Run脚本组需要内迭代时,则可以通过脚本块来进行内循环的设置;Preferences advanced-Winlnet replay instead of Sockets(Windows only)1.Socket和Winsocket,Socket是通用的TCP/IP的协议
22、实现,Winsocket是Socket在Windows下的针对windo Windows ws特性的封装实现,能发挥win Windows dows的特性但通用性较不足;2.Winlnet是实现了Winsocket的动态库;Content Check 将系统的错误封装成便于识别和定位的日志记录;检索服务器返回的数据包是否含有目标内容,存在即说明错误发生;通过LoadRunner进行负载测试负载测试步骤 准备工作,在Jforum系统中注册test01-test10共10个用户 录制脚本,创建Vuser 创建场景,运行测试 形成测试报告,分析结果创建创建VUSER创建用户登录和登出用户登录和登出的
23、Vuser脚本启动界面单击创建/编辑脚本。这时将打开 VuGen 起 始页。创建Web脚本在欢迎使用 Virtual User Generator 区域中,单击新建脚本按钮。这时将打开“新建虚拟用户”对话框,显示“新建单协议脚本”选项。创建Web脚本请确保“类别”是热门协议。VuGen 将列出适用于单协议脚本的所有可用协议。向下滚动列表,选择 Web(HTTP/HTML)并单击创建,创建一个空白 Web 脚本。开始录制单击Next单击Start Recording准备开始录制 在URL中填入JForum论坛的链接地址,注意此处需要替换成虚拟机中论坛的需要替换成虚拟机中论坛的IP地地址址 htt
24、p:/10.254.73.20:8080/jforum/forums/list.page打开IE 初始化Vuser,记录生成的多个事件 点击“登入”连接登录 输入之前已经注册的正确用户名和密码 单击“登录”按钮注销 单击“注销test01”连接。停止录制 单击浮动窗口上的“停止”按钮 出现录制概要“录制概要”包含协议信息以及会话期间创建的一系列操作。VuGen 为录制期间 执行的每个步骤生成一个快照,即录制期间各窗口的图片。保存脚本 单击工具栏保存按钮,输入需要保存的文件名,如login-logout。查看录制的脚本 单击“Action”连接,查看刚刚录制的Vuser脚本要在脚本视图中查看脚本
25、,请选择视图 脚本视图,或者单击脚本按钮。查看录制的脚本可以在该窗口中直接输入 C 或 LoadRunner API 函数以及控制流语句。回放录制的脚本 单击Tasks中的Verify Replay按钮,回放已经录制的脚本 回放成功后,出现右图所示提示。此时仅能说明录制脚本执行正确。回放录制的脚本 若需要确保运行逻辑正确,需要对比录制和回放时快照快照的差别。VuGen为录制期间执行的每个步骤生成一个快照,即录制期间各窗口的图片。添加事务单击单击Add Transaction的链接的链接单击单击New Transaction按钮,先后按钮,先后添加添加login和和logout两个事务两个事务查
26、看事务代码单击Script按钮,切换到脚本视图,可以查看到刚刚添加的事务参数化用户登录信息选择视图 树视图进入树视图;或者单击Tree按钮进入树视图。在测试树中双击 Submit Data:jforum.page步骤。将打开“提交数据步骤 属性”对话框。单击“ABC”按钮,在弹出的对话框中,在“参数名”输入框中输入“username”,单击“Properties”按钮。将常量值更改为变量值 输入文件名“userinfo.dat”单击“Create Table”按钮在弹出的对话框中单击“确定”按钮将常量值更改为变量值 通过“Add Column”和“Add Row”按钮,增加用户名和密码字段,录
27、入test01-test10十个用户的信息在“By number”输入框中输入1单击“Close”按钮以相同的方式将password参数化将常量值更改为变量值 将常量值更改为变量值 完成username和password两个的参数化,单击“确定”按钮。将常量值更改为变量值 切换到脚本视图。可以查看到username和password被参数化将登出中的test01替换为username,从而一起参数化保存对脚本的修改,完成Vuser脚本的制作。关闭Vugen。创建场景创建场景创建新场景打开Controller选择“Manual Scenario”选择login_logout脚本,单击“Add”按
28、钮单击“OK”按钮,将login_logout脚本加入到新场景中。设计场景给场景命名“login-logout”设置“Start Vusers”、“Duration”和“Stop Vusers”单击“Run”按钮,切换到运行界面。增加Load Generator单击“Load Generators”按钮。在弹出对话框中单击“Add”按钮在弹出对话框中,Name输入框中输入“localhost”,单击“OK”按钮,将本机添加到Controller的控制中。设置被监视Windows系统进入被监视windows系统,在开始运行中输入services.msc开启RemoteProcedureCall(
29、RPC)和RemoteRegistry两个服务。进入被监视windows系统,在控制面板中,进入“用户帐户和家庭安全用户帐户管理帐户”选择管理员账户,单击“创建密码”连接,输入密码,如123456单击“创建密码”按钮增加对Windows主机的监控右键单击“Windows Resources”监视窗口,在弹出菜单中选择“Add Measurements”按钮。在弹出对话框中单击“Add”按钮在弹出对话框中,Name输入框中输入运行Tomcat的虚拟机IP地址,如“10.254.73.20”,选择Platform为“Windows Vista”,单击“OK”按钮,将测试机添加到监控中。设置用户名和
30、密码单击“Add”按钮在弹出对话框中,输入被监控的Windows操作系统的管理员的用户名Administrator和密码123456单击“OK”按钮,设置被监控服务器的用户名和密码。单击“保存”按钮,保存修改后的场景。运行测试单击“Start Scenario”按钮,开始测试在运行测试过程中,观察运行时的指标参数,如Hits/Second、Passed Transactions等。测试完成后,查看结果,如右图。形成测试报告形成测试报告形成测试报告单击“Analyze Results”按钮,开始对测试结果进行分析。分析保存测试报告分析测试报告单击“保存”按钮,保存测试报告。谢谢!谢谢!第二部分
31、WEB应用测试3 web自动化测试URL和HTTP协议浏览器服务器请求相应HTTP URL全称是资源描述符,一个URL地址,它用于描述一个网络上的资源,如:http:/ 完整的URL组成:协议协议:/用户名用户名:密码密码域名域名:端口号端口号/目录目录/文件名文件名.文件后缀文件后缀?参数参数=值值#标标志志 HTTP协议定义了与服务器交互的不同方法,最基本的方法有4种:GET,POST,PUT,DELETE,分别对应着对这个资源的查,改,增,删4个操作。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。GET方法n 最常见的解释:l GET使用URL或Cookie传参。而P
32、OST将数据放在BODY中。l GET的URL会有长度上的限制,则POST的数据则可以非常大。l POST比GET安全,因为数据在地址栏上不可见。n 实际上,在HTTP中GET和POST与数据如何传递没有关系;HTTP协议对GET和POST都没有对长度的限制;安全不安全和GET、POST没有关系。GET请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,如:login.action?name=hyddd&password=idontknow&verify=%E4%BD%A0%E5%A5%BD。如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则
33、直接把字符串用BASE64加密,得出如:%E4%BD%A0%E5%A5%BD,其中XX中的XX为该符号以16进制表示的ASCIIPOST方法右键单击浏览器中的Web页面,选择查看源代码,定位到form使用WebScarab进行测试软件安装 双击jar文件执行安装 或者在命令行中执行如下命令:java-jar webscarab-installer-20070504-1631.jar 注:需要到安装包所在目录执行相应程序软件安装(续)进入安装程序,根据向导完成安装运行程序软件 在桌面或开始菜单选择已安装的程序运行模式切换 WebScarab有两种运行模式 Lite Full 本实验中需要使用Fu
34、ll模式运行 从“Tool”中可以对模式进行切换 切换后需要重启程序IE浏览器设置代理 WebScarab具有代理功能,可作为用户和应用间的桥梁 需要修改IE设置IE浏览器设置代理将代理指向为 地址:localhost 端口:8008此时,系统发往外部的请求都会经过代理服务器转发。设置WebScrab代理 选择Proxy-Manual Edit,选中Intercept requests前的复选框,保持GET和POST方法被选中 这样,可以拦截所有浏览器发往外部的请求,除了所有图片和ping_session的请求。注:包括浏览器插件对外的链接访问JForum网站 启动论坛系统,在IE地址栏输入本
35、机的IP地址注:此处需要本机的IP地址。在命令行中键入ipconfig,查看本机的IP地址分析通信机制 对网页的请求会被WebScrab拦截选择“会员注册”功能 单击“会员注册”按钮,IE浏览器发往服务器的请求将被拦截 单击Accept changes按钮,直到进入注册页面。进入注册页面 填写注册信息 会员:wtj,电子邮件: 登录密码:123分析截获请求 注意请求连接及填写的表单信息,POST方法定位用户注册请求 定位到forum.page的请求,其编号为71查看截获的请求双击forum.page请求,打开71号会话注:具体的请求编号因人而异Fuzzer功能 右键单击71号会话,选择Use
36、as fuzz templateFuzzer选择Fuzzer选项卡,查看模板信息添加测试数据 用记事本生成类型如右图所示内容的文本文件,分别保存为userinfo.txt和usermail.txt。文件中每行代表一次请求的数据,可以用作用户名、密码、确认密码等信息。实际测试中可根据测试用例定义生成不同的测试数据文件。导入测试数据 导入userinfo.txt中记录的用户信息导入测试数据 同样的步骤导入usermail.txt中记录的邮件信息进行测试 依次为表单项中的元素进行参数化,即导入测试数据 点击“Start”开始测试,请求数会减少 可修改测试数据,以重复多次完成测试用例检查测试结果 可以
37、查看到测试结果 使用测试脚本添加的用户进行登录测试使用Selenium进行测试Selenium-IDE介绍 使用Selenium IDE对JForum的用户注册模块进行测试 Selenium-IDE是用来开发Selenium测试用例的一个工具。它以易于使用的FireFox插件形式出现,在浏览器显示的页面中,通过在浏览器插件的上下文菜单中执行Selenium的命令,选择向插件传递页面显示内容相关的参数,快速地实现测试用例的开发。安装Firefox浏览器选择典型安装模式选择典型安装模式不需要把不需要把firefox设为默认浏览器设为默认浏览器安装Firefox浏览器不安装第三方工具不安装第三方工具
38、完成安装,立即运行完成安装,立即运行firefox安装Firefox浏览器不导入任何数据不导入任何数据下次启动不检查是否默认浏览器下次启动不检查是否默认浏览器安装Firefox插件 单击Alt键显示菜单,从“工具”菜单选择“附加组件”选择“从文件安装附加组件”选项 在弹出文件选择窗口中选择selenium-ide-2.9.0.xpi插件,在浏览器将弹出的菜单中选择“安装”按钮 选择“立即重启”安装Selenium IDE重启浏览器后,在“工具”菜单中选择“Selenium IDE”运行之。注意:首先打开需要运行测试用例的页面,然后再启动Selenium IDE。Selenium IDE功能按钮
39、介绍详见http:/seleniumhq.org/docs/02_selenium_ide.html 录制脚本修改脚本 系统同时会记录用户所有输入,包括错误输入信息 在录制脚本后需要修改输入,包括删除错误输入内容加入校验信息 选择成功注册用户后系统的提示信息“恭喜您!”在右键菜单中选择“verifyText css=center b恭喜您!”选项 此时会在IDE中出现校验命令运行测试用例 保存测试用例 运行测试用例运行测试用例 分析错误原因 修改测试用例代码,直到测试用例通过SELENIUM WEBDRIVER高级内容:通过Java编程对JForum的登录模块进行测试安装Maven 解压Mav
40、en压缩文件apache-maven-3.0.3-bin.zip到C盘根目录,目录结构如右图所示 设置系统环境变量M2_HOME,变量值为Maven的解压路径,例如:C:apache-maven-3.0.3修改系统环境变量PATH 将M2_HOME下的bin目录加入系统环境变量PATH中辅助选项 设置MAVEN_OPTS环境变量为:-Xms256m-Xmx512m 避免运行maven时出现内存溢出错误检查Maven安装 在命令行中输入mvn-version,正确安装后应该有类似如下输出结果 注意:安装Maven前必须已经正确安装配置JDK,并设置JAVA_HOME创建本地仓库 创建c:m2目录
41、,并将repository.rar压缩文件解压到c:m2目录下,生成本地仓库。设置环境变量M2_REPO,指向本地仓库的路径配置用户访问的settings.xml 修改安装目录下conf文件夹里的settings.xml文件,在图示位置增加一行本地仓库的配置。将修改后的settings.xml位置文件拷贝到本地资源库中,即C:m2repository目录下。检查m2eclipse插件 依次点击菜单栏中的FileNewProject,在弹出的对话框中,找到Maven一项,再将其展开 看到如图所示选项,说明Eclipse环境中已经安装了Maven的插件;否则需要手工安装该插件。禁用内嵌m2ecli
42、pse内嵌Maven模块 通过Windows-Preferences打开Eclipse系统选项 在弹出的对话框中展开左边的Maven项,选择Installation子项 点击Add然后选择我们的Maven安装目录M2_HOME 添加完毕之后选择这一个外部的Maven检查Eclipse中的Maven插件设置 单击User Settings选项,确保用户设置和本地资源库设置正确编写pom.xml文件 在任意位置创建MySel20Proj目录,编写如下pom.xml文件 4.0.0 MySel20Proj MySel20Proj 1.0 org.seleniumhq.selenium seleniu
43、m-java 2.47.1 创建maven项目 在工程目录下运行:mvn clean install 如果本地资源库配置正确,Maven将从本地资源库生成原始工程 出现BUILD SUCCESS字样说明创建成功。生成项目框架 运行结束后,Maven将在工程目录下的target文件夹中生成如下项目框架。该框架即为Selenium-WebDriver项目导入MySel20Proj项目到Eclipse 运行命令mvn eclipse:eclipse导入MySel20Proj项目到Eclipse File-Import.General-Existing Projects into Workspace
44、选择“Browse”定位到MySel20Proj目录 选择“Finish”,完成项目导入创建源文件夹 创建src/main/java源文件夹 这是Maven的默认源文件夹,然后创建主测试文件登录页面代码分析通过FireFox浏览器的“查看元素”功能查看登录窗口的源代码对比登录前后页面变化登录前,页面顶部有“登录”连接,对于id为login登录后,页面顶部有“注销”连接,对于id为logout对比登录前后页面变化登录前,页面顶部左侧仅显示当前系统时间登录后,页面顶部左侧显示用户最后一次登录时间创建测试主文件创建一个新的创建一个新的Class填写包名和类名填写包名和类名创建测试主文件package
45、 cn.edu.cuit.cs.selenium.example;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;import org.openqa.selenium.WebElement;import org.openqa.selenium.firefox.FirefoxDriver;import org.openqa.selenium.support.ui.ExpectedCondition;import org.openqa.selenium.support.ui.WebDriverWait;publi
46、c class TestLogin public static String username=TiejunWang;public static String password=justatest;创建测试主文件public static void main(String args)/Create a new instance of the Firefox driver/Notice that the remainder of the code relies on the interface,/not the implementation.WebDriver driver=new Firefo
47、xDriver();/And now use this to visit JForumdriver.get(http:/localhost:8080/jforum/forums/list.page);/Find the useranme and password elements by their namesWebElement usernameElement=driver.findElement(By.name(username);WebElement passwordElement=driver.findElement(By.name(password);创建测试主文件/Enter use
48、rname and password for loginusernameElement.sendKeys(username);passwordElement.sendKeys(password);/Check the welcome message before loginSystem.out.println(Before login);WebElement element=driver.findElement(By.className(gensmall);System.out.println(Welcome message is:+element.getText();/Now submit
49、the form.WebDriver will find the form for us from the elementusernameElement.submit();/Wait for the page to load,timeout after 10 seconds(new WebDriverWait(driver,10).until(new ExpectedCondition()public Boolean apply(WebDriver d)return(d.findElement(By.id(logout)!=null););创建测试主文件/Check the welcome m
50、essage after loginSystem.out.println(After login);element=driver.findElement(By.className(gensmall);System.out.println(Welcome message is:+element.getText();/Close the browserdriver.quit();运行测试文件 右键单击TestLogin.java文件,选择“Run AS”选择“Java Application”查看结果 此时程序会通过WebDriver同Firefox进行通信,自动进行登录并返回结果 请确认此时Se