测试开发面试知识(自用)

对测试的了解

软件测试是软件开发过程的一个重要组成部分,是用来确认软件的性能是否符合开发之前所提出的一些要求。测试开发工程师就是软件质量的把关者和开发工程师相辅相成。

你为什么要选择测开

一方面是我是看中了测开的发展前景,近几年国内对软件测试越来越重视,这个岗位既要懂测试又要懂开发,学习的广度比较高。
另一方面,是我个人做事情处理问题比较喜欢刨根问底,喜欢站在客户的角度去看待产品,我觉得自己比较适合这个职业。

测试的方法

从是否执行代码看,可以分为静态测试和动态测试
从是否关心内部结构来看,可以分为黑盒测试、白盒测试和灰盒测试

静态测试和动态测试

  • 静态测试:就是不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误的过程。
  • 动态测试:实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程
    3、主要有哪些测试方面

黑盒测试白盒测试灰盒测试

  • 黑盒测试中主要关注被测软件的功能实现,而不是内部逻辑。在黑盒测试中,被测对象的内部结构,运行情况对测试人员是不可见的。
  • 最常见的黑盒测试有:功能性测试、容量测试、安全性测试、负载测试、恢复性测试、标杆测试、稳定性测试、可靠性测试等。
  • 白盒测试需要你对系统内部的结构和工作原理有一个清楚的了解,并且基于这个知识来设计你的用例。
  • 白盒可以检测代码中的每条分支和路径;揭示隐藏在代码中的错误;对代码的测试比较彻底
  • 灰盒测试:白盒测试和黑盒测试往往不是决然分开的,一般在白盒测试中交叉使用黑盒测试的方法,在黑盒测试中交叉使用白盒测试的方法。灰盒测试就是这类界于白盒测试和黑盒测试之间的测试。

黑盒测试的判定表法是什么?

判定表法是基于判定表的测试方法。判定表是用于显示条件和条件导致动作的集合,是分析和表达多逻辑条件下执行不同操作的工具。
判定表通常由四部分组成:分别是条件桩、动作桩、条件项、动作项

设计测试用例的方法

等价类划分,边界值,场景法,判定表,因果图,错误推断法,正交测试法。

等价类划分法是什么

等价类划分是一种黑盒测试方法,把无限的测试变成有限的测试。
通过对输入数据分类的方式,在保证测试质量的情况下,简化的测试的过程。

应用场合:有数据输入的地方(比如说:输入框,文本框),就可以用到等价类划分

从哪些方面设计测试用例-如果要对网络页面进行测试应从哪几方面考虑?

功能性、兼容性、易用性、可靠性、性能、安全等

兼容性测试主要指?

浏览器、操作系统、屏幕分辨率

什么是性能测试

性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
负载测试和压力测试都属于性能测试,两者可以结合进行。

  • 负载测试 :确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。
  • 压力测试 是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。

性能测试包括哪些测试?

性能测试八大类包括:性能测试、负载测试、压力测试、配置测试、并发测试、容量测试、可靠性测试、失败测试。在这里插入图片描述

什么时候开始执行性能测试?

答案:功能测试已完成并稳定运行,性能测试环境已搭建

为什么要做性能测试

1、性能测试就是为了满足系统上线后能满足客户放的使用需求。
2、最小化成本
3、最小化风险
4、交付高质量系统

性能测试的目标

1、评价系统当前性能
2、寻找瓶颈,优化性能
3、测系统未来性能,提高可扩展性

性能测试过程中,需要监控OS的哪些资源?

答案:cpu,内存,磁盘,网络

性能测试关注哪些指标?

响应时间、并发数、吞吐率、资源利用率、TPS
TPS:Transactions Per Second(每秒传输的事物处理个数),即服务器每秒处理的事务数。
并发用户数:并发用户数是指在某一给定时间内,某个特定点上进行回话操作的用户数。
响应时间:指的是客户端发出请求到得到响应的整个过程经历的时间
响应时间=网络响应时间+应用程序响应时间
吞吐量:是指单位时间内系统处理的客户请求的数量,直接体现软件系统的性能承载能力。
资源利用率:是指系统资源的使用程度,比如服务器的CPU利用率、内存利用率、磁盘利用率、网络带宽利用率等。

