GVKun编程网logo

太可惜了,4 面字节跳动,我的软件测试工程师 Offer 竟被一道 App 测试 “送分题” 给拦截了

2

本文的目的是介绍太可惜了,4面字节跳动,我的软件测试工程师Offer竟被一道App测试“送分题”给拦截了的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于ActionCon

本文的目的是介绍太可惜了,4 面字节跳动,我的软件测试工程师 Offer 竟被一道 App 测试 “送分题” 给拦截了的详细情况,我们将通过专业的研究、有关数据的分析等多种方式,同时也不会遗漏关于ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j、angular – ng new hello错误:路径“/app/app.module.ts”不存在.路径“/app/app.module.ts”不存在、APP 自动化 01 - 基础操作 API-UIautomatorviewer-APP 定位 - 元素等待 - APP 模拟手势高级操作、Apple In App Purchase with Introduction Offer (SKProductDiscountPaymentModePayUpFront)的知识。

本文目录一览:

太可惜了,4 面字节跳动,我的软件测试工程师 Offer 竟被一道 App 测试 “送分题” 给拦截了

太可惜了,4 面字节跳动,我的软件测试工程师 Offer 竟被一道 App 测试 “送分题” 给拦截了

一讲到这 APP 测试,可能大家在面试的时候,都会遇到这样子的一些面试题。今天给大家软件测试工程师 APP 面试题做一个简单的梳理。

文章首发于公众号:程序员一凡

APP 面试题

1:App 测试到底有什么样的测试内容?

2.Web 测试与 app 测试到底有什么区别?

最近如果有去面试过的小伙伴,或者以前有去面试过的小伙伴,这两个问题,十个中有八个会被问到。

对于这两个问题我们到底该如何去回答?

第一个,其实它们之间有共同点,也有不同点。

不管是 app 测试还是 web 测试它们的测试流程都是一样的,都是咱们拿到项目的需求之后,对需求去进行分析,然后制定测试计划,然后编写测试用例,执行测试活动,输出测试结果。

不管你是 app、web 测试还是终端测试或者一些金融类产品的测试,其实它的流程都是一样的。

第二个它们的共同点。设计用例的方法也是一样的。比如说等价类、边界值、场景法…… 那么这一些设计用例的方法,它是可以适用于任何一产品或者说任何一个项目的。

 

不同点:

终端是不一样的:一个是 web 端一个是 app 端。

对于 web 来说它搭载的在咱们的 PC 上,通过浏览器进行访问的,浏览器是在 PC 上的。

对于 app 来说,它是运行在手机上,或者一些平板上。这一类移动设备上面,对于移动设备它搭载的系统是 ios 或者 Android 这个是它们的终端不同。

那么第二个不同呢,我们说它的环境不同。

web 测试环境相对比较稳定,不管你是在公司的 pc 还是在家里的 pc 上,或者说是在公共场合的 pc。相对来说它的环境都是比较稳定的。

app 测试,环境相对比较复杂,比如我手机上安装了许多的 app,然后我经过地下通道的时候,一些网络比较薄弱的时候,然后你去省会交界或者国际边界。可能会有多个网络的覆盖,这种相对来说说它的环境是比较复杂的。

如果你去做 app 测试你就要去考虑这一些。

第三个架构不同,web 测试它是一个 B/S 架构。

app 测试它是一个 C/S 架构。

B/S 架构也就是说我们不需要对 web 的这一些网站去进行安装,直接通过浏览器去访问就可以了,B 就是指浏览器。

那么 app 测试的话呢,你都要去对这个 app 去进行安装,通过客户端的方式去进行访问。

 

还是它们去掉网络去做专项测试的时候,或者对功能去进行测试的时候,其实都会有一系列细微的差别,具体看你如何去进行一个分析。

 

这个就是我们常见的一个面试题,以后再遇到这种问题,你都已经胸有成竹!

有收获的朋友记得点赞支持一下! 


然后我们来说第一个问题,App 测试到底有什么样的测试内容?

第一个,我们要知道 app 的这个功能 + UI 如何去进行测试 / 适配测试

 

适配测试我们也把它叫做兼容性测试,那么这里又会衍生出一个面试题,web 测试与 app 测试在兼容性方面有什么不同?

 

更多的面试题可以关注我的公众号:程序员一凡,整理了一份面经,216 页,免费送给大家,回复【面试题】。希望对你有帮助!只求一赞!

ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j

ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j

