• 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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   【缘起】:“云计算”三个字在IT圈内的人士眼中绝对不陌生,至少听过见过不下数十次,近百次,甚至更多,但倘若要刨根究底这三个字背后的技术含义,势必会难倒不少人,说不清道不明的当不在话下。本次分享就带圈内人士们一起组队揭开“云计算”背后的神秘,从此不再做云端“盲人”,身在“云端”深处而浑然不知。  1.“云”深不迷茫  云计算可视为一种服务,以互联网为媒介,提供数据存储,数据访问及相关大数据计算等功能。之所以称之为“云”,一是因为它不会在我们本地个人计算机上存储任何数据,其二是由于该服务属于“on-demand service”,即按需服务,更接地气的说法是“点播业务”,仅根据用户需求提供服务...
            2 2 1571
            分享
          •   实在是太强了,00后测试用例写的比我还好,简直是无地自容.....  经常看到无论是刚入职场的新人,还是工作了一段时间的老人,都会对编写测试用例感到困扰?例如:  如何编写测试用例?  作为一个测试新人,刚开始接触测试,对于怎么写测试用例很是头疼,无法接触需求,只能站在用户角度去做测试,但是这样情况会导致不能全方位测试APP......  如何写出高效的软件测试用例?  从事软件测试大半年,基本上都是靠着对软件产品的大致了解来进行测试工作,很难对产品 进行一个全面细致的测试。现在想学习一下怎么写测试方案和测试用例,有哪些相关书籍可以参考?  固然,编写一份好的测试用例需要:充分的需求分析能...
            0 0 374
            分享
          • API测试的基本步骤通常来讲,API测试的基本步骤主要包括以下三大步骤:准备测试数据;通过通用的或自己开发的API测试工具发起对被测API的request;验证返回结果的response。常用的API测试工具有命令行工具cURL、图形界面工具Postman或SoapUI,支持API性能测试的JMeter等。API复杂场景举例通过使用基础的测试工具,可以做简单场景的API测试;而项目进行过程中,为了解决实际的一些问题,我们会设计更加复杂的测试场景,下面列举几个实际项目中的典型场景。场景一:API串联调用以协议支付为例,我们知道,三方公司接入网联后,用协议支付取代代扣,而协议支付的流程中需要用户输...
            0 0 1009
            分享
          • 【摘要】软件测试从哪里开始到哪里结束?中间要经过哪些环节以及各环节要注意哪些事项。本文就有关问题结合个人实际工作经验进行阐述,鉴于每个环节都可以做为一个专题来进行探讨,所以受篇幅和时间限制,本文对有关问题未做深入剖析,只做一个宏观上的介绍。【关键词】测试流程、需求分析、测试用例、测试计划、缺陷管理一、概述一般而言,软件测试从项目确立时就开始了,前后要经过以下一些主要环节:需求分析→测试计划→测试设计→测试环境搭建→测试执行→测试记录→缺陷管理→软件评估→RTM.在进行有关问题阐述前,我们先明确下分工,一般而言,需求分析、测试用例编写、测试环境搭建、测试执行等属于测试开发人员工作范畴,而测试执行...
            8 8 1596
            分享
          • 把做Android开发以来碰到的一些不错的性能分析工具做个整理汇总...Debug GPU Overdraw类型:系统自带功能UI渲染检测功能(打开Settings,然后到 Developer Options -> Debug GPU Overdraw 选择 Show overdraw areas,手机系统设置中文的孩纸,自行对照翻译进去哈)作用:用来检测UI的重绘次数,开发者可以用来优化UI的性能。使用心得:检测UI性能的利器,对于开发者做UI优化的帮助挺大的。因为大量的重绘容易让app造成卡顿或者直接导致丢帧的现象。开发者熟悉View的绘制原理可以结合对一些布局或者自定义控件做相应的...
            13 13 1001
            分享
      • 51testing软件测试圈微信