• 13
  • 13
分享

选择题

1、进行兼容性测试的目的在于()

A、测试程序在不同的平台上可以正常运行

B、测试程序与平台上的其他程序可以同时正常运行

C、测试数据格式在不同应用程序之间可以通用

D、以上选项都正确

2、某个 Android 应用耗电问题严重,以下那个是可能的因素()

A、频繁 GC

B、开 GPS

C、网络连接

D、后台服务数量

3、以下那个是 Android APP 的测试工具()

A、QTP

B、Selenium

C、Robotium

D、Uiautomator

4、一个 Andorid 应用从按 home 键回到主屏,到重新启动 APP,其 activity 的生命周期执行顺序是()

A、onPause() -> onStop() -> onRestart() -> onStart() -> onResume()

B、onStop() -> onRestart() -> onStart() -> onResume()

C、onPause() -> onStop() -> onRestart() -> onResume()

D、onPause() -> onStop() -> onDestroy() -> onRestart() -> onResume()

5、以下哪个选项表示申请 GSM 网络的使用权限()

A、android.permission.CHANGE_WIFI_STATE

B、android.permission.ACCESS_WIFI_STATE

C、android.permission.ACCESS_NETWORK_STATE

D、android.permission.READ_SMS

问答题

1.请尝试简述 Android 四层架构,四层架构包含哪些?并挑选写出每层中一到两个部件。

1.jpg

2. 简述 Android 四大组件,并选择两个阐述生命周期。

  • Activity 活动

应用程序中,一个 activity 通常就是一个单独的屏幕,它上面可以显示一些控件,也可以监听并处理用户的事件做出响应。

  • service 服务

一个Service 是一段长生命周期的,没有用户界面的程序,可以用来开发如监控类程序。

  • Content Provider 内容提供者

android平台提供了Content Provider使一个应用程序的指定数据集提供给其他应用程序。这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式,

其他应用可以通过ContentResolver类(见ContentProviderAccessApp例子)从该内容提供者中获取或存入数据.(相当于在应用外包了一层壳),只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。它的好处:统一数据访问方式。

  • BroadcastReceiver 广播接收器

过滤外部事件做出响应。通知可以用很多种方式来吸引用户的注意力──闪动背灯、震动、播放声音等。一般来说是在状态栏上放一个持久的图标,用户可以打开它并获取消息。

注意:

生命周期只有十秒左右,如果在 onReceive() 内做超过十秒内的事情,就会报ANR(Application No Response) 程序无响应的错误信息

3. 如何对一个 Android 应用进行稳定性测试?请简述测试思路,可能用到的技术手段和工具。

使用 Monkey 进行稳定性测试,多次进行测试,对日志进行分析,保证程序在压力测试下不会崩溃。由于 monkey 是随机点击,所以有两个问题需要解决:

  • 会误触通知栏导致断网等其他操作,所以需要使用 simiasque屏蔽知栏;

  • 有时会跳到非测试 webview 页面,如广告页面或在同一页面点击过多不跳出,所以需要新增一个 monkey checker的线程来同步执行,加入跳出判断。

4. 如何对 Android APP 进行性能测试?请简述测试思路,测试方法,分析思路。

APP 性能测试主要为以下几个方面:

  • 专项测试

通过 GT、Emmage、solopi 等工具查看并分析性能数据,或通过 profile 查看(需 debug 包)

  • 接口性能

jmeter、loadrunner 进行接口压测/并发测试

  • 稳定性测试

monkey 测试

5. 请描述 OOM 的成因。

Android 系统为每个应用程序设置了一个硬性的 Dalvik Heap Size 最大限制阀值,这个阀值在不同的设备上会因为 RAM 大小不同而各有差异。如果接近阀值,再次尝试分配内存,容易出现 Out Of Memory 的问题。

  • 加载大图/高清图/长图,需要先对 bitmap 进行压缩再放入 imageView 中显示;

  • Bitmap使用完没有释放,bitmap在使用完后要recycle后置null;

  • 文件流使用后没有关闭,文件流用后要close掉。

6. 请描述 ANR 的成因。

  • KeyDispatchTimeout最常见的一种类型,原因就是 View 的点击事件或者触摸事件在特定的时间(5s)内无法得到响应;

  • BroadcaseTimeout原因是 BroadcastReceiver 的 OnReceive() 函数运行在主线程中,在特定的时间(10s)内无法完成处理;

  • ServiceTimeout比较少出现的一种类型,原因是 Service 的各个生命周期函数在特定时间(20s)内无法完成处理。

典型的 ANR 问题场景:

  • 应用程序UI线程存在耗时操作。例如在UI线程中进行联网请求,数据库操作或者文件操作等;

  • 应用程序的UI线程等待子线程释放某个锁,从而无法处理用户的输入;

  • 耗时的动画需要大量的计算工作,可能导致CPU负载过重。

7. Adb 命令是 Android 测试中的重要工具之一,请写出实现如下功能的命令。

  • 安装一个 xx.apk

adb install xx.apk

  • 查看将运行日志保存至 PC 1.txt 文件

adb logcat > 1.txt

  • A 为手机路径,B 为电脑路径,分别写出将 a.txt 文件从电脑传输到手机和从手机传输到电脑的命令。

手机->电脑:adb pull /sdcard/a.txt /Desktop

电脑->手机:adb push /Desktop/a.txt /sdcard

  • 编写一个 monkey 命令,要求对包名为 com.test.android 的应用进行 50000 次测试,要求限定操作间隔时间为 1000 毫秒,触摸事件百分比为 10%,seed 值为 20

adb shell monkey -p com.test.android --pct-touch 10 --throttle 1000 -s 20 5000

8. 请说明 Android 多线程需要使用什么方法实现?

  • 继承 Thread 类

  • 实现 Runnable 接口

  • Handler