如何解决ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j

我正在Rails上执行此应用程序,页面加载正常,但在控制台中显示:

Started GET "/vendor/assets/stylesheets/bootstrap.min.css" for ::1 at 2020-08-17 09:09:51 -0500

Started GET "/vendor/assets/javascripts/bootstrap.min.js" for ::1 at 2020-08-17 09:09:51 -0500
ActionController::RoutingError (No route matches [GET] 
"/vendor/assets/stylesheets/bootstrap.min.css"):
ActionController::RoutingError (No route matches [GET] 
"/vendor/assets/javascripts/bootstrap.min.js"):

在我的供应商文件夹中,我同时拥有文件夹,javascript和样式表,并分别位于各自的bootsrtrap.min中。 即使在application.html.erb中,我也有以下内容:

  <link href="vendor/assets/stylesheets/bootstrap.min.css" rel="stylesheet">
  <%= csrf_Meta_tags %>
  <%= stylesheet_link_tag    ''application'',media: ''all'',''data-turbolinks-track'': ''reload'' %>
  <%= javascript_include_tag ''application'',''data-turbolinks-track'': ''reload'' %>

</head>
<body>

  <!-- Navigation -->
  <nav>
    <div>
      <ahref="#">Instagram Clone</a>
      <buttontype="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
        <span></span>
      </button>
      <divid="navbarResponsive">
        <ul>
          <li>
            <ahref="#">Home
              <span>(current)</span>
            </a>
          </li>
          <li>
            <ahref="#">About</a>
          </li>
          <li>
            <ahref="#">Services</a>
          </li>
          <li>
            <ahref="#">Contact</a>
          </li>
        </ul>
      </div>
    </div>
  </nav>

  <!-- Page Content -->
  <div>
    <div>
      <div>
        <%= yield %>
      </div>
    </div>
  </div>

  <!-- Bootstrap core JavaScript -->
  <!--<script src="vendor/jquery/jquery.slim.min.js"></script>-->
  <script src="vendor/assets/javascripts/bootstrap.min.js"></script>
    
</body>
</html>

在js和CSS这两个应用程序文件中,我都放置了“ require bootsrtrap.min”,即使该错误仍然出现在控制台中。 会是什么?

解决方法

RoR不使用目录作为文件夹结构指示。因为有资产装载者。您应该将5s或更少的css导入application.css中,并将js导入application.js中。并使用自己的助手添加捆绑文件:

1。用纱安装靴子

yarn add bootstrap @popperjs/core jquery

npm i bootstrap @popperjs/core jquery

栏位不超过5

2。在Assets Pipeline中导入文件

app / assets / stylesheets / application.css:

//...
require bootstrap/dist/css/bootstrap.min
//...

但是,如果需要,我建议使用SCSS并仅导入所需的样式。

app / assets / javascript / application.js:

//...
//= require jquery
//= require @popperjs/core
//= require bootstrap/dist/js/bootstrap.min
//...

3。在布局中导入资产

app / views / layout / application.html.erb:

<head>
...
  <%= stylesheet_link_tag ''application'',media: ''all'' %>
</head>
<body>
...
  <%= javascript_include_tag ''application'' %>
</body>

使用webpack滚动6

2。在application.scss和application.js中导入Bootstrap

app / javascript / stylesheets / application.scss:

//...
import ''bootstrap''
//...

app / javascript / packs / application.js:

import ''jquery''
import ''popper.js''
import ''bootstrap''
import ''../stylesheets/application''

3。在布局中导入捆绑包

<head>
...
  <%= stylesheet_pack_tag ''application'',media: ''all'',''data-turbolinks-track'': ''reload'' %>
  <%= javascript_pack_tag ''application'',''data-turbolinks-track'': ''reload'' %>
</head>

之后,您应该可以在所有应用程序中使用引导程序!

,

[解决方案]因此,在我的HTML(application.html.erb)内部,我有两个对js和css文件的调用:

<script src="assets/javascripts/bootstrap.min.js"></script>
  <%= javascript_include_tag ''application'',''data-turbolinks-track'': ''reload'' %>       
<link href="assets/stylesheets/bootstrap.min.css" rel="stylesheet">
  <%= csrf_meta_tags %>
  <%= stylesheet_link_tag    ''application'',''data-turbolinks-track'': 
  ''reload'' %>

