app 排名网站,wordpress如何添加icp,网络公司给别人做网站的cms是买的授权么,激励视频广告前言
今天#xff0c;我们就要说说5款最常用的Android测试框架#xff0c;并且每个框架都给出了基本的代码示例。
在这我为大家准备了一份软件测试视频教程#xff08;含面试、接口、自动化、性能测试等#xff09;#xff0c;就在下方#xff0c;需要的可以直接去观看…前言
今天我们就要说说5款最常用的Android测试框架并且每个框架都给出了基本的代码示例。
在这我为大家准备了一份软件测试视频教程含面试、接口、自动化、性能测试等就在下方需要的可以直接去观看也可以直接【点击文末小卡片免费领取资料文档】
软件测试视频教程观看处 软件测试工程师大忌盲目自学软件测试真的会毁终生能救一个是一个...... 1.Robotium
不可否认Robotium曾是Android世界之初使用最广泛的Android测试框架风靡一时。由于它与Android有着相似的Selenium所以它能够使得API的测试变得简单起来。
Robotium是一个扩展于JUnit的开源库运用多种有用的方法来支持Android UI测试。它提供的强大的自动化黑箱测试范例可用于Android应用原生的和混合的和web测试。只要源代码允许你就可以通过Robotium写功能、系统和验收测试方案以及测试应用。
Robotium的代码示例
// Public void for the operation
public void testRecorded() throws Exception {
// Wait for the text Hello! to be shown for newbie
if (solo.waitForText(Hello!)) {
// R class ID identifier for Sign in - and click it
solo.clickOnView(solo.findViewById(com.twitter.android.R.id.sign_in));
// R class ID identifier for entering username
solo.enterText((EditText) solo.findViewById(com.twitter.android.R.id.login_username),username);
// R class ID identifier for entering password
solo.enterText((EditText) solo.findViewById(com.twitter.android.R.id.login_password),password);
// R class ID identifier for clicking log in
solo.clickOnView(solo.findViewById(com.twitter.android.R.id.login_login));
// Wait until log in is done
solo.waitForActivity(HomeTabActivity);
}
// Activate the text field to compose a tweet
solo.clickOnView(solo.findViewById(com.twitter.android.R.id.menu_compose_tweet));
// Type the tweet
solo.enterText((EditText) solo.findViewById(com.twitter.android.R.id.edit), Testdroid);
// Tweeting!
solo.clickOnView(solo.findViewById(com.twitter.android.R.id.composer_post));
}
为了给大家提供便捷还有一个用Robotium构建的用于测试脚本创建的一个非常棒的记录工具——Testdroid Recorder。当你在真实设备上执行实际行动时它可以记录你的每一个步骤和每一个行为并转换成JavaScript以便于你进一步的修改。
并且你还可以全权下载和使用它的扩展库——ExtSolo它里面包含了多种还没有被纳入到Robotium中的实用方法例如
支持任意分辨率的x、Y点击自动缩放
多路径拖动
测试故障时自动截图
模拟地点
更改设备语言
控制WiFi连接
官方网站https://code.google.com/p/robotium/
2.uiautomator
虽然Robotium是一个很好的测试框架但是uiautomator能让你在测试Android应用和Android游戏时做得更多。谷歌的测试框架允许你在一个或多个设备上测试原生Android应用的用户界面UI。Uiautomator的另一个优点是它运行的JUnit测试用例是有特殊权限的这意味着测试用例可以跨越不同的进程。它还提供了五种不同的类给开发人员使用
com.android.uiautomator.core.UiCollection;
com.android.uiautomator.core.UiDevice;
com.android.uiautomator.core.UiObject;
com.android.uiautomator.core.UiScrollable;
com.android.uiautomator.core.UiSelector
遗憾的是uiautomator只能工作于API16或更高级别的Android设备上。它的另一个缺点是不支持web视图也没有办法直接访问Android对象。
uiautomator的代码示例
// Public void for the operation
public void testSignInAndTweet() throws Exception {
// Starting application:
getUiDevice().wakeUp(); // Press Home button to ensure were on homescreen
getUiDevice().pressHome(); // Select Apps and click button
new UiObject(new UiSelector().description(Apps)).click(); // Select Twitter and click
new UiObject(new UiSelector().text(Twitter)).click(); // Locate and select Sign in
UiSelector signIn new UiSelector().text(Sign In); // If button is available, click
UiObject signInButton new UiObject(signIn);
if (signInButton.exists()) {
signInButton.click(); // Set the username
new UiObject(new
UiSelector().className(android.widget.EditText).instance(0)).setText(username);
new UiObject(new
UiSelector().className(android.widget.EditText).instance(1)).setText(password);
new UiObject(new UiSelector().className(android.widget.Button).
text(Sign In).instance(0)).click(); // Wait Sign in progress window
getUiDevice().waitForWindowUpdate(null, 2000); // Wait for main window
getUiDevice().waitForWindowUpdate(null, 30000);
}
new UiObject(new UiSelector().description(New tweet)).click(); // Typing text for a tweet
new UiObject(new UiSelector().className(android.widget.LinearLayout).instance(8)).
setText(Awesome #Testdroid!); // Tweeting!
new UiObject(new UiSelector().text(Tweet)).click();
官方网站http://developer.android.com/tools/help/uiautomator/index.html
3.Espresso
Espresso是由Google开源的一款最新的Android自动化测试框架有助于于开发人员和测试人员锤炼出中意的用户界面。Espresso的API体积小、可预见、简单易学构建在Android仪表框架的基础上。使用它能让你快速编写出简洁可靠的Android UI测试。它支持API level 8级Froyo、10Gingerbread和15Ice Cream Sandwich及后续。
一方面它相当可靠因为和UI线程是同步的另一方面又非常之快因为没有任何睡眠的必要当某个毫秒应用程序空转时运行测试。不过它同样不支持web视图。
Espresso的代码示例
public void testEspresso() {
// Check if view with the text Hello. is shown
onView(withText(Hello.)).check(matches(isDisplayed()));
// R class ID identifier for Sign in - and click it
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(com.twitter.android:id/sign_in, null, null))).perform(click());
// R class ID identifier for entering username
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(com.twitter.android:id/login_username, null, null))).perform((typeText(username)));
// R class ID identifier for entering password
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(com.twitter.android:id/login_password, null, null))).perform((typeText(password)));
// R class ID identifier for clicking log in
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(com.twitter.android:id/login_login, null, null))).perform(click());
// Activate the text field to compose a tweet
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(com.twitter.android:id/menu_compose_tweet, null, null))).perform(click());
// Type the tweet
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(com.twitter.android:id/edit, null, null))).perform((typeText(”#Testdroid)));
// Tweeting!
onView(withId(getInstrumentation().getTargetContext().getResources()
.getIdentifier(com.twitter.android:id/composer_post, null, null))).perform(click());
}
官方网站https://code.google.com/p/android-test-kit/wiki/Espresso
4.Calabash
Calabash是一款跨平台的自动化测试框架支持Android和iOS原生和混合的应用程序。Calabash易于理解的语法使得即使是非技术人员也可以在这两个移动平台上为app创建和执行自动化验收测试。Calabash的测试描述于Cucumber然后在运行时转化为Robotium或Frank。它支持约80种不同的自然语言指令控制器并且可以使用Ruby和Java实现新的控制器。
Calabash的代码示例
Feature: Login feature
Scenario: As a valid user I can log into my app
I wait for text Hello
Then I press view with id Sign in
Then I enter text username into login_username
Then I enter text password into login_password
Then I wait for activity HomeTabActivity
Then I press view with id menu_compose_tweet
Then I enter text Testdroid into field with id edit
Then I press view with id composer_post
官方网站http://calaba.sh/
5.Appium
Appium是一款移动的自动化测试框架和工具支持iOS和Android原生和混合的移动Web应用程序。它内部使用的JSONWireProtocol通过Selenium的WebDriver来与iOS和Android应用进行交互。它通过uiautomatorAPI level 16或更高和SeledroidAPI level 低于16支持Android通过UI Automation支持iOS还有Android和iOS都支持的移动web如Selenium driver。
Appium的最大优点在于你几乎可以用任意一种编程语言例如Java、Objective-C、JavaScript、PHP、Ruby、Python和C等来编写Appium脚本而不必选择工具兼容最重要的平台Android和iOS而不必安装和配置设备适应测试等等。并且如果你熟悉Selenium的话那么使用Appium用于移动app测试对你而言将是轻而易举的一件事。因为它们使用相同的WebDriver并且以同样的方式使用DesiredCapabilities。所以Appium与Selenium在配置应用程序运行时有诸多相似之处。
Appium的代码示例
# wait for hello
sleep(3)
textFields driver.find_elements_by_tag_name(textField)
assertEqual(textFields[0].get_attribute(value), Hello)
# click sign-in button
driver.find_elements_by_name(Sign in)[0].click()
# find the text fields again, and enter username and password
textFields driver.find_elements_by_tag_name(textField)
textFields[0].send_keys(twitter_username)
textFields[1].send_keys(passw0rd)
# click the Login button (the first button in the view)
driver.find_elements_by_tag_name(button)[0].click()
# sleep
sleep(3)
# click the first button with name Compose
driver.find_elements_by_name(Compose)[0].click()
# type in the tweet message
driver.find_elements_by_tag_name(textField)[0].send_keys(”#Testdroid is awesome!)
# press the Send button
driver.find_elements_by_name(Send)[0].click()
# exit
driver.quit()
官方网站http://appium.io/ 总结
以上就是我们列出的5款最棒的测试框架可用于日常的Android构建创立和修改。当然每一种框架都有其优势和缺陷。Appium可以同时测试你的Android和iOS版本。但如果你是一个忠实的Android开发人员只开发安卓版本的app那么使用Robotium就很不错的。Testdroid Recorder还可为我们在生成测试脚本节省大量的时间和金钱这是免费的哦。因此好好思考下你的测试需求——功能测试、兼容性测试、UI测试等等——然后为自己选取最适合和最佳的Android测试框架。
PS这里分享一套软件测试的自学教程合集。对于在测试行业发展的小伙伴们来说应该会很有帮助。除了基础入门的资源博主也收集不少进阶自动化的资源从理论到实战知行合一才能真正的掌握。全套内容已经打包到网盘内容总量接近500个G。【点击文末小卡片免费领取】 这些资料对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库这个仓库也陪伴我走过了最艰难的路程希望也能帮助到你凡事要趁早特别是技术行业一定要提升技术功底。