面试准备阶段必考知识点和美团测开面试题分享

发表于:2020-4-23 09:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:吴雨年    来源:百度文库

  测试生命周期
  需求阶段(Requirements phase)
  计划阶段(Planning Phase)
  分析阶段(Analysis phase)
  设计阶段(Design Phase)
  实施阶段(Implementation Phase)
  执行阶段(Execution Phase)
  总结阶段(Conclusion Phase)
  结束阶段(Closure Phase)
  V、W模型
  V模型
  最典型的V模型版本一般会在其开始部分对软件开发过程进行描述,为古老的瀑布模型。在V模型中,测试过程被加在开发过程的后半部分,单元测试所检测代码的开发是否符合详细设计的要求。集成测试所检测此前测试过的各组成部分是否能完好地结合到一起。系统测试所检测已集成在一起的产品是否符合系统规格说明书的要求。而验收测试则检测产品是否符合最终用户的需求。如图下:
  V模型的缺陷
  仅仅把测试过程作为在需求分析、系统设计及编码之后的一个阶段
  忽视了测试对需求分析,系统设计的验证,一直到后期的验收测试才被发现。
  W模型
  相对于V模型,W模型增加了软件各开发阶段中应同步进行的验证和确认活动。W模型由两个V字型模型组成,分别代表测试与开发过程,图中明确表示出了测试与开发的并行关系。
  W模型强调
  测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。W模型有利于尽早地全面的发现问题。例如,需求分析完成后,测试人员就应该参与到对需求的验证和确认活动中,以尽早地找出缺陷所在。同时,对需求的测试也有利于及时了解项目难度和测试风险,及早制定应对措施,这将显著减少总体测试时间,加快项目进度。
  但W模型也存在局限性。在W模型中,需求、设计、编码等活动被视为串行的,同时,测试和开发活动也保持着一种线性的前后关系,上一阶段完全结束,才可正式开始下一个阶段工作。这样就无法支持迭代的开发模型。对于当前软件开发复杂多变的情况,W模型并不能解除测试管理面临着困惑。
  W模型的优点
  测试的活动与软件开发同步进行
  测试的对象不仅仅是程序,还包括需求和设计
  尽早发现软件缺陷可降低软件开发的成本
  测试用例编写方法
  基于需求的设计方法
  等价类
  边界值
  因果图
  正交排列法
  场景设计法
  错误猜测法
  如何描述一个Bug
  1、发现问题的版本
  2、问题出现的环境
  环境分为硬件环境和软件环境。如果是web项目,需要描述浏览器版本、客户机操作系统等;如果是APP项目,需要描述机型、分辨率、操作系统版本等。
  3、错误重现的步骤
  描述问题的最短版本。
  4、预期结果
  要让开发人员知道怎么样才是正确的,尤其要以用户的角度来描述程序的行为是怎么样的。如果依据需求提出的故障,能写明需求来源是最好的。
  5、实际结果
  描述错误的现象。比如录制,截图等操作。
  Bug的等级
  崩溃(Blocker) 1级bug,必须优先修改
  (1)常规操作引起的系统崩溃、死机、死循环
  (2)造成数据泄漏的安全性问题,比如恶意攻击造成的账户私密信息泄漏。
  (3)涉及金钱,如支付类软件,金钱计算错误
  严重(Critical) 2级bug
  (1)重要功能不实现(如:微信没有语音聊天,朋友圈等)
  (2)错误的波及面广,影响到其他重要功能的正常实现
  (3)非常规操作导致的程序崩溃、死机、死循环(非常规操作:用户使用软件时不会进行的操作)
  (4)外观难以接受的缺陷(例如:直播平台的封面图片的失真、压缩,完全变形)
  (5)密码明文显示
  一般(Major) 3级bug
  不影响产品的运行、不会成为故障的起因、但对产品外观和下道工序影响较大的缺陷
  (1)次要功能不能正常实现
  (2)操作界面错误(包括数据窗口内列名的定义,含义不一样) eg:列名与列名下的内容不一样
  (3)查询错误、数据显示错误
  (4)简单的输入限制未放在前端进行控制;(格式显示,如登录和注册中的格式判断可由前端判断)
  (5)删除操作未给出提示
  次要(Minor) 4级bug
  程序在一些显示上不美观,不符合用户习惯,或者是一些文字的错误
  (1)界面不规范
  (2)辅助说明描述不清楚
  (3)提示窗口文字未采用行业术语
  (4)界面存在文字错误
  (5)改进意见:可以提高产品质量建议,包括新需求和对需求的改进
  美团测开面试题
  1、自我介绍,问项目中印象最深的点
  2、tdp和udp都是哪一层的,有什么应用场景ftp、dns分别用的是哪个?
  传输层,ftp用tcp,dns用tcp和udp,普通域名解析用udp,区域传输用udp,当区域内的辅助dns服务器向主dns服务器请求数据进行更新时就是区域传输
  3、和equal区别
  判断地址是否相同,equal判断地址指向的内存空间中的值是否相同
  4、深拷贝和浅拷贝
  浅拷贝只增加一个新指针,指向已有的内存空间,深拷贝增加新指针并申请新的内存空间
  5、session和cookie
  会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。
  cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生。
  cookie的工作原理是:由服务器产生内容,浏览器收到请求后保存在本地;当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁”了。
  cookie虽然在一定程度上解决了“保持状态”的需求,但是由于cookie本身最大支持4096字节,以及cookie本身保存在客户端,可能被拦截或窃取,因此就需要有一种新的东西,它能支持更多的字节,并且他保存在服务器,有较高的安全性。这就是session。
  问题来了,基于http协议的无状态特征,服务器根本就不知道访问者是“谁”。那么上述的cookie就起到桥接的作用。
  我们可以给每个客户端的cookie分配一个唯一的id,这样用户在访问时,通过cookie,服务器就知道来的人是“谁”。然后我们再根据不同的cookie的id,在服务器上保存一段时间的私密资料,如“账号密码”等等。
  总结而言:cookie弥补了http无状态的不足,让服务器知道来的人是“谁”;但是cookie以文本的形式保存在本地,自身安全性较差;所以我们就通过cookie识别不同的用户,对应的在session里保存私密的信息以及超过4096字节的文本。
  另外,上述所说的cookie和session其实是共通性的东西,不限于语言和框架。
  6、进程与线程,线程有哪几种模式
  模式3种:
  1、继承thread
  2、实现runnable接口,实现Callable接口通过FutureTask包装器来创建Thread线程
  3、使用ExecutorService、Callable、Future实现有返回结果的线程。
  ----- 继承Thread类创建线程 ----
  1】d定义Thread类的子类,并重写该类的run()方法,该方法的方法体就是线程需要完成的任务,run()方法也称为线程执行体。
  2】创建Thread子类的实例,也就是创建了线程对象
  3】启动线程,即调用线程的start()方法
  ----- 实现Runnable接口创建线程 -----
  1】定义Runnable接口的实现类,一样要重写run()方法,这个run()方法和Thread中的run()方法一样是线程的执行体
  2】创建Runnable实现类的实例,并用这个实例作为Thread的target来创建Thread对象,这个Thread对象才是真正的线程对象
  3】第三部依然是通过调用线程对象的start()方法来启动线程
  -----  使用Callable和Future创建线程 -----
  1】创建Callable接口的实现类,并实现call()方法,然后创建该实现类的实例(从java8开始可以直接使用Lambda表达式创建Callable对象)。
  2】使用FutureTask类来包装Callable对象,该FutureTask对象封装了Callable对象的call()方法的返回值
  3】使用FutureTask对象作为Thread对象的target创建并启动线程(因为FutureTask实现了Runnable接口)
  4】调用FutureTask对象的get()方法来获得子线程执行结束后的返回值
  7、写sql,所有课程成绩大于80分的学生名字
  sql语句:
  distinct:去重 select distinct name from table
  where:语法:SELECT 列名称 FROM 表名称 WHERE 列 运算符 值    select name from table where grade>80
  order by:SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber
  先顺序排序company,然后在同样的company之间顺序排序ordernumber以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
  SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC
  group by:SELECT Customer,SUM(OrderPrice) FROM Orders GROUP BY Customer
  8、手撕代码,两个栈实现队列
  9、如何测试地铁闸机
  10、平时在哪学新技术,看到的最新的技术热点是什么
  11、聚簇索引和非聚簇索引
  聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据。
  非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行,myisam通过key_buffer把索引先缓存到内存中,当需要访问数据时(通过索引访问数据),在内存中直接搜索索引,然后通过索引找到磁盘相应数据,这也就是为什么索引不在key buffer命中时,速度慢的原因。
  12、主键和唯一键
  当一个属性声明为主键时,它将不接受NULL值。另一方面,当声明为Unique的属性时,它可以接受一个NULL值。
  表中只能有一个主键,但可以有多个唯一键。
  定义主键时自动创建聚簇索引。相反,Unique键生成非聚集索引。

     本文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理
价值398元的测试课程免费赠送,填问卷领取吧!

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计

法律顾问:上海漕溪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2022
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号