响应时间和吞吐量直接的关系是什么?

吞吐量图显示的是虚拟用户每秒钟从服务器接收到的字节数。当和响应时间比较时,可以发现随着吞吐量的降低,响应时间也降低,同样的,吞吐量的峰值和最大响应时间差不多在同时出现。

平均响应时间越短,系统吞吐量越大;平均响应时间越长,系统吞吐量越小;

假设系统A调用系统B,把B的接口都mock了进行性能测试,这样有什么好处和坏处?

好处:防止系统B出错引起测试错误;不会因系统B的开发进度影响测试;mock后可以快速返回结果,提高测试效率
坏处:很多情况下无法完全模拟出服务器的所有可能的返回情况,另外,mock掉了关联方之后,整个环境的连通性可能测试的不到位。

测试的流程

  1. 需求:阅读需求,理解需求,与客户、开发、架构多方交流,深入了解需求。
  2. 测试计划: 根据需求估算测试所需资源(人力、设备等)、所需时间、功能点划分、如何合理分配安排资源等。
  3. 用例设计:根据测试计划、任务分配、功能点划分,设计合理的测试用例。
  4. 执行测试:根据测试用例的详细步骤,执行测试用例。
  5. 记录执行结果和bug:对每个case记录测试的结果,有bug的在测试管理工具中编写bug记录
  6. 追踪bug:追踪leader分配追踪的bug.直到 bug被修正
  7. 测试报告:通过不断测试、追踪,直到被测软件达到测试需求要求,并没有重大bug.。

给你一个水杯你会怎么测试

功能测试:主要关注水杯基本功能
1.1 水杯是否可以正常装水
1.2 水杯是否可以正常喝水
1.3 水杯是否有盖子,盖子是否可以正常盖住
1.4 水杯是否有保温功能,保温功能是否正常保温
1.5 水杯是否会漏水,盖住盖子拧紧后是否会漏水
界面测试:主要关注水杯外观、颜色、设计等方面
2.1 外观是否完整
2.2 外观是否舒适
2.3 颜色搭配及使用是否让人感到舒适
2.2 杯子外观大小是否适中
2.3 杯子是否有图案,图案是否易磨损
易用性测试:主要关注水杯使用是否方便
3.1 水杯喝水时否方便
3.2 水杯拿起放下是否方便,这里会衍生到水杯形状的测试
3.3 水杯装水是否方便
3.4 水杯携带是否方方便
3.5 水杯是否有防滑功能
3.6 水杯装有低温或者高温水时,是否会让手感到不适
性能测试:
4.1 水杯装满水时,是否会露出来
4.2 水杯最大使用次数
4.3 水杯的保温性是否达到要求
4.4 水杯的耐寒性是否达到要求
4.5 水杯的耐热性是否达到要求
4.6 水杯掉落时时,是否可以正常使用
4.7 水杯长时间放置时,是否会发生泄露
兼容性测试:主要关注水杯是否可以装其他液体,如果汁、汽油、酒精等可
移植性测试:主要关注水杯放置环境等
6.1 将水杯放在常温环境中,使用是否正常
6.2 将水杯放在零下的环境中,使用是否正常
6.3 将水杯放在高于正常温度的环境中,使用是否正常
安全性测试:主要关注水杯外观和各种异常条件下是否释放有毒物质等
7.1 当水杯装满热水时,水杯是否会烫手
7.2 当水杯装上水后,是否会产生有毒物质
7.3 把水杯放在零下环境时,是否会产生有毒物质
7.4 把水杯放在高温环境时,是否会产生有毒物质

我想要回家,让你给我买一张票,然后设计测试用例

1.确定需求(回家回哪,需要什么票,买什么时候的票)

2.开始测试

2.1功能测试(我去买票(买火车票,飞机票),买到票(什么时候),回来给你)

2.2可靠性测试(我去买票过程中被撞死了,票买不到怎么办,延期了,买那个点的票没了怎么办让我帮他买票的人的身份,比如是否有特殊优待,如军人,1米2以下儿童等,身份证丢了,或者票丢了,责任划分)

2.3可维护性测试(票是否可保存完好)

