Skip to main content Link Menu Expand (external link) Document Search Copy Copied

1. 移动端测试

移动端测试是指针对移动设备(如智能手机、平板电脑等)上的应用程序进行的一系列质量保证活动, 以确保应用的功能、性能、兼容性以及用户体验达到预期标准。 以下是移动端测试的主要内容和步骤:

  1. 安装/卸载测试
    • 安装测试包括验证应用程序能否正确从应用商店或其他渠道下载并成功安装在不同类型的设备上。
    • 卸载测试则关注程序是否能够完全卸载,且不会遗留任何文件或数据导致系统资源浪费或者影响其他应用。
  2. 功能测试
    • 依据产品需求文档设计详细的测试用例,对应用的各个功能模块进行验证,确保业务逻辑正确无误。
    • 包括但不限于用户注册、登录、支付、社交分享、推送通知等功能的正常工作与异常处理情况。
  3. UI测试
    • 检查应用程序的用户界面布局是否适应不同屏幕尺寸和分辨率,包括横竖屏切换时的显示效果。
    • 确保界面元素的位置、颜色、字体大小符合设计规范,交互响应及时有效。
  4. 兼容性测试
    • 测试应用程序在不同的操作系统版本(例如Android的不同API级别、iOS的不同iOS版本)上的运行表现。
    • 考虑到不同设备制造商可能定制的ROM系统,检查应用在不同品牌手机和平板上的兼容问题。
    • 针对不同网络环境(2G、3G、4G、5G、Wi-Fi等)和网络状态(稳定、不稳定、断网恢复等)下的网络兼容性和稳定性。
  5. 性能测试
    • 应用启动时间、操作流畅度、内存占用、CPU使用率、电量消耗等方面的评估。
    • 在高负载场景下测试应用的响应速度和稳定性,如并发用户数增加时的性能瓶颈分析。
  6. 异常测试
    • 测试应用程序在遇到中断事件后的行为,如来电、短信接收、网络切换瞬间、设备重启后应用的状态恢复能力。
    • 模拟低存储空间、低电量、后台被系统清理等情况,检查应用的自我保护机制及提示信息。
  7. 安全测试
    • 验证应用的数据传输安全性,如加密算法的有效性、用户隐私数据的保护措施等。
    • 检查是否存在权限滥用、注入攻击、逆向工程破解等安全隐患。
  8. 回归测试
    • 在每次更新迭代后重新执行关键功能和已知问题的测试,确保新功能添加或修改代码没有引入新的错误。
  9. 用户体验测试
    • 用户友好性、易用性、可访问性的评估,考虑无障碍功能是否完善,符合人机交互设计原则。

综合以上测试类型,一个全面的移动端测试策略需要覆盖各种真实用户场景, 确保最终发布的应用程序能够在多种条件和环境下为用户提供优质体验。

2. 常用测试工具

Jacoco:代码覆盖率

ExtentReport:java测试报告

jmeter:

Apache JMeter是一款开源的性能测试工具,是使用率最高的性能测试工具之一,能够对Web应用进行测试。 JMeter最初被设计用于进行Web应用测试,但后来扩展到了其他测试领域,可用于测试静态和动态资源, 如静态文件、Java小服务程序、CGI脚本、Java对象、数据库和FTP服务器等等。

使用JMeter,可以对服务器、网络或对象模拟巨大的负载,在不同压力类别下测试它们的强度和分析整体性能。 另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证程序是否返回了期望结果。 为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

JMeter的体系结构包括一个线程池,在线程池中模拟用户的并发行为。采样器可以理解为用户发起的请求, 比如发起获取用户列表的一起请求,在发起请求之前,可能需要登录验证, 这时候可以在前置处理器中将身份牌亮出来,以便服务器能够接受发起的请求。

总的来说,JMeter是一个功能强大的开源工具,可用于对Web应用进行压力测试和性能分析。

selenium

