测试相关知识

1.你对测开的理解

在我看来,测试开发工程师,是属于测试的。
测试还是测试,只是在工作中会用到很多开发知识,Codereview,单元测试加强,自动化测试,开发测试工具。测试最重要的是思想,开发技能只能是技术手段。
现在这个测试自动化极其重要。但如果是不懂测试的人,给测试开发工具,极有可能难用又没效果,所以最好是有一批懂测试又擅长编程的人,来为测试人员开发工具。他们还是要去做测试工作的,不然的话,时间一长,脱离实践太久。这种人,就叫做测试开发工程师。

2.测开需要的素养:

测试开发工程师应该具备两方面的知识:测试知识和开发知识。之所以把测试排在前面,因为这里的开发建立在测试实践基础之上。其中测试知识又分为两部分:一是理论知识,软件行业发展至今也就几十年,测试方面的积淀就更少了,所以要掌握这部分对于一般人来说不是难事;另外一方面是经验知识,主要在项目测试过程中积累,很多系统的测试点、风险点都需要有丰富的经验来评估,这也是资深的测试工程师价值所在。开发知识当然和开发工程师差不多了。
在软素质方面,测试开发工程师应该具有更好的组织沟通协作能力。现在许多公司都在推行全流程保证,QA为了发挥更大的影响力以及保证项目的质量,需要从需求到设计,测试到上线全方面跟踪参与,这就涉及到了许多跨部门跨小组的沟通,即便在小组内沟通也极其频繁,工程师需要很好的表达能力。

3.测试的阶段

单元测试(如J unit)

单元测试是对软件组成单元进行测试,其目的是检验软件基本组成单位的正确性,测试的对象是软件设计的最小单位:函数、或者类。

项目中的测试类就是测试接口类的,属于单元测试,一般由开发人员测试。

集成测试

集成测试也称综合测试、组装测试、联合测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。其主要目的是检查软件单位之间的接口是否正确,集成测试的对象是已经经过单元测试的模块。

系统测试

系统测试是对整个系统的测试,将硬件、软件、操作人员看作一个整体,检验它是否有不符合系统说明书的地方,主要包括功能测试、界面测试、可靠性测试、易用性测试、性能测试。 功能测试主要针对包括功能可用性、功能实现程度(功能流程&业务流程、数据处理&业务数据处理)方面测试。在集成测试之后。

验收测试
也称交付测试,是针对用户需求、业务流程进行的正式的测试,以确定系统是否满足验收标准,由用户、客户或其他授权机构决定是否接受系统。

验收测试包括alpha测试和beta测试,alpha测试是由开发者进行的软件测试,beta测试是由用户在脱离开发环境下进行的软件测试。

5.手游经常crash,分析原因

作为测试人员,第一件要做的事情就是去定位crash发生的代码逻辑,到底是哪个文件的哪一段函数逻辑导致了这个crash问题。因此,我们需要去尽量重现crash场景,收集解析crash日志,以此定位到具体到游戏代码逻辑中寻找导致crash的原因,改善项目的质量和体验。
一.crash产生的原因

当iOS/Android设备上的App应用闪退时,操作系统会生成一个crash日志,保存在设备上。crash日志上有很多有用的信息,比如每个正在执行线程的完整堆栈跟踪信息和内存映像,这样就能够通过解析这些信息进而定位crash发生时的代码逻辑,从而找到App闪退的原因。
  通常来说,crash产生来源于两种问题:违反iOS系统规则导致的crash和App代码逻辑BUG导致的crash,下面分别对他们进行分析。

- 1.1违反iOS系统规则包括三种类型:

(1) 内存报警闪退

当iOS检测到内存过低时,它的VM系统会发出低内存警告通知,尝试回收一些内存;如果情况没有得到足够的改善,iOS会终止后台应用以回收更多内存;最后,如果内存还是不足,那么正在运行的应用可能会被终止掉。在Debug模式下,可以主动将客户端执行的动作逻辑写入一个log文件中,这样程序童鞋可以将内存预警的逻辑写入该log文件,当发生如下截图中的内存报警时,就是提醒当前客户端性能内存吃紧,可以通过Instruments工具中的Allocations 和 Leaks模块库来发现内存分配问题和内存泄漏问题。

(2) 响应超时

当应用程序对一些特定的事件(比如启动、挂起、恢复、结束)响应不及时,苹果的Watchdog机制会把应用程序干掉,并生成一份相应的crash日志。这些事件与下列UIApplicationDelegate方法相对应,当遇到Watchdog日志时,可以检查上图中的几个方法是否有比较重的阻塞UI的动作。

application:didFinishLaunchingWithOptions:

applicationWillResignActive:

applicationDidEnterBackground:

applicationWillEnterForeground:

applicationDidBecomeActive:

applicationWillTerminate:

(3) 用户强制退出

一看到“用户强制退出”,首先可能想到的双击Home键,然后关闭应用程序。不过这种场景一般是不会产生crash日志的,因为双击Home键后,所有的应用程序都处于后台状态,而iOS随时都有可能关闭后台进程,当应用阻塞界面并停止响应时这种场景才会产生crash日志。

这里指的“用户强制退出”场景,是稍微比较复杂点的操作:先按住电源键,直到出现“滑动关机”的界面时,再按住Home键,这时候当前应用程序会被终止掉,并且产生一份相应事件的crash日志。

- 1.2应用逻辑的Bug

大多数闪退崩溃日志的产生都是因为应用中的Bug,这种Bug的错误种类有很多,比如

SEGV:(Segmentation Violation,段违例),无效内存地址,比如空指针,未初始化指针,栈溢出等;

SIGABRT:收到Abort信号,可能自身调用abort()或者收到外部发送过来的信号;

SIGBUS:总线错误。与SIGSEGV不同的是,SIGSEGV访问的是无效地址(比如虚存映射不到物理内存),而SIGBUS访问的是有效地址,但总线访问异常(比如地址对齐问题);

SIGILL:尝试执行非法的指令,可能不被识别或者没有权限;

SIGFPE:Floating Point Error,数学计算相关问题(可能不限于浮点计算),比如除零操作;

SIGPIPE:管道另一端没有进程接手数据;

常见的崩溃原因基本都是代码逻辑问题或资源问题,比如数组越界,访问野指针或者美术资源不存在,或美术资源大小写错误等,这种问题的类型有很多,不再详细介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值