Flutter 核心技术与实战
陈航
前美团点评高级技术专家
42432 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 48 讲
Flutter 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

38 | 如何通过自动化测试提高交付质量?

使用mockito模拟SharedPreferences的方式,为两个方法实现对应的单元测试用例
推荐在项目规模较大且业务特征具有一定延续规律性时考虑UI测试的必要性
UI测试用例的开发和维护代价高
UI测试用例覆盖更广的流程
单元测试用例验证最小可测试单元的行为
自动化测试分为单元测试和UI测试
tester支持各种交互行为
定义、执行和验证UI测试用例
使用flutter_test包提供UI测试的核心框架
在Flutter中编写UI测试用例
模仿真实用户的行为
模拟外部依赖(比如Web服务)进行单元测试
定义、执行和验证单元测试用例
使用test包完成单元测试用例的核心框架
在Flutter中编写单元测试用例
对软件中的最小可测试单元进行验证
提高了测试效率
通过精心设计的测试用例,由机器按照执行步骤对应用进行自动测试
将人驱动的测试行为改为机器执行
编写自动化测试用例以确保应用可以继续正常工作
随着产品功能迭代累积,测试工作量和复杂度增长
移动应用的测试工作量大
使用Flutter提供的渲染开关和CPU帧图(火焰图)来检查应用中的问题
找到性能瓶颈的两类问题:GPU渲染问题和CPU执行耗时问题
在真机上以分析模式运行应用
思考题
总结
UI测试
单元测试
自动化测试
测试验收应用的各项功能表现
性能问题分析与优化
单元测试、UI测试:如何通过测试提高交付质量?
参考文章

该思维导图由 AI 生成,仅供参考

你好,我是陈航。
在上一篇文章中,我与你分享了如何分析并优化 Flutter 应用的性能问题。通过在真机上以分析模式运行应用,我们可以借助于性能图层的帮助,找到引起性能瓶颈的两类问题,即 GPU 渲染问题和 CPU 执行耗时问题。然后,我们就可以使用 Flutter 提供的渲染开关和 CPU 帧图(火焰图),来检查应用中是否存在过度渲染或是代码执行耗时长的情况,从而去定位并着手解决应用的性能问题了。
在完成了应用的开发工作,并解决了代码中的逻辑问题和性能问题之后,接下来我们就需要测试验收应用的各项功能表现了。移动应用的测试工作量通常很大,这是因为为了验证真实用户的使用体验,测试往往需要跨越多个平台(Android/iOS)及不同的物理设备手动完成。
随着产品功能不断迭代累积,测试工作量和复杂度也随之大幅增长,手动测试变得越来越困难。那么,在为产品添加新功能,或者修改已有功能时,如何才能确保应用可以继续正常工作呢?
答案是,通过编写自动化测试用例。
所谓自动化测试,是把由人驱动的测试行为改为由机器执行。具体来说就是,通过精心设计的测试用例,由机器按照执行步骤对应用进行自动测试,并输出执行结果,最后根据测试用例定义的规则确定结果是否符合预期。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了如何通过单元测试和UI测试来提高Flutter应用的交付质量。作者首先讨论了性能优化的方法,然后重点探讨了自动化测试的重要性以及如何使用Flutter提供的单元测试和UI测试功能。在单元测试部分,作者详细介绍了使用test包编写测试用例的方法,并通过示例演示了单元测试的基本用法和常见技巧。此外,还介绍了如何模拟外部依赖以进行更全面的单元测试。在UI测试部分,作者强调了UI测试对于验证Widget功能是否符合预期的重要性,并提供了相关的用例和示例。整体而言,本文通过具体的代码示例和实际操作指导,帮助读者了解了如何通过测试来提高应用的交付质量。文章还提到了UI测试的覆盖范围更广、更关注流程和交互,可以找到单元测试期间无法找到的错误。同时,也指出了UI测试用例的开发和维护代价较高,需要权衡投入和回报。最后,文章提出了一个思考题,引发读者思考并参与讨论。整体而言,本文内容丰富,涵盖了Flutter应用测试的方方面面,对于开发人员提高应用交付质量具有一定的指导意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Flutter 核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(6)

  • 最新
  • 精选
  • 舒大飞
    想请教下,看了dart的单线程执行异步任务,像future这种执行网络请求的话,直接把任务放进event queue同步执行,那么then的任务如何处理,等网络请求返回再放进event queue?具体整个过程是怎样的,希望解答一下,谢谢

    作者回复: 网络调用的执行是由操作系统提供的另外的底层线程做的,和Dart就没关系了。event queue里只会放一个网络调用的最终执行结果(成功或失败)及响应执行结果的处理回调。

    2019-09-25
    3
  • 小师弟
    group('SharesPreferences', () { test('updateSP', () async { final prefs = MockPreferences(); int counter = 1; when(prefs.setInt('counter', counter)).thenAnswer((_) async => true); expect(await updateSP(prefs, counter), true); }); test('increaseSPCounter', () async { final prefs = MockPreferences(); when(prefs.getInt('counter')).thenAnswer((_) => 2); expect(await increaseSPCounter(prefs), 3); }); });

    作者回复: 赞👍

    2019-09-24
    1
  • imp
    刚学习flutter,运行UI 测试用例(已连接真机),没有看到程序启动和点击渲染动作,想了解下 Flutter应用的 UI 测试就是这样的么?

    作者回复: 文章中介绍的测试更多的是基于功能单元和渲染模型的,验证的是逻辑和交互的正确性。如果你想在真机上自动的测试应用程序的运行状态,需要使用集成测试:https://flutter.cn/docs/cookbook/testing/integration/introduction,使用方式和UI测试类似

    2019-10-15
  • 水木年华
    老师,我在vscode里面想要 打断点调试代码, 显示如下报错,是出现了什么问题呢 Could not install build/ios/iphoneos/Runner.app on 792911392a7daaf2c375d213cd31d9c5389ef79c. Try launching Xcode and selecting "Product > Run" to fix the problem: open ios/Runner.xcworkspace

    作者回复: 按照错误提示看,你应该需要打开ios目录下的Runner.xcworkspace文件,点击build按钮

    2019-09-24
  • 大土豆
    完全照搬了Android的test和androidTest两个目录的作用。。。果然是Google出品
    2019-09-24
    1
    2
  • IF-Processing
    如果是生产环境的测试,是不是应该使用类似多真机的适配性测试和功能性测试呢?这样的测试,一般上是不是会用类似Jenkins,gitlab等带有CI功能的集成管理环境进行测试呢?flutter怎么与这些工具进行集成,能否介绍些实际上生产中使用的CI/CD工具,以及Flutter在其上进行测试的例子呢?
    2020-02-06
    1
收起评论
显示
设置
留言
6
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部