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

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

本节书摘来自异步社区《移动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
相关文章
|
9月前
|
人工智能 搜索推荐 数据管理
探索软件测试中的自动化测试框架选择与优化策略
本文深入探讨了在现代软件开发流程中,如何根据项目特性、团队技能和长期维护需求,精准选择合适的自动化测试框架。
387 11
|
9月前
|
测试技术 持续交付
探索软件测试中的自动化测试策略
随着软件开发周期的加速和市场需求的不断增长,传统的手动软件测试方法已难以满足现代软件开发的高效性和准确性要求。本文旨在探讨自动化测试在软件测试中的重要性、实施策略及其对提高软件质量的影响。通过分析自动化测试的优势与挑战,以及提供实用的自动化测试工具和框架选择指南,旨在帮助读者理解并应用自动化测试以提升软件开发效率和产品质量。
|
9月前
|
机器学习/深度学习 人工智能 监控
软件测试中的自动化测试策略与最佳实践##
在当今快速发展的软件行业中,自动化测试已成为确保软件质量和加速产品上市的关键工具。本文将探讨自动化测试的重要性,分析不同类型的自动化测试工具和框架,并深入讨论实施自动化测试的最佳实践。通过案例研究和数据分析,我们将揭示如何有效整合自动化测试到软件开发生命周期中,以及它如何帮助团队提高测试效率和覆盖率。 ##
155 1
|
10月前
|
机器学习/深度学习 前端开发 测试技术
探索软件测试中的自动化测试框架选择与优化策略####
本文深入探讨了在当前软件开发生命周期中,自动化测试框架的选择对于提升测试效率、保障产品质量的重要性。通过分析市场上主流的自动化测试工具,如Selenium、Appium、Jest等,结合具体项目需求,提出了一套系统化的选型与优化策略。文章首先概述了自动化测试的基本原理及其在现代软件开发中的角色变迁,随后详细对比了各主流框架的功能特点、适用场景及优缺点,最后基于实际案例,阐述了如何根据项目特性量身定制自动化测试解决方案,并给出了持续集成/持续部署(CI/CD)环境下的最佳实践建议。 --- ####
|
10月前
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
602 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
9月前
|
API 开发者
微信native支付对接案例详解
本文详细介绍了微信Native支付的对接流程,包括效果展示、产品介绍、接入前准备、开发指引、API列表、支付通知等,并强调了只有通过微信认证的服务号才能对接微信支付。每年需支付300元认证费用。
383 3
|
9月前
|
Java 测试技术 API
探索软件测试中的自动化测试框架
本文深入探讨了自动化测试在软件开发中的重要性,并详细介绍了几种流行的自动化测试框架。通过比较它们的优缺点和适用场景,旨在为读者提供选择合适自动化测试工具的参考依据。
|
9月前
|
数据管理 测试技术 持续交付
软件测试中的自动化测试策略与最佳实践
在当今快速迭代的软件开发环境中,自动化测试已成为确保软件质量和加速产品上市的关键手段。本文旨在探讨软件测试中的自动化测试策略,包括选择合适的自动化测试工具、构建有效的自动化测试框架以及实施持续集成和持续部署(CI/CD)。通过分析自动化测试的最佳实践,本文为软件开发团队提供了一系列实用的指南,以优化测试流程、提高测试效率并减少人为错误。
255 4
|
9月前
|
监控 测试技术 定位技术
探索软件测试中的自动化测试框架选择与实施###
本文不概述传统意义上的摘要内容,而是直接以一段对话形式引入,旨在激发读者兴趣。想象一下,你是一名勇敢的探险家,面前摆满了各式各样的自动化测试工具地图,每张地图都指向未知的宝藏——高效、精准的软件测试领域。我们将一起踏上这段旅程,探讨如何根据项目特性选择合适的自动化测试框架,并分享实施过程中的关键步骤与避坑指南。 ###
147 4
|
9月前
|
敏捷开发 测试技术 持续交付
自动化测试之美:从零开始搭建你的Python测试框架
在软件开发的马拉松赛道上,自动化测试是那个能让你保持节奏、避免跌宕起伏的神奇小助手。本文将带你走进自动化测试的世界,用Python这把钥匙,解锁高效、可靠的测试框架之门。你将学会如何步步为营,构建属于自己的测试庇护所,让代码质量成为晨跑时清新的空气,而不是雾霾中的忧虑。让我们一起摆脱手动测试的繁琐枷锁,拥抱自动化带来的自由吧!

热门文章

最新文章