自我介绍

测开自我介绍:偏嵌入式

我叫柯泽灵,毕业于浙江大学信息与通信工程,目前在TPLINK的研发杭州分部测试8课担任自动化负责人,

主要工作内容有两块,一是视频后端产品和智能家居产品的业务测试工作,包括测试用例开发、执行和缺陷跟踪;

这块因为我们自动化小组主要负责相对成熟的产品,占工作内容的40%左右;

二是负责视频后端产品线约200人的效能提升工作,包括效能平台开发,流水线系统开发,构建CI/CD 流程;

除此之外还会开发自动化工具与框架:包括UI自动化和接口自动化框架,以及性能测试工具等;

在效能提升工作上,我擅长发现工作中的痛点问题,自驱动地去使用技术方法推进解决;

  • 比如陪测摄像头不足时,我设计开发虚拟IPC工具,运行后可以模拟上千台摄像头;
  • 业务测试效率低,我开发接口自动化框架和UI自动化框架,提供低代码或零代码的自动化测试途径;
  • 产品软件版本快速迭代经常引入新问题,我推动构建CICD的流水线,每日对重要分支的代码做版本构建,在夜间进行dailyBuild的自动化测试并反馈报告;
  • 最终开发基于DJango的工程效能平台,整合开发和测试过程的工具链,集中管理自动化测试的资源,比如容器云环境、硬件设备和网络拓扑等,实现涵盖研发测试全流程的流水线系统;

APP测试的重点和难点:

重点:

  1. 功能性测试: 确保应用程序的功能符合需求,是 APP 测试的核心重点。
  2. 用户体验测试: 用户体验对于 APP 成功与否至关重要,需要重点关注用户界面、交互设计和响应速度。
  3. 兼容性测试: 应用程序需要在各种设备和操作系统上正常运行,需要重点测试兼容性。
  4. 性能测试: 应用程序的性能直接影响用户体验,需要重点测试性能指标。
  5. 安全性测试: 确保应用程序的数据安全和用户隐私,是 APP 测试的重要方面。

难点:

  1. 多平台兼容性: 应用程序需要在多个平台上运行,兼容性测试是一个挑战。
  2. 快速迭代: APP开发周期短,需要快速测试并反馈,测试人员需要高效率地进行测试。
  3. 用户体验: 用户体验测试需要考虑用户行为和心理,需要细致入微地测试用户体验。
  4. 安全性: 安全性测试需要专业知识和技能,发现潜在的安全漏洞需要一定的技术水平。
  5. 自动化测试: 自动化测试需要编写稳定的测试脚本,维护成本较高。

APP测试工具

在进行APP的功能、兼容和性能测试时,可以使用以下工具进行测试:

功能测试:

  • Appium: 一个开源的移动应用自动化测试工具,支持多种移动平台(iOS、Android)和多种编程语言。
  • Espresso: 一个适用于Android应用的UI自动化测试框架,可用于编写功能性测试用例。
  • XCTest: 适用于iOS应用的测试框架,可用于编写功能性测试用例。

兼容性测试:

  • BrowserStack: 一个基于云的移动应用测试平台,可用于在不同设备和浏览器上进行兼容性测试。
  • Sauce Labs: 另一个基于云的测试平台,支持在各种设备和操作系统上进行兼容性测试。

性能测试:

  • Apache JMeter: 一个用于性能测试的开源工具,可用于模拟多种负载情况下的性能测试。
  • LoadRunner: 一款功能强大的性能测试工具,可用于测试应用程序在高负载情况下的性能表现。
  • Gatling: 一个基于Scala的现代化负载测试工具,适用于测试Web应用程序的性能。

以上工具可以帮助测试人员有效地进行APP的功能、兼容和性能测试,提高测试效率和覆盖范围。根据具体的测试需求和环境,选择合适的工具进行测试是非常重要的。

各操作系统的特性

Android操作系统基本组成和重要原理:

  1. Linux内核: Android基于Linux内核,提供了底层硬件驱动和系统资源管理。
  2. 应用框架: 包括各种API和系统服务,为应用程序提供访问设备功能的接口。
  3. 应用程序: 用户界面、系统应用和第三方应用,构成Android应用生态系统。
  4. Dalvik/ART虚拟机: 用于执行Android应用程序的虚拟机,将Java字节码转换为机器码执行。
  5. 安全模型: Android采用基于权限的安全模型,应用程序需要请求权限才能访问系统资源。