正如您在上面看到的那样,在使用javascript的情况下,我有一个使用脚本的调用,而另一个使用了的调用,两者都造成了问题,所以您只需要评论一个,我就对该脚本进行评论对于我的java文件和CSS文件,一个。 像这样:

  <!--<link href="assets/stylesheets/bootstrap.min.css" rel="stylesheet">-->
    <!--<script src="assets/javascripts/bootstrap.min.js"></script>-->

对我来说,解决了这个问题,我真的尝试了所有事情,这就是解决方案哈哈。

angular – ng new hello错误:路径“/app/app.module.ts”不存在.路径“/app/app.module.ts”不存在

angular – ng new hello错误:路径“/app/app.module.ts”不存在.路径“/app/app.module.ts”不存在

我在角度创建新项目时面临问题.
当我运行新的myapp命令时,我得到以下命令

新的你好

Error: Path "/app/app.module.ts" does not exist.
Path "/app/app.module.ts" does not exist.

谁能帮我吗???

解决方法

这是解决方案

Please make sure that your new folder have write permission

如果您使用的是ubuntu,请将以下命令运行到该文件夹

sudo chmod 644 -R foldername

然后运行新的appname

并检查您的节点版本

APP 自动化 01 - 基础操作 API-UIautomatorviewer-APP 定位 - 元素等待 - APP 模拟手势高级操作

APP 自动化 01 - 基础操作 API-UIautomatorviewer-APP 定位 - 元素等待 - APP 模拟手势高级操作

--- 恢复内容开始 ---

 先连接手机:

adb connect 127.0.0.1:7555

APP 基础操作 API

前置代码

# server 启动参数

desired_caps = {}
desired_caps[''platformName''] = ''Android''
desired_caps[''platformVersion''] = ''5.1''
desired_caps[''deviceName''] = ''192.168.56.101:5555''
desired_caps[''appPackage''] = ''com.android.settings''
desired_caps[''appActivity''] = ''.Settings''
 
# 解决输入中文
desired_caps[''unicodeKeyboard''] = True
desired_caps[''resetKeyboard''] = True

