谁有空天猎在线播放电影分享一下百度云链接?谢谢兄弟姐妹们!

1939人阅读
编程语言(8)
行业应用(9)
。这个是我后来找到的自动化完美解决方案。
谈到企业级自动化测试,大家肯定会想到,等自动化测试软件,这些软件无论在成熟度还是在用户认可度上都比较高,但它们都有致命的缺点,,都需要钱去买且价格不菲。,并不是专门针对本企业产品所设计,所以会出现测试功能点不能完全涵盖的缺陷。也正是是这些缺点限制了它们你能大范围的使用。
那如何能让自己企业的软件能应用上自动化测试且不受上述缺点的限制呢?一个答案,构建属于自己的企业自动化测试框架。
那我们接下来谈下自动化测试要测试什么我以一个购物网站京东商城为例:&比如京东商城是每隔个月发布一个新版本,那么在新版本即将上线的时候,就要把新版本的所有功能和所有流程手工执行一遍,以确保新版本在发布的时候没有。手工测试的时候最主要测试的三点是什么呢?,手工点击页面去完成某个流程,如购物,退款等。,连接上数据库检测下相应的数据库表有没有被正确修改。,检测下购物网站所特有的业务,比如消息的发送(如购物网站的订单信息发送到客户关系网站让业务人员能完成退单和换地址等功能)。
闲话少说:首先我们来用一段代码来告诉下什么叫自动化。
建一个工程,百度谷歌下这两个包加入到你的工程中(,),如图所示:
&&&&&建一个类:
&import&org.openqa.selenium.server.RemoteControlC
import&org.openqa.selenium.server.SeleniumS
import&com.thoughtworks.selenium.DefaultS
import&com.thoughtworks.selenium.S
public&class&TestJingDong&{
&*&@param&args
&*&@throws&Exception
public&static&void&main(String[]&args)&throws&Exception&{
//&建立并启动Selenium&Server
SeleniumServer&
RemoteControlConfiguration&cfg&=&new&RemoteControlConfiguration();
server&=&new&SeleniumServer(cfg);
server.boot();
}&catch&(Exception&e)&{
//&TODO&Auto-generated&catch&block
e.printStackTrace();
//&启动Selenium&
selenium&=&new&DefaultSelenium(&localhost&,&4444,&&*iexplore&,
selenium.start();
selenium.windowMaximize();
//&Selenium&设定页面响应时间最大值
selenium.setTimeout(&600000&);
//&打开执行页面
selenium.open(&/product/286048.html&);
//等待20秒等待页面加载
Thread.sleep(20000);
selenium.click(&xpath=id('InitCartUrl')&);
Thread.sleep(20000);
selenium.click(&xpath=id('GotoShoppingCart')&);
Thread.sleep(20000);
selenium.click(&xpath=id('gotoOrderInfo')&);
Thread.sleep(5000);
selenium.type(&xpath=id('loginname')&,&&testjingdongcom&);
selenium.type(&xpath=id('loginpwd')&,&&jingdong&);
selenium.click(&xpath=id('loginsubmitframe')&);
Thread.sleep(10000);
selenium.type(&xpath=id('consignee_addressName')&,&&张俊卿&);
selenium.select(&xpath=id('consignee_province')&,&&index=2&);
Thread.sleep(5000);
selenium.select(&xpath=id('consignee_city')&,&&普陀区*&);
Thread.sleep(10000);
selenium.select(&xpath=id('consignee_county')&,&&桃浦新村*&);
selenium.type(&xpath=id('consignee_address')&,&&上海西站&);
selenium.type(&xpath=id('consignee_message')&,&&&);
.click(&xpath=id('part_consignee')//div[@class='footer']/input&);
Thread.sleep(5000);
selenium.check(&xpath=id('IdPaymentType1')&);
String&s&=&selenium
.getText(&xpath=id('part_cart')//div[@class='middle']//tr[@class='align_Center']/td[1]&);
System.out.println(s);
我们能看到,当你执行这个类的时候,这个程序会代替你手工执行页面去京东订购一件商品。
下面是它执行的时候所产生的日志文件。
17:52:46.350&INFO&-&Preparing&Firefox&profile...
17:52:50.037&INFO&-&Launching&Firefox...
17:52:56.085&INFO&-&Got&result:&OK,f5af93f896a24a5f893c9b1d6b576129&on&session&f5af93f896a24a5f893c9b1d6b576129
17:52:56.085&INFO&-&Command&request:&windowMaximize[,&]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:52:56.100&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:52:56.100&INFO&-&Command&request:&setTimeout[600000,&]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:52:56.116&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:52:56.116&INFO&-&Command&request:&open[/product/286048.html,&]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:53:17.320&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:53:37.321&INFO&-&Command&request:&click[xpath=id('InitCartUrl'),&]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:53:37.352&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:53:57.353&INFO&-&Command&request:&click[xpath=id('GotoShoppingCart'),&]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:53:57.368&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:17.367&INFO&-&Command&request:&click[xpath=id('gotoOrderInfo'),&]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:17.383&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:22.383&INFO&-&Command&request:&type[xpath=id('loginname'),&xhyspring]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:22.414&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:22.414&INFO&-&Command&request:&type[xpath=id('loginpwd'),&]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:22.445&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:22.445&INFO&-&Command&request:&click[xpath=id('loginsubmitframe'),&]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:22.461&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:32.476&INFO&-&Command&request:&type[xpath=id('consignee_addressName'),&张俊卿
17:54:33.492&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:33.492&INFO&-&Command&request:&select[xpath=id('consignee_province'),&index=2]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:33.507&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:38.507&INFO&-&Command&request:&select[xpath=id('consignee_city'),&普陀区
17:54:38.523&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:48.616&INFO&-&Command&request:&select[xpath=id('consignee_county'),&桃浦新村
17:54:49.553&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:49.553&INFO&-&Command&request:&type[xpath=id('consignee_address'),&上海西站
17:54:49.569&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:49.569&INFO&-&Command&request:&type[xpath=id('consignee_message'),&]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:49.585&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:49.585&INFO&-&Command&request:&click[xpath=id('part_consignee')//div[@class='footer']/input,&]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:49.600&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:54.600&INFO&-&Command&request:&check[xpath=id('IdPaymentType1'),&]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:54.647&INFO&-&Got&result:&OK&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:54.647&INFO&-&Command&request:&getText[xpath=id('part_cart')//div[@class='middle']//tr[@class='align_Center']/td[1],&]&on&session&f5af93f896a24a5f893c9b1d6b576129
17:54:54.663&INFO&-&Got&result:&OK,286048&on&session&f5af93f896a24a5f893c9b1d6b576129
呵呵,运行完上面程序,大概你对自动化有个初步的印象,别急,我们对上面这个程序在做修改。
首先把这个脚本类做成以方式运行的类,有些数据比较经常变动的就不要放在这个类里面,可以放在外部文件里。
创建一个文件放在目录下,命名为,内容如下:
PRODUCTID=286048
NAME=&testjingdongcom
PASSWORD=jingdong
public&class&TestJingDongTest1&{
SeleniumServer&
&*&@throws&java.lang.Exception
public&void&setUp()&throws&Exception&{
RemoteControlConfiguration&cfg&=&new&RemoteControlConfiguration();
server&=&new&SeleniumServer(cfg);
server.boot();
}&catch&(Exception&e)&{
//&TODO&Auto-generated&catch&block
e.printStackTrace();
//&启动Selenium&
selenium&=&new&DefaultSelenium(&localhost&,&4444,&&*firefox&D:\\Program&Files\\Mozilla&Firefox\\firefox.exe&,
selenium.start();
selenium.windowMaximize();
//&Selenium&设定页面响应时间最大值
selenium.setTimeout(&600000&);
&*&@throws&java.lang.Exception
public&void&tearDown()&throws&Exception&{
selenium.close();
server.stop();
&*&Test&method&for&{@link&TestJingDongTest#execute()}.
&*&@throws&InterruptedException&
public&void&testExecute()&throws&InterruptedException&{
&&&&private&static&String&PROPERTIES_FILE&=&&resource&;
&&&&private&static&String&PRODUCTID;
&&&&private&static&String&NAME;
private&static&String&PASSWORD;
&&&&&&&&ResourceBundle&rb&=&ResourceBundle.getBundle(PROPERTIES_FILE);
&&&&&&&&PRODUCTID&=&rb.getString(&PRODUCTID&);
&&&&&&&&NAME&=&rb.getString(&NAME&);
&&&&&&&&PASSWORD&=&rb.getString(&PASSOWRD&);
selenium.open(&/product/&+PRODUCTID+&.html&);
//等待20秒等待页面加载
Thread.sleep(20000);
selenium.click(&xpath=id('InitCartUrl')&);
Thread.sleep(20000);
selenium.click(&xpath=id('GotoShoppingCart')&);
Thread.sleep(20000);
selenium.click(&xpath=id('gotoOrderInfo')&);
Thread.sleep(5000);
selenium.type(&xpath=id('loginname')&,&NAME);
selenium.type(&xpath=id('loginpwd')&,&PASSWORD);
selenium.click(&xpath=id('loginsubmitframe')&);
Thread.sleep(10000);
selenium.type(&xpath=id('consignee_addressName')&,&&张俊卿&);
selenium.select(&xpath=id('consignee_province')&,&&index=2&);
Thread.sleep(5000);
selenium.select(&xpath=id('consignee_city')&,&&普陀区*&);
Thread.sleep(10000);
selenium.select(&xpath=id('consignee_county')&,&&桃浦新村*&);
selenium.type(&xpath=id('consignee_address')&,&&上海西站&);
selenium.type(&xpath=id('consignee_message')&,&&&);
.click(&xpath=id('part_consignee')//div[@class='footer']/input&);
Thread.sleep(5000);
selenium.check(&xpath=id('IdPaymentType1')&);
String&s&=&selenium
.getText(&xpath=id('part_cart')//div[@class='middle']//tr[@class='align_Center']/td[1]&);
System.out.println(s);
if(Integer.valueOf(s)&0){
System.out.println(&&你所订购的商品已经产生,商品号是&:&+s);
getQuery(&select&*&from&product&where&product&id&=&+s);
Date&date=new&Date();
SentMessageToCustomerService(s+date.toString());
&&&&public&void&getQuery(String&sql)&{
&&&&&&&&&&try&{
&&&&&&&&&&&&&&&&Connection&conn&=&getConnection();
&&&&&&&&&&&&&&&&if&(conn&!=&null)&{
&&&&&&&&&&&&&&&&&&&&&&Statement&statement&=&conn.createStatement();
&&&&&&&&&&&&&&&&&&&&&&ResultSet&rs&=&statement.executeQuery(sql);
&&&&&&&&&&&&&&&&&&&&&&int&c&=&rs.getMetaData().getColumnCount();
&&&&&&&&&&&&&&&&&&&&&&while&(rs.next())&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&System.out.println(&你所要的商品在数据库中已保存&);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&for&(int&i&=&1;&i&&=&c;&i++)&{
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&System.out.print(rs.getObject(i));
&&&&&&&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&&&&&&&rs.close();
&&&&&&&&&&&&&&&&}
&&&&&&&&&&&&&&&&freeConnection(conn);
&&&&&&&&&&}&catch&(SQLException&e)&{
&&&&&&&&&&&&&&&&e.printStackTrace();
&&&&&&&&&&}
&&&&public&void&SentMessageToCustomerService(String&xml)&{
&&&& //add&you&JMS&function
呵呵,这个测试的脚本是不是已经能符合网站的基本测试需求了,当你运行一下这个脚本的时候,以前需要手工测试人员手工去做的工作自动化脚本就能自行替你完成了。
当写的这种自动化的脚本多的时候,可以采用suit的方法去执行它们,当运行suit文件的时候,suit里所有指定的脚本类都能被依次执行
import&org.junit.runner.RunW
import&org.junit.runners.Suite.SuiteC
@RunWith(value=org.junit.runners.Suite.class)&&
@SuiteClasses({&&&&
TestJingDongTest1.class
TestJingDongTest2.class
TestJingDongTest3.class
TestJingDongTest4.class
TestJingDongTest5.class
TestJingDongTest6.class
TestJingDongTest7.class
TestJingDongTest8.class
TestJingDongTest9.class
TestJingDongTest10.class
public&class&TestSuit&{
一个简单的小自动化框架就成型了,当然,这种小框架的能力成熟度达不到检验企业大型网站的成熟度的,那么企业级自动化框架需要的是哪些东西呢。
1,脚本语言的管理,在很多企业自动化脚本都是测试人员来写,所以决定脚本语言不可能让java写,只是让他们按照你制定的语言来写,然后你的框架能把语言翻译成java类来执行。
2,测试结果既日志的显示,日志要考虑展示的方式,因为这就是测试报告,日志展示要清晰明了。
3,测试脚本的组织和管理,比如一个大型购物网站,它有几千多个case这些测试脚本怎么管理,每次运行时要运行哪些。
4.大量测试数据运行时多线程分布式处理。
在下面的章节中,我们会一步步的展示这些怎么实现的。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:12347次
排名:千里之外
原创:11篇
(1)(2)(6)(2)开发快报: 页面打印功能,websocket 强制下线功能,玩转websocket技术&&【金牌】 获取【下载地址】& &QQ:
A 代码生成器(开发利器);&& & &增删改查的处理类,service层,mybatis的xml,SQL( mysql& &和oracle)脚本,& &jsp页面 都生成 & &就不用写搬砖的代码了,生成的放到项目里,可以直接运行 B 阿里巴巴数据库连接池 &&数据库连接池&&阿里巴巴的 druid。Druid在监控、可扩展性、稳定性和性能方面都有明显的优势 C 安全权限框架 &&Shiro 是一个用 Java 语言实现的框架,通过一个简单易用的 API 提供身份验证和授权,更安全,更可靠 D ehcache 自定义二级缓存; &&是一个纯Java的进程内缓存框架,具有快速、精干等特点 &&是一种广泛使用的开源Java分布式缓存。 E 微信接口开发(2.5版本新增)(后续会加入Activiti5 工作流 ) ------------------------------------------------------------------------------------------------------------------------- 1. 模块化、服务化,流程化,耦合度低、扩展性好,灵活度高,工具类封装完整,干净利索,调用简单方便 2. 提供Rest服务,支持APP手机应用(android和ios)接口、php、.net、易语言、VB等第三方接口调用 3. 全新高大尚HTML5+css3.0+bootstrap响应式开发界面UI,( 手机 PC 平板 截图在下面)、前沿.&&spring restful 风格 4. 框架搭建完善成熟,在此基础上做过很多项目,系统具有并发处理、分布式、稳定性。 5. 系统功能完善,此为框架平台,文档、注释齐全,提供技术支持,专门供二次开发 6. 在此基础上可二次开发(OA、ERP、CRM ,医疗管理、金融、网站后台、APP后台、电子商务、商城(赠送UI)等等 7.我们这边是公司,主要业务是定制开发,&&此系统为我们平时给客户做项目用的,经过很多项目实战考验 &&-------------------------------------------------------------------------------------------------------------------------系统模块 1. 组织管理:角色管理,分角色组和成员,有组权限和成员权限。 2. 系统用户:对各个基本的组会员增删改查,单发、群发邮件短信,导入导出excel表格,批量删除 3. 会员管理:对前台用户管理,分配会员级别,到期时间,状态,联系信息等资料 4. 菜单管理:增删改查菜单 ztree(自定义菜单)业务菜单和系统菜单分离 5. 数据字典:无限级别,支持多级别无限分类。内设编号,排序等 6. 系统设置:修改系统名称,邮件服务器配置,短信账号设置,图片水印配置,微信配置 7. 代码生成:打开代码生成器模块& &&& 8. 图库管理:对批量上传的图片统一管理 9. 性能监控:监控整个系统的性能,SQL监控,SQL防火墙,URL监控,SPRING监控,SESSION监控等 10. 接口测试:POST or GET 方式检测系统接口,参数加密,json返回结果,计算服务器响应时间 11. 发送邮件:单发,群发邮件& & 12. 置二维码:生成 or&&解析二维码& &&& 13.地图工具:经纬度操作 14.即时通讯:打开即时聊天窗口 15.在线管理:(统计在线人数和在线列表,可强制某用户下线),同一用户只能在一个客户端登录 16.打印测试:页面打印预览测试------------------------------------------------------------------------------------------------------------------------- 菜单权限:分配给每个角色不同的菜单权限, 每个角色看到的菜单不同
按钮权限:独立分配不同的角色不同的功能权限,增删改查权限分配具体到不同的菜单
支持多用户分权限管理后台,&&权限具体到不同的菜单不同的按钮 --------------------------------------------------------------------------------------------------------------信息模块(小项目代码中) 新闻管理:新闻的维护、发布、权重排序等 采用百度ueditor富文本框
公告管理:公告的维护、发布
广告管理:广告的维护、发布,状态维护,上传广告图片
友情链接:友情链接的维护、状态维护
特别推荐:特别推荐、状态维护 微信模块 关注回复:微信用户关注公众号回复 文本回复:匹配关键词进行文本回复 图文回复:匹配关键词进行图文回复 应用命令:匹配关键词进行命令操作,例如微信发送命令,执行服务器重启、关机、锁定等操作 ------------------------------------------------------------------------------------------------------------------------- 技术点 1. 导出 导入 excel 文件 2&&导出word文件 3. IO 流上传下载文件 4. 群发邮件,可以发html、纯文本格式,可以发给任意邮箱(实现批量发送广告邮件) 5. 群发or单独 发送短信,支持两种第三方短信商接口 6. spring& &aop&&事物处理 7. 代码生成器 (freemarker), 代码 zip 压缩打包 8. MD5加密 SHA加密(登录密码用此加密)接口加密身份校验 9. 数据库连接池&&阿里的 druid。Druid在监控、可扩展性、稳定性和性能方面都有明显的优势,支持并发 10.加入安全框架 shiro (登录授权)(session管理) 11.根据汉字 解析汉字的全拼(拼音)和首字母(导入excel到用户表,根据用户的汉字姓名生成拼音的用户名) 12.app接口@ResponseBody(支持与其它语言数据交互) 13.极光推送 (推送给APP及时消息,APP不启动也能收到) 14.微信接口(身份验证,文本、图文回复等) 微信远程控制服务器重启、锁定、其它应用程序 15.java Quartz 定时器 (定时执行某程序,精确到秒,可设置周期) 16.java websocket 即时通讯技术,点对点,群聊,单聊,EXT4对话框 17.新增Lucene全文检索 18.Base64传输图片 19.图片加水印(图片水印,文字水印) 20.生成 or&&解析 二维码 21.HTML5 + JAVAEE&&WebSocket 通信技术,WebSocket 验证用户登录,强制某用户下线 22.批量异步上传图片,可预览,有进度条,支持拖拽上传(百度webuploader )。列表动态滑动放大展示。 23.ehcache 自定义二级缓存 ,选择缓存存放目录,处理并发,增加系统性能 24.服务器内部GET POST 请求 25.uploadify 上传插件,单条、批量上传多线程,带进度条,异步,图片、视频, 其它文件格式均可上传 26.地图选点获取经纬度坐标,根据俩经纬度计算距离 27.tab标签页面功能,标签自由切换,不重复操作数据库 ------------------------------------------------------------------------------------------------------------------------- 系统框架为:springmvc + mybaits 3.2 有 maven 版本和 非maven 版本 jdk 1.6 1.7 1.8&&tomcat 6 7 8 数据库:oracle 版本 和 msyql 版本 ( spring3.0 和4.02&&mybaits 3.2)& &&&开发工具:myeclipse&&eclipse 均可
赠送 同UI& && &springmvc + hibernate&&SpringSecurity Lucene Quartz MySQL、Oracle、SQL Server
------------------------------------------------------------------------------------------------------------------------- 系统演示视频:/s/1kTDvAn1 之前录的(有点粗糙, 凑合着看) qq:
-------------------------------------------------------------------------------------------------------------------- PC实物截图如下
登录界面背景用HTML5特效自动切换(百叶窗,幕布等多种切换方式)
获取【下载地址】& &QQ: &&&
最新教程周点击榜
微信扫一扫

我要回帖

更多关于 空天猎在线播放 的文章

 

随机推荐