针对Android特性开发测试APP:

  1. 多设备兼容性测试: 使用多种不同型号和版本的Android设备进行测试,确保应用在各种设备上正常运行。
  2. 适配不同分辨率: 测试应用在不同分辨率和屏幕尺寸下的显示效果和布局适配性。
  3. 性能测试: 测试应用在不同设备上的性能表现,包括响应速度、内存占用和电量消耗。
  4. 权限管理测试: 测试应用在权限管理方面的表现,确保应用只请求必要的权限。

iOS操作系统基本组成和重要原理:

  1. Darwin内核: iOS基于Darwin内核,提供了底层硬件驱动和系统资源管理。
  2. Cocoa Touch框架: 包括UIKit、Foundation等框架,用于构建iOS应用的用户界面和功能。
  3. Xcode开发工具: 提供了iOS应用开发所需的集成开发环境。
  4. Objective-C/Swift语言: 用于编写iOS应用程序的编程语言。
  5. 安全模型: iOS采用基于沙盒的安全模型,应用程序只能访问自己的沙盒内数据。

针对iOS特性开发测试APP:

  1. 设备兼容性测试: 测试应用在不同型号和版本的iOS设备上的兼容性。
  2. 界面设计测试: 测试应用的界面设计是否符合iOS的设计规范和用户体验。
  3. 性能优化测试: 测试应用在iOS设备上的性能表现,包括响应速度、内存占用和电量消耗。
  4. 安全性测试: 测试应用的数据传输和存储是否符合iOS的安全标准。

鸿蒙操作系统基本组成和重要原理:

  1. 微内核架构: 鸿蒙OS采用微内核架构,实现了更好的模块化和可扩展性。
  2. 分布式能力: 鸿蒙OS支持分布式能力,可以实现设备之间的协同工作和资源共享。
  3. 统一开发框架: 提供了统一的开发框架,支持多种应用程序开发方式。
  4. 分布式安全: 鸿蒙OS注重数据隐私和安全,提供了分布式安全解决方案。

针对鸿蒙OS特性开发测试APP:

  1. 分布式功能测试: 测试应用在多设备间的协同工作和资源共享功能。
  2. 多终端兼容性测试: 测试应用在不同类型的终端设备上的兼容性,包括手机、平板和智能家居设备。
  3. 安全性测试: 测试应用在鸿蒙OS上的数据传输和存储安全性,保护用户隐私和数据安全。
  4. 性能测试: 测试应用在鸿蒙OS上的性能表现,包括响应速度和资源占用情况。

通过针对Android、iOS和鸿蒙OS的特性开发测试APP,可以更好地充分利用各操作系统的优势,确保应用程序在不同平台上的稳定性、兼容性和性能。

指标原理解释:

  1. 启动时长: 应用启动时长是指从用户点击应用图标到应用完全加载并显示出来的时间。主要受应用初始化、资源加载和界面构建等因素影响。
  2. CPU/内存: CPU使用率和内存占用是衡量应用性能的重要指标。高CPU使用率可能导致应用卡顿,高内存占用可能导致应用崩溃。
  3. 耗电量: 应用在运行过程中消耗的电量与CPU、网络、传感器等硬件的使用密切相关。高耗电量可能导致用户体验下降。
  4. 流量: 应用在网络传输数据时消耗的流量。需要关注应用在后台是否存在不必要的网络请求,以及数据传输是否经过加密等安全措施。
  5. FPS(每秒帧数): 衡量应用界面流畅度的指标,通常要求保持在60FPS以上,否则用户可能感觉到卡顿。

测试方法:

  1. 启动时长测试: 使用工具记录应用启动时间,可以通过性能分析工具(如Android Studio的Profiler)或第三方工具(如App Launch Timer)进行测量。
  2. CPU/内存测试: 使用性能分析工具监控应用的CPU使用率和内存占用情况,可以通过系统自带的开发者选项或第三方工具(如Android Profiler)进行监测。
  3. 耗电量测试: 使用电量监控工具(如Android系统自带的电池使用情况)监测应用在运行时的耗电量情况。
  4. 流量测试: 使用网络监控工具(如Android系统的流量监控功能或第三方应用)监测应用在传输数据时的流量消耗情况。
  5. FPS测试: 使用性能测试工具(如GameBench)监测应用界面的每秒帧数,评估应用的流畅度。

综合以上测试方法可以全面评估应用的性能表现,发现潜在问题并进行优化,提升用户体验。

客户端性能测试工具

1. PerfDog

