浅谈移动应用测试



1. 有哪些测试框架和工具?

1. Appium测试 (功能测试,用户接受度测试,黑盒测试)

Appium测试相当于黑盒测试。只是测试UI逻辑正确性。所以Appium测试框架提供的方法有限。获取一个AppiumDriver对象。该对象只是有很多findElements() 的方法,获取到UI元素。UI元素是WebElement,这个类提供的方法基本是获取信息为主,比如获取 name,classtagName,location,text,isSlected,isTouched等信息。还有一个点击事件产生函数 click()。遗憾的是没有longClick()事件。整个测试框架只有这2个比较有用的对象可以操作。所以整体上看,这个这个测试框架,只是测试 UI逻辑的正确性,不能升入测试业务逻辑流程。也没有办法去检测。

优点:

§ Open Source

§ 可以使用不同语言来编写测试代码

§ 可以测试不同平台程序:Android/iOS/Web/Hybrid

§ 社区较活跃窗体顶端窗体底端

2. Robotium测试 (功能测试,用户接受度测试,黑盒+白盒测试)

优点:

§ Quite popular for android testing

§ 可以对源码测试,也可以测试apk

§ 可以测试Android Native和Android Hybrid App

§ 可以测试网络链接和声音等

§ Open Source

§ 社区较活跃,资料比较好找窗体顶端窗体底端

3. AndroidTest (单元测试,逻辑测试,白盒测试)

ActivityTest,ServiceTest,ContentProviderTest。能够获取每一个组件的 资源,并且注入代码进行测试。

1) Activity Testing 主要是测试Activity的,主要测试的方向是以下三个方向:

§ 对于Activity的生命周期的控制。

§ Dependency injection: Instrumentation allows you to create mock system objects such as Contexts or Applications and use them to run the activity under test. This helps you control the test environment and isolate it from production systems. You can also set up customized Intents and start an activity with them.(翻译不太好,大概就说依靠注入去产生模拟对象然后模拟系统环境。)

§ 控制UI的控件元素,然后产生触控事件。这个功能类似Appium描述的。

2) Service Testing 测试的是Service生命周期是否正常

3) Content Povider Testiing 因为provider是一个数据出入口,所以测试的是数据能否正常被读取出来,能否正常写入。测试这个provider提供的URI是否全部正常。测试一些非法的URI是否能够被拦截等。 总的来说Android自带的是单元测试。适合白盒测试。Android 自带的Test的话能够获取的UI界面或者什么的更多的信息,提供的测试方式也更多。窗体顶端

窗体底端

4. Monkey (压力测试)

这个是Android提供的系统工具。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

§ 测试的对象仅为应用程序包,有一定的局限性。

§ Monky测试使用的事件流数据流是随机的,不能进行自定义。

§ 可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

窗体顶端窗体底端

5. monkeyRuner (功能测试,用户接受度测试,黑盒测试) 

这个是用python编码实现的测试。主要有3个类MonkeyDevice、MonkeyImage、MonkeyRuner。最主要是通过运行程序,在程序中提供按键或触摸事件的输入数值然后截屏,通过截屏对比是否是正常的运行。事件API: press (string name, dictionary type) touch (integer x, integer y, integer type) drag (tuple start, tuple end, float duration, integer steps) startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component, flags) 等事件

窗体顶端窗体底端6. UIAutomator - 官方 (黑盒测试,功能测试) - Rating: 7

Pro:

§ 可以测试需要在不同app之间切换的情况

§ 官方支持

Cons:

§ 只能测试Android native app

§ 需要Android SDK 4.1+

§ 无法获取当前load的activity

§ 无法做网络链接测试和声音测试

§ debug过程比较麻烦

主要功能跟APPIUM类似,主要类UIDevice,UiObjec,UiSelector,UiCollection。UIdevice更 Appium的AppiumDriver类比。剩下的更WebElement类比只是划分得更详细。功能上也更Appium类似。通过 text,className等信息找到UI控件然后进行操作。

窗体顶端

窗体底端

2. 哪些第三方的测试平台?

1. 百度移动云测试中心