# 声明driver对象
driver = webdriver.Remote(''http://127.0.0.1:4723/wd/hub'', desired_caps)
  1. 安装 apk 到手机

    driver.install_app(''app路径'')
  2. 手机中移出 apk

    driver.remove_app(’APP包名‘)
  3. 判断 app 是否已经安装

    driver.is_app_install(’APP包名‘)

     

  4. 发送文件到手机

      import base64
    with open("./push07.txt","r",encoding="utf-8") as f:
        data=str(base64.b64encode(f.read().encode("utf-8")),"utf-8")
        driver.push_file("/sdcard/push07.txt",data)
    参数:
        /sdcard/push07.txt:手机设备上的路径(例如:/sdcard/a.txt)
        data:文件内数据,要求base64编码
        Python3.x中字符都为unicode编码,而b64encode函数的参数为byte类型,需要先转码;
          生成的数据为byte类型,需要将byte转换回去

     

  5. 从手机中拉取文件

    import base64
    data = driver.pull_file(path) # 返回数据为base64编码
    print(str(base64.b64decode(data),''utf-8'')) # base64解码
    参数:
        path: 手机设备上的路径

     

  6. 获取当前屏幕内元素结构

    driver.page_source
    作用:返回当前页面文档,判断特点元素是否存在

 

手机控件查看工具 UIautomatorviewer

作用:用来扫描和分析 Android 应用程序的 UI 控件的工具.

 

APP 元素定位操作

name Value
id id 属性值
Class class 属性值
Xpath xpath 表达式

文字定位:driver.find_element_by_xpath ("//*[@text='' 定位文字 '']")

driver.find_element_by_xpath ("//*[contains (@text,'' 部分文字 '')]")

 

WebDriverWait 显示等待操作

在一个超时时间范围内,每隔一段时间去搜索一次元素是否存在,
如果存在返回定位对象,如果不存在直到超时时间到达,报超时异常错误。
方法:WebDriverWait(driver, timeout, poll_frequency).until(lamda x:x.find_element_by_id(''id属性值''))
  参数:
      1.driver:手机驱动对象
      2.timeout:搜索超时时间
      3.poll_frequency:每次搜索间隔时间,默认时间为0.5s
      4.method:定位方法(匿名函数)

 

APP 元素信息操作 API

  1. 点击元素 .click ()

  2. 发送数据到输入框 .send_keys ()

  3. 清空输入框内容 .clear ()

  4. 获取元素的文本内容 .text

  5. 获取元素的属性值 .get_attribute (value) #value 是元素属性名

  6. 获取元素在屏幕上的坐标 .location

  7. 获取启动名和包名

    获取包名方法:driver.current_package
    获取启动名:driver.current_activity

     

APP 元素事件操作 API

  1. swip 滑动事件

    从一个坐标位置滑动到另一个坐标位置
    # 滑动持续5秒的时间
    driver.swipe(188,659,148,248,5000)

     

  2. scroll 滑动事件

     driver.scroll(开始元素,结束元素)

     

  3. drag 拖拽事件

    driver.drag_and_drop(el1,el2)
  4. 应用置于后台

APP放置后台,模拟热启动
# app置于后台5s后,再次展示当前页面
driver.background_app(5)

 

APP 模拟手势高级操作

TouchAction是AppiumDriver的辅助类,主要针对手势操作,比如滑动、长按、拖动等,
原理是将一系列的动作放在一个链条中发送到服务器,服务器接受到该链条后,解析各个动作,逐个执行。

⚠️所有手势都要通过执行函数才会运行.
  1. 轻敲操作

    方法:tap(element=None, x=None, y=None)
    方法:perform() # 发送命令到服务器执行操作
  2. 按的操作

    方法:press(el=None, x=None, y=None)
    方法:release() # 结束动作,手指离开屏幕
    再 preform()

     

  3. 等待操作

    wait(ms=0)

     

  4. 手指长按操作

    long_press(el=None, x=None, y=None, duration=1000)
    默认为1000毫秒

     

  5. 手指移动操作

     方法:move_to(el=None, x=None, y=None).perform()
    参数:
        1.el:定位的元素
        2.x:相对于前一个元素的X轴偏移量
        3.y:相对于前一个元素的Y轴偏移量

     

     

 

 

--- 恢复内容结束 ---

Apple In App Purchase with Introduction Offer (SKProductDiscountPaymentModePayUpFront)

Apple In App Purchase with Introduction Offer (SKProductDiscountPaymentModePayUpFront)

如何解决Apple In App Purchase with Introduction Offer (SKProductDiscountPaymentModePayUpFront)

我正在编写一个 SwiftUI 应用程序,我正在寻找一些建议。

我在 AppStore connect 中设置了产品标识符

可以说是

com.example.subscription_service_1

每月价格为 39.99 美元

如果买家选择预付 12 个月,我想获得 19.99 美元的介绍性报价

  1. SKProductdiscountPaymentModePayUpFront

当 IAP 被触发时,客户只能看到一个选项。他们看到了预付款。

我不确定是我做错了什么,还是这就是它的设计方式。 我觉得 Apple 总是允许客户选择他们的选项。

请告知我必须做什么(不要创建不必要的产品标识符)。

解决方法

我不确定我是否理解正确,但如果您想向用户收取每月 39.99 美元的费用并在他选择一年时授予他介绍性优惠,那么您必须创建两个订阅:一个月订阅,价格为39.99 美元,每年订阅,价格随心所欲。然后,您必须在 App Store Connect 中为年度订阅创建 19.99 美元的介绍性优惠。

关于太可惜了,4 面字节跳动,我的软件测试工程师 Offer 竟被一道 App 测试 “送分题” 给拦截了的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于ActionController :: RoutingError没有路由与[GET]“ / vendor / assets / stylesheets / bootstrap.min.css”匹配 app / assets / stylesheets / application.css: app / assets / javascript / application.js: app / views / layout / application.html.erb: app / j、angular – ng new hello错误:路径“/app/app.module.ts”不存在.路径“/app/app.module.ts”不存在、APP 自动化 01 - 基础操作 API-UIautomatorviewer-APP 定位 - 元素等待 - APP 模拟手势高级操作、Apple In App Purchase with Introduction Offer (SKProductDiscountPaymentModePayUpFront)的相关信息,请在本站寻找。

本文标签:

上一篇腾讯财经《小单大双 app 官网》维基百科(大单小双如何玩)

下一篇【软件测试工程师】App 应用测试方法以及测试思路(app软件测试项目实战)