PerfDog是一个用于Android设备的综合性能测试工具。它可以测量设备的CPU、GPU、内存和网络性能,并生成详细的报告。

2. SoloPi

SoloPi是一个轻量级的Android基准测试工具,专门用于测试设备的CPU性能。它使用Pi计算基准来衡量设备的单核和多核性能。

3. Android Battery Historian

Android Battery Historian是一个用于分析Android设备电池使用情况的工具。它可以生成电池使用情况报告,并识别耗电最多的应用程序和服务。

性能测试工具定位性能瓶颈

1. 使用PerfDog

  • 运行PerfDog基准测试,并生成报告。
  • 分析报告中的CPU、GPU、内存和网络性能数据。
  • 寻找性能瓶颈,例如CPU使用率过高或GPU帧率过低。

2. 使用SoloPi

  • 运行SoloPi基准测试,并记录单核和多核性能分数。
  • 比较不同设备或不同配置下的性能分数。
  • 寻找性能瓶颈,例如单核或多核性能异常低。

3. 使用Android Battery Historian

  • 运行Android Battery Historian,并生成电池使用情况报告。
  • 分析报告中的应用程序和服务耗电情况。
  • 识别耗电最多的应用程序和服务,并优化其性能。

示例

假设您使用PerfDog测试了一款手机,发现CPU使用率过高。您可以进一步分析报告,查看哪些应用程序或服务导致了高CPU使用率。然后,您可以优化这些应用程序或服务的性能,以减少CPU使用率并提高设备性能。

其他提示

  • 在测试设备性能时,请确保设备已充满电且未连接到充电器。
  • 重复运行基准测试几次,以获得更准确的结果。
  • 将测试结果与其他设备或不同配置进行比较,以识别性能瓶颈。
  • 使用其他工具,例如Systrace或logcat,来进一步分析性能问题。

Appium简介

Appium是一个开源的自动化测试工具,用于测试移动应用程序。它支持iOS、Android和Windows平台上的原生应用、混合应用和移动Web应用的自动化测试。Appium使用WebDriver协议来控制设备并执行测试操作。

Appium的关键点和方法

  1. 环境设置

    • 安装Appium桌面客户端或命令行工具。
    • 配置Appium服务器和所需的驱动器,如Android SDK、Xcode等。
    • 连接移动设备或模拟器,并确保设备可被识别。
  2. Desired Capabilities

    • 在测试脚本中设置所需的Desired Capabilities,包括设备名称、平台版本、应用包名、应用活动名等。
    • Desired Capabilities指定了测试的目标设备和应用程序。
  3. 元素定位

    • 使用Appium提供的定位策略(如ID、XPath、ClassName等)来定位应用程序中的元素。
    • 通过元素定位,可以在测试脚本中模拟用户操作,如点击按钮、输入文本等。
  4. 测试操作

    • 使用Appium提供的WebDriver协议方法来执行测试操作,如点击、输入、滑动等。
    • 可以编写测试脚本来模拟用户在应用程序中的操作流程。
  5. 断言和验证

    • 在测试脚本中添加断言来验证应用程序的行为是否符合预期。
    • 可以使用断言来检查元素是否存在、文本内容是否正确等。
  6. 测试报告

    • 通过Appium生成测试报告,查看测试结果和执行情况。
    • 可以使用测试报告来分析测试覆盖率、失败原因等。
  7. 并行测试

    • 可以通过Appium实现并行测试,同时在多个设备上执行测试用例。
    • 并行测试可以提高测试效率和覆盖范围。

Appium使用示例

import io.appium.java_client.AppiumDriver;
import io.appium.java_client.MobileElement;
import io.appium.java_client.android.AndroidDriver;
import org.openqa.selenium.remote.DesiredCapabilities;
import java.net.URL;

public class AppiumTest {
    public static void main(String[] args) {
        DesiredCapabilities caps = new DesiredCapabilities();
        caps.setCapability("platformName", "Android");
        caps.setCapability("deviceName", "emulator-5554");
        caps.setCapability("appPackage", "com.example.app");
        caps.setCapability("appActivity", ".MainActivity");

        try {
            AppiumDriver<MobileElement> driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), caps);
            
            // 执行测试操作,如点击按钮、输入文本等
            
            driver.quit();
        } catch (Exception e) {
            System.out.println("An error occurred: " + e.getMessage());
        }
    }
}

这是一个简单的Java示例,演示了如何使用Appium和WebDriver协议来测试Android应用程序。在实际使用中,可以根据具体需求和场景编写更复杂的测试脚本。