编程题

1、请使用数组实现一个栈。

class Stack(object):
def __init__(self):
self.items = []
def is_empty(self):
"""
测试栈是否为空。
不需要参数,并返回布尔值
"""
return self.items == []
def push(self, data):
"""
将一个新项添加到栈的顶部
它需要 item 做参数并不返回任何内容
"""
self.items.append(data)
def pop(self):
"""
从栈中删除顶部项
它不需要参数并返回 item,栈被修改
"""
return self.items.pop()
def peek(self):
"""
从栈返回顶部项,但不会删除它。
不需要参数。 不修改栈
"""
return self.items[-1]
def size(self):
"""
返回栈中的 item 数量。
不需要参数,并返回一个整数
"""
return len(self.items)
def show_item(self):
print(self.items)
if __name__ == '__main__':
stack = Stack()
print(stack.is_empty())
stack.push('cc')
stack.push('aa')
stack.show_item()
print(stack.peek())
stack.pop()
stack.show_item()
print(stack.size())

输出结果 >>>

True
['cc', 'aa']
aa
['cc']
1
[Finished in 0.1s]

按要求编写算法,输出两个字符串中相同的字符。例:String A = “abctd”,String B = “abfyt”,输入 “abt”

a = 'abctd'
b = 'abfyt'
c = []
for i in range(len(a)):
if a[i] in b:
c.append(a[i])
print(c[0]+c[1]+c[2])

冒泡排序。

a = [10, 6, 8, 53]
for i in range(len(a)-1):
for j in range(len(a)-1-i):
if a[j] > a[j+1]:
a[j], a[j+1] = a[j+1], a[j]
print(a)


作者:abee_lan

原文链接:https://blog.csdn.net/lan_yangbi/article/details/100163552

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 数据边界性测试数字类型超出应用设定最大值数字类型超出类型最大值数据类型填写非数据类型时间类型超出引用设定限制时间类型填写其他类型数据文本类型超出应用设定长度数据不符合实际规则(例如输入不存在的日期,或货币内容可以输入小数点后多于2位以上等)是否对输入内容的大小写进行自动转换,以防止用户对于大小写敏感内容出现输入错误是否对输入内容的前后空格进行自动去除,以防止用户输入不该存在的前后空格校验性测试填写不符合校验的数据,例如不能以数字开头的输入,输入数字开头的数据验证码,填写错误的验证码需重复一致填写时,填写不一致数据对于文本框输入类型内容有要求是否进行了键盘输入检测上传不符合类型的文件代码级测试非...
            10 10 612
            分享
          • 读者提问:软件测试行业是如何发展起来的,软件测试的定义是什么呢 ?阿常回答:从软件开发一开始就有软件测试了,起初的软件测试严格来说,不能算作真正的软件测试,是由开发人员完成的 “调试”。1975年《软件数据选择的原理》将软件测试定义为 :“ 证明软件测试工作是正确 ” 的活动,即 “ 证实 ”。1979年《软件测试艺术》将软件测试定义为 :“ 发现错误而执行的活动 ”,即 “ 证伪 ”。1983年《软件测试完全指南》将软件测试定义为:“ 测试是以评价一个程序或者系统属性为目标的任一活动,测试是对软件质量的度量。”,即 “ 预防 ”。2002年《系统的软件测试》将软件测试定义为:“ 测...
            0 0 1251
            分享
          • 读者提问:如何提交一个 BUG?阿常回答:这个问题我从两方面回答:1、BUG 有效性 ;2、BUG 三要素 。一、BUG 有效性避免提交无效 BUG 。一)未经过二次确认就提交的 BUG翠花同学发现了一个 BUG ,她立马给开发提 BUG,未经过二次验证确认问题的有效性(譬如重复刚刚的操作步骤,该问题能不能重现),把无效的问题提给了开发。二)需求理解不清晰就提交的 BUG明明需求就是这样定义的,翠花同学需求理解有偏差,并且没有和产品研发确认需求,就把无效的问题提给了开发。三)BUG 描述不清,开发复现全靠猜翠花提交给开发的 BUG,要么就一张图,要么就一句话。开发完全不知道...
            0 0 1330
            分享
          • 摘要:测试数据在项目开发、测试过程中占据着重要的作用,随着我行信息系统建设速度的加快,软件更新速度的不断提升,对数据交付时间和数据格式的要求也越来越高。对于数据库大表来说,无论是脱敏还是导出的速度,往往不能满足实际需要,Kettle作为业内最著名的开源ETL(数据抽取)工具,可直接对数据库表进行操作并以多种格式进行导出,格式规范,效率较高,能很好的满足使用过程中的需要。本文对kettle在实际中具体的使用与实践进行重点介绍。1、常用ETL工具现状简介ETL是Extract-Transform-Load的简写,用来描述将数据从源端经过抽取(extract)、转换(transform)、加载(lo...
            0 0 3889
            分享
          • 1、Android APP 内存不足时, 系统如何结束进程获得内存?答:系统优先结束被挂起(暂停)的进程,释放内存2、APP 测试常见的严重问题有哪些? 分别引起的原因有哪些?答:常见的有 crash、ANR(应用无响应、卡死),一般由设备碎片化、网络波动大、内存泄漏、代码编写错误3、请简单介绍你曾使用过的一款 APP 自动化测试工具 ?答:开放性问题,带点主观意见对比其他熟悉的自动化工具的优缺点自动化的简要方案(简要的同时关键内容请具体)。(提示: appnium 等)4、Android 测试与 web 测试有什么区别?答:相同点:设计测试用例均依据等价类、边界值等方法,测试原理相同;大多数...
            15 16 3162
            分享
      • 51testing软件测试圈微信