Selenium是一个用于Web应用程序测试的工具,可以直接在浏览器中运行测试,就像真正的用户在操作一样。 它支持多种浏览器,包括IE、Firefox、Safari、Chrome、Opera和Edge等。 Selenium的主要功能包括测试与浏览器的兼容性,测试系统功能,支持自动录制动作和自动生成不同语言的测试脚本。 Selenium可以用于自动化测试和爬虫模拟人操作浏览器, 是目前最广泛使用的开源Web UI(用户界面)自动化测试套件之一。

appnium

Appium是一个开源、跨平台(测试程序跨平台、支持多平台上的app测试)、多语言支持的移动应用自动化工具。 它主要用于对iOS、Android和Windows上的原生、移动Web和混合应用进行自动化测试。

Appium可以测试原生应用,这些应用是用iOS、Android或者Windows SDK编写的。它也可以测试移动Web应用,这些应用是通过移动端浏览器访问的。 另外,Appium还可以测试混合应用,这些应用带有“webview”包装器,用来和Web内容交互的原生控件。

Appium的另一个重要特性是跨平台。 它允许使用同样的API对多个平台(iOS、Android、Windows)进行测试, 并能够在iOS、Android和Windows测试套件之间复用代码。

此外,Appium支持多种开发语言,如Python、Java、Ruby、JavaScript、PHP和C#等, 这意味着开发者可以使用他们熟悉的编程语言来编写测试程序。

airtest

Airtest是一个跨平台的UI自动化测试框架,适用于游戏和应用程序。它基于图像识别原理, 使用图像识别技术来定位UI元素,无需嵌入任何代码对游戏和应用进行自动化测试。 Airtest支持Windows、Android平台和iOS平台,提供跨平台的API,包括安装应用、模拟输入、断言等。 Airtest还提供了一个强大的GUI工具AirtestIDE,可以录制和调试测试脚本, 给QA人员提供了完整的工作流程支持。

使用Airtest可以节省人力、物力、时间、硬件资源等,提升测试效率,特别对于繁琐重复的测试用例, 可以使测试人员更专注于新的测试模块的建立和开发,从而提高测试覆盖率。

monkey:

Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。 它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等), 实现对正在开发的应用程序进行压力测试。 这种测试方法是一种快速有效的测试方法,旨在测试软件的稳定性、健壮性。

Monkey程序是Android系统自带的,由Java语言写成, 在Android文件系统中的存放路径是:/system/framework/monkey.jar。 要运行Monkey程序需要通过adb(AndroidDebug Bridge)来运行。

Instrument

Instrument是性能分析、动态跟踪和分析OS X和iOS代码的测试工具。常见有CPU性能测试、图形性能测试、内存性能测试等,可以让您追踪程序运行的过程,收集数据,并检查所收集的数据。

1、通过Xcode工具栏中Product->Profile(command+i)启动界面 2、建议使用真机测试,数据会更可靠。模拟器运行和真机运行的CPU有差别。 3、应用程序运行一定要发布配置 而不是调试配置

Renderdoc

RenderDoc是一种图形调试器,目前可用于 Windows、Linux、Android、Stadia 和 Nintendo Switch TM 上的 Vulkan、D3D11、D3D12、OpenGL 和 OpenGL ES 开发。

Android Studio Profiler Memory (内存分析工具)

Memory Profiler 是 Android Studio自带的内存分析工具, 可以帮助开发者很好的检测内存的使用,在出现问题时,也能比较方便的分析定位问题, 不过在使用的时候,好像并非像自己一开始设想的样子。

  • 总体Java内存使用看shallow size
  • retained size只是个参考,不准确,存在各种重复统计问题
  • FinalizerReference retained size 大小极其不准确,而且其强引用的对象并没有被算进去,不过finilize确实可能导致内存泄漏
  • native size再8.0之后,对Bitmap的观测有帮助。

3. 代码扫描

  • SonarQube:代码扫描
  • PMD:代码扫描
  • FindBugs:代码扫描
  • Checkstyle:代码扫描