51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1657|回复: 3
打印 上一主题 下一主题

【转】移动APP的自动化测试

[复制链接]
  • TA的每日心情
    无聊
    前天 09:05
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2016-10-10 15:34:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    开发移动应用,最耗时耗力的就是手动测试APP的每个功能点或修复bug。有人就会提议App的业务逻辑可以使用nUnit或xUnit测试单元来辅助完成。那用户界面要如何测试?众所周知,移动设备多种多样,数量及其庞大,设备的类型也是各式各样,要如何才能保证App用户界面在成千上百iOS和Android设备中都能正常显示,没有错误?这是很多APP开发人员最头疼的事情了。

    今天,本文主要介绍如何使用Xamarin提供的UITest来测试app界面。

    访问控件
    当使用Xamarin.Forms创建应用程序时,会使用Xamarin.Forms的控件和XAML创建用户界面。运行时,Xamarin.Forms会根据我们创建的用户界面生成对应的原生应用程序。由于我们正在开发针对Xamarin.Forms控件,因此可通过StyleID 特殊属性在Xamarin.UITests中的访问权限。StyleID可以被设置为任意字符串,创建任何测试功能都可以被直接访问,且无论在iOS或Android应用中StyleID都是一致的,这就意味着不需要特别管理这些ID。
    1. XAML

    2. <Button x:Name="ButtonLogin"
    3.         StyleId="ButtonLogin"
    4.         Grid.Row="5"
    5.         BackgroundColor="#F44336"
    6.         BorderRadius="0"
    7.         TextColor="White"
    8.         Text="Login to Meetup"
    9.         Command="{Binding LoginCommand}" />
    10. c#

    11. var buttonLogin = new Button
    12.   {
    13.     StyleId = "ButtonLogin",
    14.     Text = "Login to Meetup",
    15.     BorderRadius = 0,
    16.     TextColor = Color.White,
    17.     BackgroundColor = Color.FromHex("F443336")
    18.   };
    复制代码
    最后需要做的就是在iOS和Android 应用中添加代码,在原生控件中使用StyleId。这样可以调用Xamarin.UITest。这些代码需要在App的最终版注释掉。

    iOS 设置

    打开iOS的AppDelegate.cs 文件,在FinishedLaunching方法中添加以下代码:
    1. 1:  Forms.ViewInitialized += (sender, e) =>
    2.    2:  {
    3.    3:    if (null != e.View.StyleId)
    4.    4:    {
    5.    5:      e.NativeView.AccessibilityIdentifier = e.View.StyleId;
    6.    6:    }
    7.    7:  };
    复制代码
    Android 设置

    打开MainActivity.cs文件,在OnCreate方法中添加以下代码:
    1. 1:  Xamarin.Forms.Forms.ViewInitialized += (sender,  e) =>
    2.    2:  {
    3.    3:    if (!string.IsNullOrWhiteSpace(e.View.StyleId))
    4.    4:    {
    5.    5:      e.NativeView.ContentDescription = e.View.StyleId;
    6.    6:    }
    7.    7:  };
    复制代码
    现在,可以运行UITest ,打开REPL,则会出现ButtonLogin :

    在UITest,ButtonLogin常用于验证button的交互功能即登录屏幕是否正常出现:
    1. 1:  [Test]
    2.    2:  public void OpenLoginScreen()
    3.    3:  {
    4.    4:    app.Screenshot("App Launches");
    5.    5:    app.Tap("ButtonLogin");
    6.    6:    app.Screenshot("When I tap Login");
    7.    7:    Assert.IsNotNull(app.Query("EntryUserName").Single());
    8.    8:    app.Screenshot("Login Page is Visible");
    9.    9:  }
    复制代码
    亲们学会了吗?通过本篇文章能够让我们实现APP的用户界面的完美自动化测试!这样可以省时省力,高效提升测试效率!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏2
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2020-3-26 10:03
  • 签到天数: 92 天

    连续签到: 1 天

    [LV.6]测试旅长

    2#
    发表于 2016-10-11 10:02:37 | 只看该作者
    说的挺好的,得到
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2016-10-31 18:01:39 | 只看该作者
    我赞成。我赞成。我赞成。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 11:39 , Processed in 0.074152 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表