百度移动云测试中心简称MTC(Mobile TestingCenter)。该中心为开发者提供了上百种主流厂商的移动终端设备及增强模拟器,涵盖了Top 100 Android真机和各种配置的模拟器,方便开发者进行实时的手机应用开发和测试工作。MTC,针对开发者和厂商的不同需求,开放出多种云服务,包括:云测试、云调试、云审核等。

2. iTestin

iTestin  是免费服务移动App开发者的真机自动化云测试客户端工具。基于真实的智能终端设备录制一个测试脚本然后运行,并输出运行结果。覆盖Android和iOS两大设备平台,支持Pad/Phone/SmartTV等智能终端设备。支持功能测试、UI测试、性能测试、稳定性测试、压力测试,返回包括日志和截图的详细测试报告,可结合Testin云测试平台300多款1000多部终端批量验证功能点,帮助开发者快速找到错误原因,提升应用质量,并大幅度降低测试成本,缩减测试周期。

3. 众测的意义在哪?

从模式上来说,这是一种非常「互联网化」的平台级产品,如果要归类的话,可以归为C2B。因为每次测试都会有很多白帽子参加,所以很多厂商会觉得测试得比较全面。我在很多客户那都会听到同一个问题:如何保证你测完后没有遗漏?事实上,这种问题很难回答,而且也没有任何一个安全公司会愿意与客户在这方面签协议。所以到最后很容易演变成客户因为不放心,所以找了好几个安全公司轮流做测试。而众测的模式则相对缓解了客户在这方面的担忧。

众测平台是一个让用户参与产品测试的平台, 旨在更好的提升产品的品质。为需求者提供了一个发布任务的广阔空间,也为用 户创造了能将知识、智慧、创意等转化商业价值和社会价值的机会。

众测的目的是利用大众的测试能力和测试资源,在短时间内完成大工作量的产品体验,并能够保证质量,第一时间将体验结果反馈至平台,再由平台管理人员将信息搜集,交给开发人员,这样就能从用户角度出发,改善产品质量。

参考资料:

http://www.open-open.com/lib/view/open1404378881608.html

1. 有哪些测试框架和工具?

1. Appium测试 (功能测试,用户接受度测试,黑盒测试)

Appium测试相当于黑盒测试。只是测试UI逻辑正确性。所以Appium测试框架提供的方法有限。获取一个AppiumDriver对象。该对象只是有很多findElements() 的方法,获取到UI元素。UI元素是WebElement,这个类提供的方法基本是获取信息为主,比如获取 name,classtagName,location,text,isSlected,isTouched等信息。还有一个点击事件产生函数 click()。遗憾的是没有longClick()事件。整个测试框架只有这2个比较有用的对象可以操作。所以整体上看,这个这个测试框架,只是测试 UI逻辑的正确性,不能升入测试业务逻辑流程。也没有办法去检测。

优点:

§ Open Source

§ 可以使用不同语言来编写测试代码

§ 可以测试不同平台程序:Android/iOS/Web/Hybrid

§ 社区较活跃窗体顶端窗体底端

2. Robotium测试 (功能测试,用户接受度测试,黑盒+白盒测试)

优点:

§ Quite popular for android testing

§ 可以对源码测试,也可以测试apk

§ 可以测试Android Native和Android Hybrid App

§ 可以测试网络链接和声音等

§ Open Source

§ 社区较活跃,资料比较好找窗体顶端窗体底端

3. AndroidTest (单元测试,逻辑测试,白盒测试)

ActivityTest,ServiceTest,ContentProviderTest。能够获取每一个组件的 资源,并且注入代码进行测试。

1) Activity Testing 主要是测试Activity的,主要测试的方向是以下三个方向:

§ 对于Activity的生命周期的控制。

§ Dependency injection: Instrumentation allows you to create mock system objects such as Contexts or Applications and use them to run the activity under test. This helps you control the test environment and isolate it from production systems. You can also set up customized Intents and start an activity with them.(翻译不太好,大概就说依靠注入去产生模拟对象然后模拟系统环境。)

§ 控制UI的控件元素,然后产生触控事件。这个功能类似Appium描述的。

2) Service Testing 测试的是Service生命周期是否正常

