A. 如何连接数据库
如果您是ACCESS数据库。这是最简单的一种数据库,它通常都是随着数据库源码可以放在一起的,只需要知道FTP地址、账户与密码就可以连接。利用FTP上传工具上传即可。上传工具小编在下方资料参考处提供软件下载链接。
B. 如何使用UIAutomation进行iOS自动化测试
写在前面
研究iOS的自动化测试也有些日子了,刚开始的时候,一直苦于找不到什么好的资料,只能从Apple的官网查阅相关的API文档,只可惜,Apple对开发者来说实在是不怎么友好,文档写得相当的粗略,对于初学者来说有一定的难度。
本来是打算自己动手写一篇关于iOS的UI自动化测试的入门级别的介绍性文档的,但想起来后面在具体解决一些问题的时候,收藏一篇很好的Blog,很全面地介绍了如何使用UIAutomation的JavaScript Libraries做iOS程序的自动化测试。如果作者早点看到这篇文章,应该要少走一些弯路,这里没有创意性的它他翻译成中文,希望对你们有一些帮助。
原文地址:http://blog.manbolo.com/2012/04/08/ios-automated-tests-with-uiautomation
翻译正文:
快速入门
自动化测试代码可以“在你的睡着的时候”很好地帮你测试你的应用程序。它可以让你能够快速地跟踪你程序中的回归和性能方面的问题,这样你就不用担心你新增的功能会影响到你之前已经完成开发的程序了。
随
着iOS4.0的发布,苹果公司同时发布了一个名为UIAutomation的测试框架,它可以用来在真实设备和iPhone模拟器上执行自动化测试。但
官方关于UIAutomation的文档相当的有限,在网络上也没有太多的资源可以查找的。本文将向你展示你如何将UIAutomation整合到你的工
作流程当中去。
作为基础知识的准备,你可以先看一下苹果公司关于UIAutomation的文档,另外还有一篇快速入门的介绍苹果Instruments的文档也值得看看,当然,如果你有一个免费的Apple开发者账号的话,你可以看一下WWDC 2010 - Session 306 – 使用Instruments进行用户界面自动化测试的幻灯片或者视频。
除此之外,包括在Xcode中的OCUnit测试框架也可以用来为你的应用程序编写单元测试。
1. 第一个UIAutomation测试脚本
使用iOS 模拟器
使用iOS设备
2. 处理UIAElement和元素可访问性(Accessibility)
UIAElement层次结构
模拟用户操作
3. 经验分享(让你的生活变得更简单)
类库Tune-up介绍
导入外部脚本
使用强大的命令行
使用录制交互功能
当遇到问题时,加上“UIATarget.delay(1);”
4. 高级交互
处理非预期和预期的提示框(alerts)
多任务
屏幕方向
5. 总结
有用的链接
一个视频
1. 你的第一个UIAutomation测试脚本
UIAutomation的功能测试代码是用Javascript编写的。UIAutomation和Accessibility有着直接的关系,你将用到通过标签和值的访问性来获得UI元素,同时完成相应的交互操作。
下面让我们来编写我们的第一段测试代码。
使用iOS模拟器
1. 下载示例应用程序TestAutomation.xcodeproj,并打开它。这个项目是一个很简单的包含2个tab的tabbar应用程序。
2. 确保选中如下图所示的“TestAutomation > iPhone 5.0 Simulator”模式(或许你已经切换成5.1了,因此它可能是iPhone5.1模拟器)。
3. 启动Instruments(Proct > Profile),或者通过⌘I。
4. 选择左边的iOS Simulator,然后再选择Automation模板,然后点击“Profile”。
5. Instruments就已经启动好后,然后直接开始录制了。这里先停止录制,(红包按钮或者⌘R)。
6. 在左边的Scripts窗口,点击“Add > Create”创建新的脚本。
7. 在脚本编辑器里,输入下面的代码
var target = UIATarget.localTarget();
var app = target.frontMostApp();
var window = app.mainWindow();
target.logElementTree();
8. 重新运行这段脚本⌘R(不需要保存)。脚本跑起来后,你可以在日志打完后停止它。
赞一个!我们就这样完成了我们的第一个UIAutomation测试用例。
使用iOS设备
你除了将你的测试用例运行模拟器上,也可以将它运行在一个真实的设备上。不过,自动化测试用例只能运行在支持多任务的:iPhone 3GS,iPad,iOS > 4.0等设备上。遗憾的是不管iPhone 3G的系统版本是什么,都不支持。
下面是如何操作:
1. 通过USB接口连接上你的iPhone。
2. 选择 “TestAutomation > iOS Device”模式。
3. 确保Developper profile设置成Release模式(而不是Ad-Hoc Distribution profile)。默认情况下,profiling是设置成Release模式的(因为没有必要将profile设置成Debug模式)。
4. 启动测试 (⌘I)
5. 后面的步骤请参考前面模拟器部分。
2. 处理UIAElement和元素可访问性(Accessibility)
UIAElement层次结构
Accessibility和UIAutomation有密切的联系:如果一个控件的Accessibility是可以被访问的,你就可以设置和读取它的值,作相关的操作,而当一个控件的Accessibility不可见时,你就没有办法通过automation访问它。
你可以通过Interface
Builder,或者通过在程序里设置isAccessibilityElement属性的方式来设置一个控件的Accessibility或者可被自动
化。当你设置container
view(即:一个视图包含其它的UIKit元素)的accessibility时,你必须注意。你设置了整个View的accessibility将会
“隐藏”它的子视图的accessibility,例如:在示例项目中,你不能将outlet视图设置成可访问的,否则它所有的子控件将都不可以访问了。
在任何时候,logElementTree都是你忠实的朋友:它将当前界面的所有可被访问的元素都打印在日志里。
每一个可以被访问的UIKit控件都可以用一个Javascript对象来描述,它就是一个UIAElement。UIAElement有几个属
性:name, value, elements,
parent。你的主窗口包含很多的控件,它们是以UIKit层次的方式定义的,这些UIKit层次结构对应的是UIAElement的层次树。例如:前
面的测试代码中,通过调用logElementTree,我们可以得到如下面所示的树结构:
+- UIATarget: name:iPhone Simulator rect:{{0,0},{320,480}}
| +- UIAApplication: name:TestAutomation rect:{{0,20},{320,460}}
| | +- UIAWindow: rect:{{0,0},{320,480}}
| | | +- UIAStaticText: name:First View value:First View rect:{{54,52},{212,43}}
| | | +- UIATextField: name:User Text value:Tap Some Text Here ! rect:{{20,179},{280,31}}
| | | +- UIAStaticText: name:The text is: value:The text is: rect:{{20,231},{112,21}}
| | | +- UIAStaticText: value: rect:{{145,231},{155,21}}
| | | +- UIATabBar: rect:{{0,431},{320,49}}
| | | | +- UIAImage: rect:{{0,431},{320,49}}
| | | | +- UIAButton: name:First value:1 rect:{{2,432},{156,48}}
| | | | +- UIAButton: name:Second rect:{{162,432},{156,48}}
你可以通过下面的代码来访问文本框:
var textField =
UIATarget.localTarget().frontMostApp().mainWindow().textFields()[0];
你可以选择通过从0开始的索引或者这个元素的名称来访问这个元素,例如:你也可以通过下面的代码来访问文本控件。
var textField =
UIATarget.localTarget().frontMostApp().mainWindow().textFields()["User Text"];
后一种方式更加清晰明了,应该多使用。你可以通过Interface Builder设置UIAElement的name属性,
或者通过编写代码的方式:
myTextField.accessibilityEnabled = YES;
myTextField.accessibilityLabel = @"User Text";
你现在可以看到,通过accessibility属性可以被UIAutomation用来找到不同的控件。这非常的清晰,因为,第一,你只要学习一
个测试框架;第二,通过编写自动化测试代码,你同时还可以保证你的程序是可以被访问的。因此,每一个UIAElement对象的子控件可以通过下面的方法
进行访问:
buttons(), images(), scrollViews(),textFields(), webViews(),
segmentedControls(), sliders(), staticTexts(), switches(),
tabBar(),tableViews(), textViews(), toolbar(), toolbars() 等等……
你可以通过如下代码在tabbar上访问第一个tab:
var tabBar = UIATarget.localTarget().frontMostApp().tabBar();
var tabButton = tabBar.buttons()["First"];
UIAElement结构层次非常的重要,你以后会常常用到它。而且你还要记住,你可以在随时通过调用UIAAplication的logElementTree来获得它的结构。
UIATarget.localTarget().frontMostApp().logElementTree();
在模拟器上,你还可以激活Accessibility 的检测器。启动模拟器,找到“Settings > General > Accessibility > Accessibility Inspector”,然后将它设为“打开”状态。
这个彩色的小框框就是Accessibility
检测器了。当它收起来的时候,Accessibility就被关闭了,当它展开的时候,Accessibility就是打开的。你只要点击上面的箭头按钮
就可以激活或者屏蔽Accessibility。现在,打开我们的示例程序,激活检测器。
然后,点击文本框,检查UIAElement的name和value属性(其实就是accessibilityLabel和accessibilityValue对应的NSObject类型的值)。这个检测器可以帮助你调试和编写你的测试代码。
模拟用户操作
让我们更进一步,模拟一些用户的交互操作。你可以简单地调用按钮的tap()来作一个点击操作:
var tabBar = UIATarget.localTarget().frontMostApp().tabBar();
var tabButton = tabBar.buttons()["First"];
// Tap the tab bar !
tabButton.tap();
你还可以调用UIAButtons的doubleTap(), twoFingerTap()。如果你不想操作具体的某个元素,你也可以直接根据屏幕上指定的坐标点进行操作,你可以这么用:
点击:
UIATarget.localTarget().tap({x:100, y:200});
UIATarget.localTarget().doubleTap({x:100, y:200});
UIATarget.localTarget().twoFingerTap({x:100, y:200});
缩放:
UIATarget.localTarget().pinchOpenFromToForDuration({x:20, y:200},{x:300, y:200},2);
UIATarget.localTarget().pinchCloseFromToForDuration({x:20, y:200}, {x:300, y:200},2);
拖拽与划动:
UIATarget.localTarget().dragFromToForDuration({x:160, y:200},{x:160,y:400},1);
UIATarget.localTarget().flickFromTo({x:160, y:200},{x:160, y:400});
注意,当你指定操作的时间间隔的时候,它是有特定的范围的,即:拖拽操作的时间间隔必须大于或者等于0.5秒,小于60秒。
现在,让我们来练习一下:
停止Instruments (⌘R)
在Scripts窗口里, 移除当前的脚本
点击“Add > Import”然后选择TestAutomation/TestUI/Test-1.js(将下面的代码保存到这个路径)
点击录制按钮 (⌘R) 然后看看将会发生什么…
下面是Test-1.js代码:
var testName = "Test 1";
var target = UIATarget.localTarget();
var app = target.frontMostApp();
var window = app.mainWindow();
UIALogger.logStart( testName );
app.logElementTree();
//-- select the elements
UIALogger.logMessage( "Select the first tab" );
var tabBar = app.tabBar();
var selectedTabName = tabBar.selectedButton().name();
if (selectedTabName != "First") {
tabBar.buttons()["First"].tap();
}
//-- tap on the text fiels
UIALogger.logMessage( "Tap on the text field now" );
var recipeName = "Unusually Long Name for a Recipe";
window.textFields()[0].setValue(recipeName);
target.delay( 2 );
//-- tap on the text fiels
UIALogger.logMessage( "Dismiss the keyboard" );
app.logElementTree();
app.keyboard().buttons()["return"].tap();
var textValue = window.staticTexts()["RecipeName"].value();
if (textValue === recipeName){
UIALogger.logPass( testName );
}
else{
UIALogger.logFail( testName );
}
这段脚本先启动待测程序,然后,如果第一个tab没有被选的话就切换到第一个tab,并将上面的文本框的值设成“Unusually Long
Name for a Recipe”,接着收起虚拟键盘。这里有一些新的方法值得注意的:UIATarget的delay(Number
timeInterval) 方法允许你在两个操作之间做一些等待,UIALogger的logMessage( String message)
方法用来将你想打印的信息输出到日志上去,UIALogger的logPass(String
message)方法指明你的测试脚本已经成功的完成测试了。
你还知道了如何访问键盘上的按钮,然后作点击操作:
app.keyboard().buttons()["return"].tap();C. android UI 界面怎么连接sqlite 进行数据库修改
推荐你去下载afinal,安卓的开源项目,可以加载sd卡或者本地的数据库,值得借鉴
做一个android蓝牙接收模块,接收部分已经做好,但是现在想在手机UI界面上面做一个mac地址的筛选功能,就是在UI界面上面输入一些mac地址,当蓝牙接收到匹配的mac地址才进行接收和显D. web自动化需要做数据库校验吗
不需要
因为数据库断言校验一般放在接口自动化中,因为接口本身跳过界面层,直接后台服务,不从界面调,自己从当一个客户端。E. android UI 界面怎么连接sqlite 进行数据库修改
Cursor c=db.query("student", new String[]{}, "_id=?", null, null, null, null); SimpleCursorAdapter adapter = new SimpleCursorAdapter(this,R.layout.listview,c, new String[]{"_id","Sname","Ssex"}, new int[]{R.id.id,R.id.Tname,R.id.Tsex}); setListAdapter(adapter);
F. soapui接口测试怎么连接数据库进行测试
1.新建soapUI工程:右击左侧导航面板中的工作空间节点“Project”,选择“New soapUI Project”,输入工程名称,点击OK
2.新建TestSuite:右击Project名,选择“New TestSuite”
3.新建 TestCase:右击TestSuite名,选择“New TestCase”
4.添加数据源:右击“Test Steps”,选择“Add Step“,选择“DataSource”
5.添加HTTP请求:右击“Test Steps”,选择“Add Step“,选择“HTTP Test Request”
6.添加循环:右击“Test Steps”,选择“Add Step“,选择“DataSource Loop“
7.添加数据源数据:选择数据源类型之后进行添加,下图以excle为例
8.添加http请求数据:选择http请求类型之后进行添加,下图以POST请求为例
9.添加loop:将数据源和http请求关联
10编辑完成后运行测试case进行正确性的测试,为了保证运行的正确性,可以添加断言对结果进行检查
当显示的测试结果为FINISHED时,表示测试通过。G. 一般大公司UI自动化测试使用什么工具呢
1、Selenium:该软件是一个用于Web应用程序测试的工具。其测试直接运行在浏览器中,支持的浏览器包括IE、Mozilla Firefox、Mozilla Suite等。支持Net、Java、Perl等不同语言的测试脚本。
2、Soapui:SoapUI是一款开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试。可快速的帮助用户进行http的接口测试,并且还支持进行检查,监控、符合等功能。
3、Robot Framework:该软件是一款python编写的功能自动化测试框架。具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或者接口,可以进行分布式测试执行。主要用于轮次很多的验收测试和验收测试驱动开发。
4、QTP:该软件提供符合所有主要应用软件环境的功能测试和回归测试的自动化。采用关键字驱动的理念以简化测试用例的创建和维护。它让用户可以直接录制屏幕上的操作流程,自动生成功能测试或者回归测试用例。
5、Jmeter:JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现;可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。
H. 购物流程ui自动化用例怎么设计
软件自动化测试的学习步骤
大概步骤如下:
1. 做好手工测试(了解各种测试的知识)-> 2. 学习编程语言-> 3. 学习Web基础(HTML,HTTP,CSS,DOM,Javascript)或者 学习Winform
-> 4. 学习自动化测试工具 ->5. 学习自动化测试框架 -> 6. 实现自动化测试用例 -> 7. 开发自动化测试工具 ->8. 开发自动化测试框架
自动化测试的最高境界是: 开发测试工具,设计自动化测试框架, 让别人用。
自动化测试的本质
自动化测试的本质是:用程序测试程序。 也就是说学习“编程语言”是学习自动化测试的基础。
很多人问小坦克我学自动化测试,应该去学什么自动化工具。 我的回答是,第一步:应该先学习编程语言,以后再去学自动化测试工具
自动化测试是一定要写代码的, 编程语言水平的高低决定了自动化测试水平的高低, 有了扎实的编程技术,干什么都可以。
学习编程语言时, 要把自己当做开发人员, 系统地学习各种编程知识。
自动化测试学习的误区
很多新手一开始,就学习复杂的自动化测试工具, 我觉得这样是本末倒置了。
如果不先理解HTTP协议, 就不会理解Jemeter, LoadRunner, Fiddler, SoapUI这些工具的。
如果不先理解HTML,DOM, 就不会理解Firebug 这种工具的
如果不先理解Win32 API, 就不会理解Windows 窗体自动化测试的原理的。
如果自己没有开发过网站, 就不会理解网站的各个方面,测试起来难免有遗漏。
总之学习自动化测试,需要循序渐进, 把基础打好。
自动化测试的职位
自动化测试工程师的职位叫做: (SDET) Software Development Engineer in Test. 专注于自动化测试
手动测试工程师叫: (STE)Software test enginer. 专注于手动测试
在微软有很多SDET的职位,但是没有STE的职位, STE职位一般都是外包给外包公司的, 目前自动化测试还是非常吃香的。
自动化测试分类
自动化测试也有非常多的种类,
对Web UI 的自动化测试程序
对Windows 窗体UI的自动化测试程序
API测试, 比如(测试WCF service, Web API 等)
数据库测试, 比如测试存储过程
接口测试 (这种只能用自动化测)
单元测试
性能测试, 性能测试都需要用到自动化I. UI设计师需要完成数据库设计吗
不需要。
在开发当中,第一件事就算根据UI设计师的设计图片来进行数据库的定制,定制数据库是整个开发首当其冲最为重要一层,就好比基建的地基一样,一旦没有建设好,重蹈覆彻的时间、精力成本将会大大的增加。在项目初期务必和团队协商完成数据库的设计。
当前UI设计师的工作内容也可细分为五种,软件界面的美术设计、创意工作和制作工作,根据各种相关软件的用户群,提出构思新颖、有高度吸引力的创意设计,对页面进行优化,使用户操作更趋于人性化,维护现有的应用产品,收集和分析用户对于GUI的需求。J. 套用了Layui登录的模板怎么连接SQL数据库跳转
你这个只是纯静态的html网页,是连接不了sql数据库的,你还要写个后台代码文件处理这些表单信息,form表单里面有个提交url,把这个url指向后台的代码文件