2.4兼容性(还不同人的去买,我中间招人去买,我坐车走路)

2.5算法测试(我通过不同的渠道买票花费的时间)

2.6竞品测试(别的人怎么买的票)

2.7安全性测试(身份信息保密)

2.8性能测试(一个身份证买多张票,同时多张身份证买多张票)

登录页面测试用例设计方法

功能测试(Function test)
  0. 什么都不输入,点击提交按钮,看提示信息。(非空检查)
  1.输入正确的用户名和密码,点击提交按钮,验证是否能正确登录。(正常输入)
  2.输入错误的用户名或者密码, 验证登录会失败,并且提示相应的错误信息。(错误校验)
  3.登录成功后能否能否跳转到正确的页面(低)
  4.用户名和密码,如果太短或者太长,应该怎么处理(安全性,密码太短时是否有提示)
  5.用户名和密码,中有特殊字符(比如空格),和其他非英文的情况(是否做了过滤)
  6.记住用户名的功能
  7.登陆失败后,不能记录密码的功能
  8.用户名和密码前后有空格的处理
  9.密码是否加密显示(星号圆点等)
  10.牵扯到验证码的,还要考虑文字是否扭曲过度导致辨认难度大,考虑颜色(色盲使用者),刷新或换一个按钮是否好用
  11.登录页面中的注册、忘记密码,登出用另一帐号登陆等链接是否正确
  12.输入密码的时候,大写键盘开启的时候要有提示信息。
  界面测试(UI Test)
  1.布局是否合理,2个testbox 和一个按钮是否对齐
  2.testbox和按钮的长度,高度是否复合要求
  3. 界面的设计风格是否与UI的设计风格统一
  4. 界面中的文字简洁易懂,没有错别字。
  性能测试(performance test)
  1.打开登录页面,需要几秒
  2.输入正确的用户名和密码后,登录成功跳转到新页面,不超过5秒
  安全性测试(Security test)
  1.登录成功后生成的Cookie,是否是httponly (否则容易被脚本盗取)
  2.用户名和密码是否通过加密的方式,发送给Web服务器
  3.用户名和密码的验证,应该是用服务器端验证, 而不能单单是在客户端用javascript验证
  4.用户名和密码的输入框,应该屏蔽SQL注入攻击
  5.用户名和密码的的输入框,应该禁止输入脚本 (防止XSS攻击)
  6.错误登陆的次数限制(防止暴力破解)
  7. 考虑是否支持多用户在同一机器上登录;
  8. 考虑一用户在多台机器上登录
  可用性测试(Usability Test)
  1. 是否可以全用键盘操作,是否有快捷键
  2. 输入用户名,密码后按回车,是否可以登陆
  3. 输入框能否可以以Tab键切换
  兼容性测试(Compatibility Test)
  1.主流的浏览器下能否显示正常已经功能正常(IE,6,7,8,9, Firefox, Chrome, Safari,等)
  2.不同的平台是否能正常工作,比如Windows, Mac
  3.移动设备上是否正常工作,比如Iphone, Andriod
  4.不同的分辨率
  本地化测试 (Localization test)
  1. 不同语言环境下,页面的显示是否正确。
  软件辅助性测试 (Accessibility test)
  软件辅助功能测试是指测试软件是否向残疾用户提供足够的辅助功能
  1. 高对比度下能否显示正常 (视力不好的人使用)

常用的自动化测试工具

Selenium

什么是接口测试?为什么要做接口测试?

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

后端接口测试测什么?

在这里插入图片描述

如何让接口用例支持多套环境(联调环境、测试环境、预发布环境),说出你的做法

自定义一个用户变量,将ip放在变量里,然后接口取变量的值

介绍下什么是索引

在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。
对于数据库来说,索引是一个必选项,但对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一部分。

一个web系统,用户从打开浏览器输入网址页面显示在浏览器中,这个过程当中,页面给用户总的响应时间通常可以细分为哪些?

答案:从客户端到服务端的请求时间(请求网络传输时间request),从服务端返回数据到客户端的时间(响应网络传输时间response),页面渲染时间(客户端浏览器加载页面的时间),处理器的处理时间(应用服务器+数据库服务器处理时间)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值