《移动App测试的22条军规》—App测试综合案例分析23.19节对微信App进行自动化测试和探索性测试

  1. 云栖社区>
  2. 博客>
  3. 正文

《移动App测试的22条军规》—App测试综合案例分析23.19节对微信App进行自动化测试和探索性测试

异步社区 2017-05-02 12:03:00 浏览1249
展开阅读全文

本节书摘来自异步社区《移动App测试的22条军规》一书中的App测试综合案例分析,第23.19节对微信App进行自动化测试和探索性测试,作者黄勇,更多章节内容可以访问云栖社区“异步社区”公众号查看。

23.19 对微信App进行自动化测试和探索性测试
我们在对微信App进行测试时,必然会进行自动化和探索性测试。

(1)在编写微信App的自动化测试时,我们还是选用Appium来帮助我们录制对应的脚本;而基于测试金字塔的测试架构设计,我们对于Appium的自动化测试,选择编写“用户登录微信后,在通讯录中添加招商银行公众号”这个用户旅程(如图23.45~图23.55所示)。

打开微信App的主界面(如图23.45所示)。
打开“Contacts”(通讯录)页面(如图23.46所示)。


821fe1ffd12158ec8d53314e6f5cd75e3ddac866


e01853e468a8831b850d82312e6adea4502bfcbc

点击右上角的“+”号按钮(如图23.47所示)。
选择“Add Contacts”( 添加朋友)(如图23.48所示)。

0a90e90a11b373f1f1642ef416fbdf64bfd552d9


a55b8077de8e8162058f719711c5e89811542a04

点击搜索框(如图23.49所示)。
在搜索框中输入“cmb”(如图23.50所示)。

898f82a347a700e496fcb98c57896f75cf461929


93515fcc8647f462a6aee9734da0b85526fe22dc

点击“Search: cmb”(如图23.51所示)。
选择搜索结果中的第一个公众号“招商银行”(如图23.52所示)。

ada2ed7101fb546983a7b3daac1acf8fb441637f


ec8d2b468f4efebfe62c8bdfea8d18b7dda87ff3

在招商银行公众号的“Profile”(详细资料)页面点击“Follow”( 关注)(如图23.53所示)。
在弹出的“Note”提示框中选择“Cancel”(取消)(如图23.54所示)。

6f3b66d285d4280c3d2c9d36ff2894916183380e


305fa5e6554ee9e0bb9ee5ee3f935acec2cc6915

点击左上角的返回按钮返回微信App主界面(如图23.55所示)。

6107cf6dc790a4f182f4caf917a83bdec3243ebf

在我们编写针对这个用户旅程的自动化测试时,可以使用Appium的inspector来帮助我们录制对应的脚本(如图23.56所示)。

f314e6ba8431c95157418c6fd6e43fe44f42ee1f

Appium inspector生成的脚本如下。
require 'rubygems'
require 'Appium_lib'
capabilities = {
  'Appium-version': '1.0',
  'platformName': 'Android',
  'platformVersion': '4.4',
  'App':
  '/Users/huangyong/Downloads/weixin600android501.apk',
}
server_url = "http://0.0.0.0:4723/wd/hub"
Appium::Driver.new(caps: capabilities).start_driver
Appium.promote_Appium_methods Object
 find_element(:xpath, "//android.view.View[1]/android.widget.FrameLayout[2]/android.widget.FrameLayout[1]/android. widget.LinearLayout[1]/android.widget.RelativeLayout[1]/android.widget. LinearLayout[1]/android.widget.RelativeLayout[2]/android.widget.LinearLayout[1]/android.widget.TextView[1]").click
find_element(:name, "More function buttons").click
find_element(:xpath, "//android.widget.ListView[1]/android.widget.LinearLayout[2]/ android.widget.LinearLayout[1]/android.widget.TextView[1]").click
find_element(:xpath, "//android.view.View[1]/android.widget.FrameLayout[2]/ android.widget.FrameLayout[1]/android. widget.LinearLayout[1]/android.widget. ListView[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/ android.widget.RelativeLayout[1]/ android.widget.TextView[1]").click
find_element(:xpath, "//android.view.View[1]/android.widget.FrameLayout[1]/ android.view.View[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.RelativeLayout[1]/android.widget.LinearLayout[2]/android.widget.EditText[1]").send_keys "cmb"
find_element(:xpath, "//android.view.View[1]/android.widget.FrameLayout[2]/ android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/android.widget.LinearLayout[1]/android.widget.ListView[1]/ android.widget.RelativeLayout[1]/android.widget. LinearLayout[1]/android.widget.TextView[1]").click
find_element(:xpath, "//android.view.View[1]/android.widget.FrameLayout[2]/android. widget.FrameLayout[1]/android. widget.LinearLayout[1]/android.widget.ListView[1]/ android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.RelativeLayout[2]/android.widget.LinearLayout[1]/android.widget.TextView[1]").click
find_element(:xpath, "//android.view.View[1]/android.widget.FrameLayout[2]/ android.widget.FrameLayout[1]/android. widget.LinearLayout[1]/android.widget. ListView[1]/android.widget.LinearLayout[4]/android.widget.TextView[1]").click
find_element(:xpath, "//android.widget.FrameLayout[1]/android.widget.FrameLayout[1]/ android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[2]/android.widget.LinearLayout[1]/android.widget.Button[1]").click
find_element(:xpath, "//android.view.View[1]/android.widget.FrameLayout[1]/ android.view.View[1]/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]/android.widget.ImageView[1]").click
driver_quit

这样我们把脚本保存下来,就能回放执行自动化测试了。当然,我们不仅需要对测试添加断言Assertion,也需要对录制的脚本进行重构,以达到更好的重用性、维护性和可扩展性。

(2)针对微信App的探索性测试,我们选择以“在朋友圈发送消息”这个用户旅程为例。

通过探索性测试,我们发现在朋友圈发送消息,不仅可以发送朋友圈中明确列出的“Images”(照片)和“Sight”(小视频)消息(如图23.57所示)。

也可以通过长按右上角的照相机图标发表文本(Text)(如图23.58所示)。


3cb58eeaf046f4ee89c62cf6dad9aecf107d97ab


510c959ecb7673432628bd113f3c6d02ab149d25

网友评论

登录后评论
0/500
评论
异步社区
+ 关注