项目问题: 1:如何评价一个软件系统的质量,从哪些维度进行考虑? 答案:软件系统的质量要从以下的6个维度进行考虑 1、功能性:软件所实现的功能满足用户需求的程度,功能性反映了所开发的软件满足用户需求的程度,即用户要求的功能是否都全部实现了。 2、可靠性:也即软件除了满足用户需求之外,另外要求软件在发生故障时能继续运行程度。 3、易用性:它反映了软件与用户友善性,即用户在使用本软件的时候,是否方便。 4、效率:在指定的条件下,用软件实现某种功能,所需的计算机资源(包括时间)的有效程度,在完成功能的时,有没有资源浪费。 5、可维修性:可维修性反映了在用户需求或者软件环境发生改变时,对软件系统进行相应修改的容易程度。 6、可移植性:从一个计算机系统或者环境转移到另一个计算机系统或者环境的容易程度。 2:给你一个登录页面,一个水杯,一支笔,如何进行测试? 答案: 登录页面: 功能测试(Function test) 1、输入正确的用户名和密码,点击提交按钮,验证是否能正确登录 2、输入错误的用户名或者密码,验证登录会失败,并且提示错误的响应信息 3、登录成功后能否跳转到正确的页面 4、用户名和密码,如果太短或者太长,系统应该怎么处理 5、用户名和密码,中有特殊字符,和其他非英文的情况 6、记住用户名的功能 7、登录失败后,不能记录密码的功能 8、用户名和密码前后有空格的处理 9、密码是否以星号显示 界面测试(UI test) 1、布局是否合理,2个textbox和一个按钮是否对齐 2、textbox按钮的长度,高度是否符合要求 3、界面是否好看 4、图片、颜色、字体、超链接,是否都显示正确 性能测试(performance test) 1、打开登录页面,需要几秒 2、输入正确的用户名和密码,登录成功后,跳转至新页面,需要几秒(按照2-5-8的原则) 3、能支持多少个用户同时登录 安全性测试(Security test) 1、用户名和密码是否通过加密的方式传输 2、用户名和密码的验证,应该是用服务器端验证,而不是单单在客户端通过javascript验证 3、用户名和密码的输入框,应该屏蔽Sql注入攻击 4、用户名和密码的输入框,应该禁止输入脚本(防止Xss攻击) 5、错误登录次数的限制(防止暴力破解) 可用性测试(Usability test) 1、输入用户和密码后,直接按回车键(Enter键)是否可以直接登录 2、是否支付Tab键的顺序 兼容性测试(Compatibility test) 1、主流的浏览器下能否显示正常,并且功能正常(IE系列、Firefox、chrome,Safari等) 2、不同的工作平台是否能正常工作(Windows机器,Mac) 3、移动设备上是否正常工作(比如安卓、Iphone) 4、不同的分辨率 5、不同的浏览器大小(浏览器最大化,和非最大化) 水杯: 功能测试(Function test) 1、能否装水 2、除了装水之外,能否装其他的液体,比如装可乐,酒精 3、能否装多少ML的的水 4、杯子是否有刻度表 5、杯子能否泡茶、泡咖啡 6、杯子能否放冰箱、做冰块 7、杯子的材质是什么(比如玻璃、塑料、陶瓷) 界面测试(UI test) 1、外观好不好看 2、什么颜色 3、杯子的形状是怎么样的 4、杯子的重量是多少 5、杯子是否有异味 6、杯子的图案是否合理 性能测试(performance test) 1、能否装100的开水(泡茶) 2、能否装0度冰水 3、装满水后,放几天,是否会漏水 4、杯子内壁上的涂料是否容易脱落 5、杯子上的颜色是否容易褪色或者脱落 安全性测试(Security test) 1、制作杯子的材料是否有毒 2、放微波炉里转的时候,是否会爆炸,或者杯子是否会熔化 3、从桌子上掉到水泥地上是否会会摔碎 4、杯子是否长细菌 5、杯子是否有缺口,是否伤害嘴巴 6、杯子内壁上的材料,是否会溶解到水中 7、杯子破碎后,是否会对使用者造成伤害 可用性测试(Usability test) 1、杯子是否容易烫手 2、杯子是否好端,好拿 3、杯子的水是否容易喝到 4、杯子是否有防滑措施 3:你们公司的测试流程是什么样的? 答案具体流程如下: 1、测试人员参加需求评审 2、编写测试计划 3、编写测试用例(TestCase测试用例需要评审) 4、测试环境的搭建 5、执行测试对缺陷进行跟踪验证 6、5轮左右测试结束 4:你在项目组中扮演一个什么样的角色 答案:我在项目担当软件测试工程师角色: 1、编写测试用例(TestCase) 2、执行测试用例 3、提交缺陷(到缺陷管理系统、比如禅道、bugzilla) 4、软件的回归验证测试 5、提交当日的工作测试记录 6、不同测试任务之间的交叉测试 5:给你一个项目你觉得应该怎么做? 答案: 1、从最初的阶段介入到需求,越早介入到需求对产品的业务了解的越透彻,能够测试出关于业务上更有价值的缺陷 2、保证软件产品质量手段有二种方式:评审和测试,多参与项目中各个阶段的评审工作 3、通过尽早测试、经常测试、和不同工程师之间的交叉测试,提高软件测试的质量 4、在测试过程中要提交《测试进度报告》(1-2天提交1次,数据来源于缺陷管理系统)告知项目组中所有项目成员的项目测试进度情况 6:你们的测试组长都做哪些事情? 答案: 1、制定测试计划 2、统合软件测试用例 3、分配并指导测试工程师具体测试工作 4、与开发人员的沟通协调 5、编写项目的《进度测试报告》和《总结性测试报告》(系统测试报告) 7:你在项目中写过测试计划吗? 写过。测试计划中包含哪些5W1H的要素: Why:为什么要进行这些测试 What:测试哪些方面内容,不同阶段的工作内容 When:测试不同阶段的起始时间 Where:响应的文档、缺陷存放的位置,测试环境等 Who:相关的人员组成,安排哪些测试人员进行测试 How:如何去做,包括使用哪些测试工具和测试方法 8:你们的项目做了多久?测试了多久? 答案:正常的一般4个月左右的时间,测试的执行时间1.5个月左右(不包括前期的参加需求评审和编写测试计划和编写测试用例时间)。 9:你们的项目组有有多少人? 答案:大约十多个人,,包括:java开发2个、Web前端开发2个、安卓开发1个、ios开发1个、产品经理1个,和UI设计1个,测试人员2个。 10:你们一般测试几轮? 答案:5轮左右。 11:你们开发测试比例是多少? 答案:1:4(测试人员:开发人员) 12:遇到项目延期吗?你们怎么处理的? 答案:引起项目的延期最主要的原因一般是用户需求频繁的变更,或者是在项目后期用户又提出增加新的需求。 新的需求需要放在下一个版本中解决发布。 13:jmeter工具你是如何使用的? 答案:jmeter是基于接口层面的测试工具,它的使用步骤如下: 1、增加线程组 2、增加HTTP请求 3、添加查看结果树 14、你们项目一般如何跟进进度,有过项目延期吗? 答案: 1、传统的项目,一般是项目经理通过Project跟踪项目进度 2、敏捷项目:通过每日的站立会议(会议不超过15分钟) 3、测试人员跟踪测试进度是通过《测试进度报告》跟踪 15、你一天能写多少测试用例? 答案:一天只能写50-80条,平均每条用例5-6条步骤 16、你负责的模块写多少条测试用例? 答案:这个要根据模块的复杂程度,最简单的模块20条,多的50-60条测试用例 17、你是如何进行测试的? 答案:我在项目初期参与需求评审熟悉需求业务,编写测试用例,参加测试用例评审,对缺陷进行跟踪验证,执行回归测试。 18、你一天能执行多少条测试用例? 答案:大约50-80条测试用例。 19、你印象深刻的bug有哪些? 答案: 1、挑货网的平台在大量用户同时购买同一件商品,库存显示为负数。 2、豪康金服P2P平台,借款人还钱的时候,还款失败,是没有考虑到边界值测试。 3、上海市食药监项目,在查询文本框里输入单引号进行查询,在用户暴露出数据库的字段,而且暴露出该开发框架用Strus2开发框,是安全漏洞。 20:一般都评审哪些内容,请你举例说明? 答案:《需求文档》、《测试用例》和一些重要的《设计文档》是一定需要评审的。 21:测试用例如何划分优先级? 答案:测试用例一般分为以下几个等级: P0:核心功能的测试用例(冒烟测试smoke testing),确定此版本是否可测的测试用例,此部分测试用例如果失败,会阻碍其他大部分测试用例的验证。 P1:高优先级的测试用例,最常执行已保证功能性是稳定的;最基本的功能测试,和重要的错误,边界测试。 P2:中优先级的测试用例,更全面地验证,功能的各个方面,异常测试,边界、中断、断网、容错、UI等测试用例 P3:优先级低的测试用例,不常常被执行,性能、压力、兼容性、稳定性、安全性、可用性。 22:你是如何做的需求评审? 答案:在参加需求评审会议之前,是要熟悉该次评审对象的业务,是带着提问题的角度去参加需求评审,而不是站在在培训者的角度参加需求评审。 是从分析和找问题的角度参加的。 23:讲解项目组共有多少条用例? 答案:测试用例是有项目模块的数量和复杂程度决定的,最简单的模块20条,多的60条测试用例。 24:你负责的项目发现了多少条bug? 答案:我在测试豪康金服P2P金融系统(前台PC端,后台PC端、安卓端、IOS端、M站)的时候,缺陷的总数量大约650多(包括一些建议性的内容)。 你们测试的实际项目不肯能有这么多的bug,需要让学员自己动手做项目。 25:考虑哪些异常测试场景,举例说明? 答案: 1、环境异常:断网、断电、中断测试(比如在测试APP的过程中,来电话、收到短信、闹钟响) 2、重复提交 3、并发测试 4、交换测试(在测试过程中调用相机、分享功能) 等等 26、缺陷多怎么办? 导致软件缺陷的原因有很多,最主要的包括以下二点: 软件需求规格说明书编写不全面、不完整,不准确,而且经常修改,——遇到这样的情况产品经理重新确认需求 开发人员不能很好的理解需求规格说明书和沟通不足——需要产品经理对开发人员重新评审需求 另外对于软件测试人员来说,软件缺陷有群集现象(80%的问题是集中在20%的模块里面,如果某个模块问题较多,那么说明该质量较差,该模块可能有更多的问题暂时未被发现),所以对模块哟啊进行更深入、更充分的测试。 27、404和500以及502、504、301、200表示什么错误? 答案: 404:找不到网页 500:服务器错误 502:网关错误 504:网关超时 301:重定向 200:正常 28:缺陷的流程,知道状态是如何流转的,每个状态是由谁修改的? 1、激活(测试人员做)——>确认(开发确认)——>已解决(开发人员)——>关闭(测试人员) 2、激活(测试人员)——>拒绝修改(开发人员) 3、激活(测试人员)——>确认(开发确认)——>已解决(开发人员)——>激活(测试)——>确认(开发人员)——>已解决(开发人员)——>关闭(测试人员) 29:Web测试与APP测试的区别? 答案:Web测试与APP测试在流程和功能测试上测试没有区别。 Web是B/S架构,APP是C/S架构,Web测试需要操作系统和浏览器兼容性测试,APP测试需要考虑系统安装、卸载、升级、自动更新、APP对于各种机型的适配性测试(借助于云测试技术),各种干扰性测试(比如中断,来电、短信、关机、重启)、弱网络测试(移动数据,Wifi)以及电量测试、流量测试。 30:版本配置管理工具有哪些? 答案:SVN和Git 31:Fiddler怎么抓包的? 答案: 1、启动Fiddler 2、打开浏览器输入要测试网址:比如输入:http://www.163.com 3、回到Fiddler界面,在session列表,可以看到Fiddler捕获到很多Session的列表。 4、切换到inspector可以看到更详细的信息。 32:接口测试除了jmeter之外,你还了解什么工具? 答案:postman可以做接口测试工具。 33:get与post方法的区别? 答案: get:从指定的资源请求数据。 post:向指定的资源提交要被处理的数据。 可见性:get请求,在数据在URL中对所有人都是可见的,post数据不会显示在URL中。 安全性:与post请求相比,get数据安全性较差,因为所发送的数据是URL中的一部分,在发送密码或者其他敏感信息的时候,不要使用get。 对数据长度的限制:get是长度限制的,比如当发送数据的时候,get方法向url添加参数,url的长度是受限制的(url的长度是2048个字符)。 --------------------等等,需要多总结一下------------------------------------------------------ 今晚回去作业: 34:准备20个比较常用的Linux命令,包括查看服务器资源 tail命令:查看日志文件,从尾向上看, 比如:循环看最后10行内容 循环看最后的3行内容:tail -fn 10 log2019.log Top命令:查看Linux动态进程的命令 ps命令:用来显示当前进程的状态 显示所有进程信息,连同命令行:ps -ef ps 与grep 常用组合用法,查找特定进程,比如:ps -ef|grep ssh kill命令:杀进程 彻底杀死进程:kill -9 123456 more命令:查看文件内容命令:more命令从前向后读取文件,因此在启动时就加载整个文件。 显示文件log2019.log中从第3行起的内容:more +3 log2019.log vi:文件编辑命令 free命令:查看内存相关的信息命令 vmstat命令: touch命令: wget:下载文件 命令 ifconfig命令(类似于windows里面的ipconfig): ping命令: chmod:命令用于改变linux系统文件或目录的访问权限 find命令: netstat cat 文件名 | grep "关键字" Linux与Linux传输文件用什么协议 rz命令: scp命令: 35:准备一个跟项目相关的多表联查的SQL语句 面试前需要复习:sql语言的:多表连接查询、子查询等,笔试题会至少有80%以上的概率需要做数据库试题。 36: 什么是接口测试? 答案:接口是指模块与模块之间的对接定义方式,或者是系统与系统之间的对接定义方法。其本质就是发送一个http请求报文给服务器,然后服务器返回一个http响应报文,用的最多的http协议的get接口和post接口。 接口测试工具: 1:抓包工具:fiddler, charles(Mac机器上用) 2:发包工具:jmeter,postman,或者商业性的loadrunner 37:Web自动化测试二种思路是什么? 答案: 1:UI层面的自动化,可以使用selenium这样的UI自动化测试框架,模拟用户的操作,比如打开浏览器,在京东商城网,进行商品搜索操作。脚本维护成本高。 2:接口层面的自动化,用发包工具模拟浏览器发包,直接发送http请求给Web服务器,然后对服务器响应回来的结果进行验证。 38:HTTP头域(HTTP Head)中包含哪些常见参数? 答案:http请求方法和HTTP Head配合工作,共同决定客户端和服务器端能做什么事情。 Accept: 表示浏览器客户端可以接受的媒体类型。比如text/html,表示浏览器可以接受服务器返回的html. Accept-Encoding: 跟压缩相关的,比如gzip,告诉服务器浏览器支持gzip压缩。 Accept-Language: 作用是浏览器申明自己接受的语言。 User-Agent: 作用是浏览器用来告诉服务器,客户端使用的操作系统及版本。 Connection: keep-alive:从http1.1开始,系统都默认开启了Connection: keep-alive,保持连接性。 Host: www.163.com:请求的主机地址。 Cookies相关的信息 39:接口测试参照的依据来源是什么? 答案: 1:开发人员提供的接口问题 2:抓包工具:fiddler, charles(Mac机器上用) 3:没有文档,就要采用抓包工具进行抓包分析 40:接口文档中一般包含哪些哪些内容? 答案: 1:请求的URL地址 2:请求的方法 3:请求的参数(参数的名称和字段类型) 4:返回结果 41:接口测试如何设计测试用例? 答案: 1:参数字段的默认值 2:参数字段是否必填,是否为空检查 3:参数字段携带错误值 4:字段类型的检查,比如int型变成string型时如何判断 5:限制条件,比如店铺名称重复,店铺标签修改重复,短信验证码次数超过5次,店铺名称长度超过指定的某个长度比如20., 42:举例一个接口测试的流程? 答案:比如购物流程,依次要调用登录接口、商品加入购物车接口、提交订单接口、支付接口。同样要依照这些接口的逻辑流程进行接口测试,通常前一个接口会动态产生一个特定的数据关联到下一个接口,比如登录后会有特定的token,供接下来的购物等接口调用,然后提交订单的接口会产生一个orderid,供下一个支付接口调用。 后一个http请求使用了前一个http请求,二个请求直接发送了关联。 43:你在项目中测试过哪些接口?返回的异常有哪些?遇到什么问题?定位问题的方法? 答案:测试过提交订单订单接口、和支付接口,返回的异常包括http错误代码404,500。定位问题见后面分析。 44:你平常做接口测试的过程中发现过哪些bug? 答案: 1、豪康金服网站前台限制用户充值最低100元起充,但是通过抓包工具通过接口充值好多笔0.01元的可以进行充值。 2、恒大金服网站用户体现功能,在提现金额输入提现金额为负数,导致该平台用户的可用余额越提越多。 3、上海市中小学学生在线学习在多用户并发学习的情况下,学生的学习时长为负数。 4、豪康金服借款人还钱的时候,导致还款失败,程序没有考虑到边界值情况。 5、龙捷城配系统通过jmeter在接口层面能创建订单号完全重复的订单。 45:平常你是怎么做接口测试的呢(接口测试设计测试用例的思路,非常重要)? 答案: 1: 通过性验证:首先肯定要保证这个接口的功能是好的,也就是正常的通过性测试,按照接口文档上的参数,正常传入,是否可以返回正常的。 2: 接口的安全: 2.1 绕过验证:比如说购买了一个商品,它的价格是300元,那我在提交订单的时候,把这个商品的价格修改成3元,检查后端有没有做验证,甚至修改成负数。 2.2 绕过身份授权:比如说修改商品信息接口,那必须是卖家才能修改,那我传一个普通用户看看能不能修改成功,我传一个其他的卖家能不能修改成功。 2.3 参数是否加密:比如说我登录的接口,用户名和密码是不是加密的,如果不加密的话,别人拦截到你的请求,就能获取到你的信息,中国互动出版社的网站密码传输是明文的。 2.4 密码安全规则,密码的复杂程度校验。 3:异常验证: 所谓异常验证,也就是我不按照你接口文档上的要求输入参数,来验证接口对异常情况的校验,比如说必填的参数我不填,输入整数类型的我传入字符串类型,比如长度是10,我传11,总之就是说你说怎么来,我就不怎么来。但是最主要关注以下三点,必传非传,参数类型,参数长度。 4:性能测试: 4.1接口的并发性能,比如一个账号,同时(大于2个请求),对最后一个商品下单,或者不同的账号,对最后一个商品下单。 4.2接口响应的时间,接口的响应时间太长了,肯定需要优化,一般接口响应式毫秒级别。 46:当一个接口出现异常的时候,你是如何处理异常的? 答案: 1、抓包,用fiddler抓包,或者按浏览器上F12键,如果是APP的话,就用Fiddler设置代理,去看看请求报文和响应报文。 2、查看后端的日志,比如用Xshell,连上服务器,查看日志。 47:如何模拟弱网络测速? 答案:用fiddler和charles都能模拟网络,平常说的模拟丢包测试,也就是模拟弱网络。 48:如何分析一个bug是前端?还是后端? 答案:平时提交bug的时候,前端开发和后端开发都相互扯皮,都不承认他们自己的bug。 这样的情况很容易判断:先抓包看请求报文,对着接口文档,看看请求报文有没有问题,如果有问题的话,就是前端的发的数据不对,如果请求报文没问题那么就看返回报文,返回的数据不对,那么久是数据不对。 49:fiddler篡改数据有用过吗?为什么要用? 答案: 1:用过 2:可以修改请求的参数,突破前端页面的输入限制(比如金额) 3:可以发现很多页面上操作发现不了的bug 50:接口的安全性从哪些方面考虑? 答案: 1:平台中与钱相关的都需要进行安全性测试。 2:与用户和密码相关的接口都需要进行安全性测试。 51:如何测试接口的安全性? 答案:用fiddler或者charles抓包进行数据篡改提交。 53:如果你提交一个bug,如果开发认为不是一个bug,那么如何处理? 答案: 1:首先找相关产品需求人员、开发人员,在一起讨论一下,是不是需求本身的问题。或者是需求文档版本不一致造成的。 2:如果是缺陷的话,提交bug到缺陷库里进行备案。 54: 如何录制脚本? 答案: 1:Loadrunner录制脚本的采用Virtual User Generator录制脚本 2:jmeter采用第三方的bad boy录制脚本或者jmeter自身的代理录制脚本 55:参数化有哪几种? 答案: Loadrunner可以通过记事本Edit wtih Notepad方式;添加txt数据文件;数据库的连接向导Data Wizard完成。 jmeter可以通过添加前置处理器(用户参数);通过CSV Data Set Config参数化;通过助手函数参数化。 56:你是如何做性能测试的? 答案: 1:首先性能测试也是需要做性能测试的需求分析。 2:制定性能测试计划。 3:开发测试脚本。 4:设计测试场景(比如电商的首页、登录页、商品列表页、商品详情页、商品搜索、提交订单,支付)(比如互联网金融的首页、登录页、标的详情页、标的列表页、投标)。 5:执行场景。 6:对场景进行监控 7:分析结果系统调优。 57:在业务运行过程中,为什么日志文件没有打印日志? 答案:步当的日志以及日志级别会引起系统性能上的问题。包括占用大量的磁盘空间。 58:Linux除了搭建环境还能做什么? 答案:站在测试人员角度来说,Liunx除了能搭建Linux服务器环境之外,Linux可以作为日志服务器,另外Linux下有很多平台开工具,测试人员还需要监控Linux服务器相关的资源指标。 59:web测试与APP测试的区别? 答案:Web测试与APP测试在流程和功能测试上测试没有区别。 Web是B/S架构,APP是C/S架构,Web测试需要操作系统和浏览器兼容性测试,APP测试需要考虑系统安装、卸载、升级、自动更新、APP对于各种机型的适配性测试(借助于云测试技术),各种干扰性测试(比如中断,来电、短信、关机、重启)、弱网络测试(移动数据,Wifi)以及电量测试、流量测试。 60:APP如何安装软件的? 答案: 1、用真机可以安装要测试APP(包括测试安装包或者生产安装包,如果APP已经上传到应用商城并且通过审核,可以在应用下载安装) 2、可以借助云平台上所提供机型,直接上传.apk文件,可以自动测试app的安装(比如testin平台,和优测)。 61: 你怎么测试APP举例说明? 答案: 1:正常情况下APP提供的功能肯定是需要满足需求规格书中所要求的功能。 2: APP测试需要考虑系统安装、卸载、升级、自动更新、APP对于各种机型的适配性测试(借助于云测试技术),各种干扰性测试(比如中断,来电、短信、关机、重启)、弱网络测试(移动数据,Wifi)以及电量测试、流量测试。 3:安全性:通过抓包工具测试APP接口的安全性。 62:除了在真机上测试APP,你还用过什么工具测试?你们测试过哪些具体的安卓机型(一定要能需要说出具体的机型型号)。 答案: 63:app的兼容性你是怎么测试的? 答案:可以借助云平台测试兼容性(testin云,优测等)进行兼容性测试,以及模拟器上的测试。 64:说:10个adb shell的命令? 答案: 1:adb shell:进入连接设备的shell模式 2:adb devices:查看连接中的设备 3:adb shell logcat:捕获日志 4:adb shell monkey -p 包名 5:adb reboot:重启安卓设备 6:adb pull [] - copy file/dir from device——获取模拟器中的文件 7:adb push - copy file/dir to device——向模拟器中写文件 8:adb install -r 应用程序.apk——安装应用程序 9:adb shell am start -n 主包名/包名+类名——启动应用程序 10:查看进程ID:$adb shell ps|grep <被测应用包名> 65:monkey你们工作中是怎么用的? 答案:我们将monkey作为一个向待测试应用发送随机的按键消息的测试工具,验证待测试应用在这些随机的输入面前是否会崩溃或者闪退。 66:如何获取APP的日志? 答案: 1:在cmd命令行里,输入adb shell logcat > d:\android.log 2: 在打开应用程序,比如QQ 3: 在cmd命令行里,结束命令,ctr+c 4:在d盘的根目录下能够android.log日志文件。 68:性能测试的指标? 答案: 1:并发用户数(要注意并发用户数、注册用户数、在线用户数的三者之间的区别) 2:响应时间(遵循2-5-8的原则) 3:TPS:每秒处理事务的必输,是衡量系统很重要的一个指标 4:点击率 5:吞吐量 6:资源使用率(包括cpu,内存,磁盘、网络) 69:Loaduner的三大组件什么? 答案: 脚本生成器:virtual user generator 场景控制器:controller 结果分析:analysis 70:Loarunner中参数化,事务,检查点、关联、思考时间、集合点、IP欺骗分别表示什么含义? 答案: 事务:是这样的一个点,我们为了衡量某个action的性能,在action开始和结束位置插入的这样的一个范围。 集合点:是一个控制真正并发访问的点,通常和事务结合起来使用,一般放在开始事务的前面。 检查点:添加检查点的目的是,检查服务器返回的内容,是否包含该检查点的内容,以保证测试时结果的正确性,一般用web_reg_find()这个函数。 关联:关联是用来解决脚本中存在的动态数据问题。 IP欺骗:Lodrunner允许允许的虚拟用户数采用不同的IP地址访问同一网站。 思考时间think_time():脚本中连续二个操作之间的等待时间。 参数化:为了更加真实的模拟客户端不同的数据对服务器进行请求,为了模拟这些不同数据,所以需要对这些不同的数据进行参数化操作,参数化操作之后更能真实的体现生产环境中的业务场景(比如模拟不同用户登录操作,需要对登录的用户名和密码进行参数化)。 71:在jmeter中关联的含义? 答案:后一个http请求使用了前一个http请求,二个请求直接发送了关联。 72:为什么有几次的测试结果为什么不一样? 答案: 1:无论在测试时间是否充裕的情况下,一个性能测试用例最好多执行几次,首先要排除掉明细离散的一些测试结果,把这些明显离散的结果排除掉。 2:另外就是收到外界网络因素的干扰,比如你在测试过程中,此时正好有人通过网络进行下载操作,所以测试环境最好要单独独立出来。 73:为什么随着并发用户数量的增加,响应时间反而变短? 答案:这肯定是一种不正常的现象,因为按照常理用户越多,系统肯定会越来越多,变慢,相应时间肯定会更长。可能是系统在更多用户并发访问操作下事务已经失败了。 74:你是如何进行自动化测试的? 答案: 1:通过UI层面的自动化,比如Selenium测试框架,从做UI层面做自动化测试,这种测试维护成本高。 2:通过Jmeter或者Postman之类的测试工具从接口层面做自动化,接口层面的自动化可能能发现的bug。 75:PV和UV的区别? 答案: PV:PV即page view,即页面浏览器或者点击量,用户每次刷新即被计算一次。我们可以认为,用户的一次刷新给服务器造成了一次请求。 UV:UV即Unique Vistor,访问您网站的一个电脑客户端为一个访客。 76:需求文档是由谁编写的? 答案:客户,产品线/需求分析师 77:需求确定中不确定的需求怎么解决? 答案:项目组内部讨论决定,如果还是得不到解决,需要找用户确认。 78:项目中碰到需求问题,能够直接和客户沟通吗? 答案:不能。 测试人员需要将需求问题整理到一起,由项目经理/产品经理作为接口人和客户进行沟通,我们的需求是产品线提的,关于需求问题,测试人员直接找产品线。 79:怎么样进行需求评审? 答案:通过会议的形式讨论需求,评审的内容在会议之前发出来让参会的人员熟悉需求,是带着评审的内容参加,而不是带着培训的目的参加。 80:什么是测试点,测试点包含哪些内容? 答案:就是针对功能细分的点,我们写的测试点类似于测试用例(但是比测试用例粗一些,因为测试用例需要具体的细化到具体操作步骤和输入数据)。 81:什么是测试方案?什么是测试策略? 答案:测试方案是指导我们怎么测的问题,里面的主要内容是测试点,测试策略是指导我们要测试什么方面,比如要进行功能测试、性能测试、兼容性测试等等,并且指出需要依赖于什么工具。 82:测试方案由谁编写? 答案:测试组长,有经验的测试工程师。新入职的新的测试人员不需要编写。 83:测试方案包含哪些内容? 答案:业务功能的描述,对需求功能的理解,业务流程图,业务表,测试点等。 84:测试方案编写的输入条件是什么? 答案:《需求规格说明书》 85:测试用例的设计方法有哪些? 答案:等价类划分、边界值、因果图、场景法、错误猜测法等等。 86:测试用例内容有哪些? 答案:测试用例的编号、输入(操作步骤和输入数据)、输出(预期结果)、测试用例优先级等。 87:什么是好的测试用例? 答案: 1:测试用例一定要能覆盖到需求,不遗漏。 2:测试用例的操作步骤和输入数据要很详细,比如让一个新来的测试人员能按照这测试用例一步步进行操作进行测试执行动作。 3:测试用例有可维护性和扩展性要好,在后续的版本中可以借鉴。 88:测试用例的颗粒的划分? 答案:颗粒的大小就是测试用例的粗细程度,每个项目的尺度肯定有所不同,比如金融类、保险类、外汇类、精算类的软件测试用例的粒度就要很细。 89:测试用例为什么需要有优先级,一般需要有哪些优先级? 答案:测试用例对应的功能的重要程度是不同的,另外在不同的阶段执行的用例的数目是不同的(比如在冒烟测试阶段只执行核心的测试用例)一般有高中低三级。 90:你们项目中高中低优先级的测试用例占比是多少? 答案:3:4:3. 91:测试用例需要哪些人来评审? 答案:项目组中的所有成员,包括:项目经理、产品经理、开发人员、测试人员等等。 92:测试用例是谁编写的? 答案:测试人员都需要编写测试用例,最好由测试组长最好统一整合测试用例。 93:不能发现bug的测试用例不是好的测试用例吗? 答案:这样的说法有点偏见,好的测试用例是一套完整的不遗漏的测试用例(一定要能完全覆盖到需求);好的测试用例是一定能够被其他测试人员执行的测试用例,不能因为是否找到bug来说明用例是否好(比如有的项目本身就很稳定)。 94:为什么要进行交叉测试? 答案:测试工程师在执行测试用例的时候,可能会忽略一些偶然或者异常的情况,而且每个测试工程师在执行测试过程中本身的测试思维局限性,所以其他测试工程师在此时做交叉测试的时候就能发现一些潜在的没有被发现的bug。 95:测试环境是由谁搭建? 答案:测试环境是由我们的测试组长搭建的,如果自己会搭建,也可以说是自己搭建测试环境,但是搭建测试环境的步骤要能讲清楚。 96:你们测试的版本是在哪里获取的? 答案:开发完成代码之后,提交到SVN上,测试人员在SVN获取。 97:什么叫预测试,预测试是怎么进行的?预测试一般为多长时间? 答案:就是冒烟测试(smoke testing),就是对开发提交的新版本进行核心功能的测试,检查功能通不同,业务流程能不能完成,一般需要半天左右。 98:你的测试职业发展是什么? 99:你认为测试人员需要具备哪些素质? 答案: 1、细心、耐心、责任心 2、有很好的沟通能力,特别是开发人员的沟通,与产品业务人员的沟通 3、比较强的学习新知识的能力(比如学习和公司产品相关的业务、学习新的测试技术、测试工具) 100:软件测试的目的是什么? 答案:测试的目的是找出软件产品中的缺陷,使软件尽可能满足用户的需求,当然软件测试一定不能发现所有问题。 101:软件测试一般分为哪几个阶段? 单元测试——>集成测试——>系统测试——>验收测试 102:在您以往的工作中,一条软件缺陷(或者叫Bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(Bug)记录? 一条bug记录最基本应该包含: 缺陷编号 缺陷严重性、优先级 缺陷产生的模块 缺陷的摘要,阐述bug的大体内容 缺陷对应的版本 缺陷的详细描述(产生的条件即操作步骤) 缺陷对应的一些附件,截图 缺陷指定的对应人员 高质量的缺陷应该包含以下要素: 每条缺陷报告只能提交一个缺陷 不可重现的缺陷也要报告(出现的频率) 指明缺陷的严重性和优先级 指明缺陷的类型:功能、性能、界面、建议 缺陷产生的步骤描述要清晰,准确、无误 给缺陷增加附件 103:为什么要进行接口测试? 接口测试由于绕开了前端,直接通过请求调用的方式进行测试,有如下优势: 1.、更早的测试介入,只要接口开发完成,就可以测试 2.、更多的场景覆盖,因为绕开了前端的控制,使得测试场景更自由 3、 接口测试从项目的角度,工作量是低于UI测试的,投资回报较高 4、 接口测试对于自动化的支撑度更好,有好的接口测试过程,就有可能支持好的接口自动化过程另外,接口测试可以扩充对于其他类型测试的支持。比如性能测试,比如安全测试。 如果接口测试不做的话,这两种测试也不好做. 104:用monkey 命令 对上海公交 app进行 性能测试 adb shell monkey –p com.shjt.map –-throttle 100 –-pct-touch 50 –-pct-motion 50 –v –v 1000 >c:\monkey.txt 105:如何分析monkey日志? 正常情况,如果Monkey测试顺利执行完成, 在log的最后, 会打印出当前执行事件的次数和所花费的时间; // Monkey finished 代表执行完成\ 异常情况 Monkey 测试出现错误后,一般的分析步骤 看Monkey的日志 (注意第一个swith以及异常信息等) 1. 程序无响应的问题: 在日志中搜索 “ANR” 2. 崩溃问题:在日志中搜索 “Exception” (如果出现空指针, NullPointerException) 肯定是有bug 106:解压apache-tomcat-8.0.53.tar.gz的命令 答案: tar -xzvf apache-tomcat-8.0.53.tar.gz x:代表什么含义 z:代表什么含义 v:代表什么含义 f:代表什么含义 107:查看端口8080是否被占用命令 答案: netstat -anp | grep 8080 108:如何查看所有java进程 ps -ef | grep java 109:循环看log2019.log最后的3行内容: tail -fn 3 log2019.log 110:如何启动和关闭tomcat命令 答案: 先cd到tomcat的bin目录 启动tomcat ./ startup.sh 关闭tomcat ./ shutdown.sh 111:分别解释下列协议的含义 协议 解释 端口 FTP 文件传输协议 21 SFTP 文件传输协议 22 SSH 远程登录会话协议 22 HTTP 超文本传输协议 80 HTTPS 超文本传输安全协议 8443 112:在手工接口测试或者自动化接口测试的过程中,上下游接口有数据依赖如何处理? 答案:在jmeter中可以用正则表达式来来实现。 第1步:Jmeter中关联可以在需要获取数据的请求上 右键-->后置处理器 选择需要的关联方式, 第2步:设置正则表达式提取器:包括引用名称、正则表达式、模板、匹配数组等 第3步:在其他下游请求中用${引用名}来或取第2步中的值 113:如何分析APP的日志 1)程序无响应的情况:搜索关键字“ANR in” 2)崩溃的情况1:搜索关键字“CRASH” 3)崩溃的情况2:搜索关键字“Exception” 4)内存溢出的情况:搜索关键字“OOM” 5)测试成功的情况:搜索关键字“Monkey finished” 114:怎么样验证jmeter返回的结果时候正确的? 答案: http响应代码 业务代码 断言 115:Fiddler怎么样抓取订单相关的包?(bpu打断点) 117:你在工作中发现过有哪些有价值的bug? 118:你们项目的发布流程什么什么? 119:你写了测试用例写了多少? 120:一个项目发现了多少BUG? 121:你和你的测试组长在工作上有哪些区别吗? 122:之前在公司遇到问题你是怎么解决的? 123,哪个bug对你来说印象最深,怎么测出来的? 124,测试用例包含哪些内容? 125:你Selenium+TestNG(Junit)写过自动化测试脚本吗,说说你的测试思路? 126:什么是sql注入? SQL注入(SQL Injection),就是利用程序员对用户输入数据的合法性检测不严或不检测的特点,故意从客户端提交特殊的代码,从而收集程序及服务器的信息,获取想得到的资料(如数据库用户名、密码、表结构等)。 127:什么是跨站脚本攻击? XSS攻击通常指黑客通过"HTML注入"篡改了页面,插入了恶意脚本。 128:如何测试订单? 127:如何测试购物车? 129:如何测试支付功能? 130:你对敏捷测试了解,你是做怎么从事敏捷测试工作的? 131:用monkey测试APP你一般需要测试多长时间?