3) Content Povider Testiing 因为provider是一个数据出入口,所以测试的是数据能否正常被读取出来,能否正常写入。测试这个provider提供的URI是否全部正常。测试一些非法的URI是否能够被拦截等。 总的来说Android自带的是单元测试。适合白盒测试。Android 自带的Test的话能够获取的UI界面或者什么的更多的信息,提供的测试方式也更多。窗体顶端

窗体底端

4. Monkey (压力测试)

这个是Android提供的系统工具。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。

§ 测试的对象仅为应用程序包,有一定的局限性。

§ Monky测试使用的事件流数据流是随机的,不能进行自定义。

§ 可对MonkeyTest的对象,事件数量,类型,频率等进行设置。

窗体顶端窗体底端

5. monkeyRuner (功能测试,用户接受度测试,黑盒测试) 

这个是用python编码实现的测试。主要有3个类MonkeyDevice、MonkeyImage、MonkeyRuner。最主要是通过运行程序,在程序中提供按键或触摸事件的输入数值然后截屏,通过截屏对比是否是正常的运行。事件API: press (string name, dictionary type) touch (integer x, integer y, integer type) drag (tuple start, tuple end, float duration, integer steps) startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component, flags) 等事件

窗体顶端窗体底端6. UIAutomator - 官方 (黑盒测试,功能测试) - Rating: 7

Pro:

§ 可以测试需要在不同app之间切换的情况

§ 官方支持

Cons:

§ 只能测试Android native app

§ 需要Android SDK 4.1+

§ 无法获取当前load的activity

§ 无法做网络链接测试和声音测试

§ debug过程比较麻烦

主要功能跟APPIUM类似,主要类UIDevice,UiObjec,UiSelector,UiCollection。UIdevice更 Appium的AppiumDriver类比。剩下的更WebElement类比只是划分得更详细。功能上也更Appium类似。通过 text,className等信息找到UI控件然后进行操作。

窗体顶端

窗体底端

2. 哪些第三方的测试平台?

1. 百度移动云测试中心

百度移动云测试中心简称MTC(Mobile TestingCenter)。该中心为开发者提供了上百种主流厂商的移动终端设备及增强模拟器,涵盖了Top 100 Android真机和各种配置的模拟器,方便开发者进行实时的手机应用开发和测试工作。MTC,针对开发者和厂商的不同需求,开放出多种云服务,包括:云测试、云调试、云审核等。

2. iTestin

iTestin  是免费服务移动App开发者的真机自动化云测试客户端工具。基于真实的智能终端设备录制一个测试脚本然后运行,并输出运行结果。覆盖Android和iOS两大设备平台,支持Pad/Phone/SmartTV等智能终端设备。支持功能测试、UI测试、性能测试、稳定性测试、压力测试,返回包括日志和截图的详细测试报告,可结合Testin云测试平台300多款1000多部终端批量验证功能点,帮助开发者快速找到错误原因,提升应用质量,并大幅度降低测试成本,缩减测试周期。

3. 众测的意义在哪?

从模式上来说,这是一种非常「互联网化」的平台级产品,如果要归类的话,可以归为C2B。因为每次测试都会有很多白帽子参加,所以很多厂商会觉得测试得比较全面。我在很多客户那都会听到同一个问题:如何保证你测完后没有遗漏?事实上,这种问题很难回答,而且也没有任何一个安全公司会愿意与客户在这方面签协议。所以到最后很容易演变成客户因为不放心,所以找了好几个安全公司轮流做测试。而众测的模式则相对缓解了客户在这方面的担忧。

众测平台是一个让用户参与产品测试的平台, 旨在更好的提升产品的品质。为需求者提供了一个发布任务的广阔空间,也为用 户创造了能将知识、智慧、创意等转化商业价值和社会价值的机会。

众测的目的是利用大众的测试能力和测试资源,在短时间内完成大工作量的产品体验,并能够保证质量,第一时间将体验结果反馈至平台,再由平台管理人员将信息搜集,交给开发人员,这样就能从用户角度出发,改善产品质量。

参考资料:

http://www.open-open.com/lib/view/open1404378881608.html

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值