TA的每日心情 | 无聊 5 小时前 |
---|
签到天数: 1052 天 连续签到: 2 天 [LV.10]测试总司令
|
3.9.13 阿里巴巴测试工程师面试真题及答案
试题1.你最熟悉的一个项目是怎么做的?具体用了什么方法和测试工具?
答案:最近上了一个视频广告投放项目,我们用敏捷的方式跟进项目。前端用Selenium进行用例自动化测试,后端用TestNG进行接口自动化测试。自动化测试主要用在回归上。
试题2.简述整个项目的测试流程和bug管理流程。
答案:在项目初期,参与需求评审,了解需求;在开发阶段,准备测试用例、测试数据;测试开始前,进行一次测试用例评审,定稿;接下来分别是测试执行,测试回归,上线。
发现bug后,提交到系统中,并分配给相应开发者;修复后,测试回归检查,关闭bug。
试题3.描述一个bug的生命周期。
答案:提交bug→分配bug→确认bug→修复bug→回归bug→关闭bug。
试题4.描述自己在项目中发现的最有意义的一个bug是什么导致的。
答案:略。
试题5.LaodRunner如何分析系统瓶颈?都要检测哪些系统指标?
答案:参考3.4.1节。
试题6.bug描述中都包括哪些内容?
答案:标题、描述操作、结果、预期结果、原因分析、如何修改、bug等级、bug修复人、bug状态。
3.9.14 百度软件测试笔试真题及答案
试题1.描述一次网络交互的过程(如在百度首页进行一次搜索的过程)。
答案:其中包括页面、浏览器、后端服务间的关系,以及HTTP请求包内容、Web Server等。
试题2.strcpy()和memcpy()的区别。
答案:strcpy()只能复制字符串,以\0为标志结束。strcpy的原型如下。
- char *strcpy(char *dest, const char *src)//注意类型是char
复制代码 strcpy从源(src)所指的内存地址的起始位置开始复制n字节到目标dest所指的内存地址的起始位置中,而不管复制的内容是什么(不仅限于字符)。
memcpy可以复制任意类型的内容。memcpy()的原型如下。
- void *memcpy(void *dest, const void *src, size_t n);//注意是void
复制代码 试题3.门禁系统测试的内容有哪些?
答案:外观设计、功能实现、异常处理、性能等方面。
试题4.对于分布式系统的性能测试,如何做系统性能评估、性能瓶颈与性能指标分析?
答案:具体步骤如下。
(1)建立系统环境模型,最大限度地模拟实际情况,无法模拟时应采取相应方式规避。
(2)采取分块法抽离子系统,对相同消耗型的模块(子系统)进行分析。定位可能存在系统瓶颈的地方,采取多种方法观察日志、性能指标。
(3)当无法明确外界反馈时,采取内部原理分析机制。最终解决方案是分块尝试,找出每个子系统或者模块的瓶颈。
(4)定位单个系统的性能瓶颈。根据压力方式,选择瞬间压力与稳步上升压力。根据长短连接方式,选择压力方式,关注系统性能指标。
(5)最终瓶颈由最弱的子系统与模块确定(此时会需要面试者给出优化方案)。考虑几种方式,如多线程方式、缩减内存消耗方式(一般通过优化数据结构与数据处理方式可以解决)、部署方式(不同消耗型模块统一部署、充分利用资源等)。
试题5.测试设计如何考虑?你了解哪几种相关测试方法?如何评估测试覆盖率?对于条件覆盖、路径覆盖是否需有关尝试?如何进行?(测试方法可以结合面试者项目及百度的项目而定)
分析:测试设计主要考查面试者的大局观及思路是否清晰。测试方法主要考查面试者的知识面广度,通常情况下只要给出一些具体的实际思路与想法即可。关于条件覆盖与路径覆盖的问题考查面试者对于测试对象本身的理解程度、对于测试分析的认识是否到位,通常会结合具体代码让面试者给出具体的条件覆盖分析与路径覆盖分析。
答案:略。
试题6.简述自动化测试方面做过的工作,及用过或者开发过的自动化测试框架。
分析:主要考查面试者对于自动化测试的理解,以及了解深度。关于自动化测试框架,主要从数据如何维护、基于何种测试方法、效果覆盖率如何评估、实现的环境语言等方面分析。
答案:略。
试题7.写出登录页面的测试用例。
答案:包括功能、界面、兼容性(浏览器)、特殊字符、性能(压力测试)、安全性(SQL注入、猜密码等)等。
试题8.编写sort(char *s)函数,将字符串s排序,分析时间复杂度、空间复杂度、稳定性。
答案:常用算法如表3.4所示,最优算法是计数排序。具体代码略。
表3.4排序算法时间、空间、稳定性分析
试题9.已知一个数组中,有一个数字出现的次数大于该数组长度的1/2,要求遍历一遍数组,得到这个数字。
答案:设置两个临时变量x和y,初始时,y为0。遍历过程如下。
- if ( 0 == y ) x = 当前数组元素; y++; continue;
- if( x == 当前数组元素) y++; continue;
- if(x != 当前数组元素) y--;
复制代码 遍历完成后,x中存储的就是所求数字。
试题10.写一个性能监控脚本。要求以特定时间间隔(如3s)采集计算机或特定进程的资源(如CPU、内存)占用情况。
答案:脚本如下。
- #!/bin/bash
- INTER=3
- PROGNAME="进程名"
- REPFILE="报告名"
- ?
- date +"%Y-%m-%d %H:%M:%S" >$REPFILE
- while [ 1 ];do
- monline='ps –ef | grep "$PROGNAME" | grep –v grep | awk '{print $3,$6}''
- cpu='echo $monline | awk '{print $1}'
- mem_rss='
- echo $monline | awk
- '{print $2}'
- echo "$cpu $mem_rss" >> $REPFILE
- sleep $INTER
- done
复制代码
试题11.Java中,sleep()方法和wait()方法有什么区别?
答案:sleep()方法是使线程停止一段时间的方法。在sleep()指定的时间间隔过后,线程不一定立即恢复执行。因为在那个时刻,其他线程可能正在执行而且不准备放弃执行,除非“醒来”的线程具有更高的优先级或正在执行的线程出于其他原因而阻塞。wait()方法是指线程交互时,如果线程对一个同步对象x发出一个wait()方法调用,该线程会暂停执行,被调对象进入等待状态,直到被唤醒或等待时间到。
试题12.堆和栈的区别是什么?它们的变量有效期分别是什么?
答案:申请方式不同,栈是自动申请、释放的,堆是手动申请、释放的。栈的有效期至函数结尾,堆有效期到被释放为止。
试题13.使用Linux命令输出一个多行多列文件中除第3列以外的内容。
答案:命令如下。
- awk'{$3="";print $0}'filename
复制代码
|
|