测试面试基础题集合

面试基础题集合

您认为做好测试用例设计工作的关键是什么?

以较少的测试用例覆盖尽可能多的需求和测试点!白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果。 黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题。

您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。

1.等价类划分
划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定。测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.例如:主要应用于有数据输入的地方,如注册登录界面;
2.边界值分析法
边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.
3.因果图方法
前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等. 考虑输入条件之间的相互组合,可能会产生一些新的情况. 但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多. 因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例. 这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.
4.错误推测法
基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.
错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例. 例如, 在单元测试时曾列出的许多在模块中常见的错误. 以前产品测试中曾经发现的错误等, 这些就是经验的总结. 还有, 输入数据和输出数据为0的情况. 输入表格为空格或输入表格只有一行. 这些都是容易发生错误的情况. 可选择这些情况下的例子作为测试用例.

我现在有个程序,发现在Windows上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?

1、检查系统是否有中毒的特征;
2、检查软件/硬件的配置是否符合软件的推荐标准;
3、确认当前的系统是否是独立,即没有对外提供什么消耗CPU资源的服务;
4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的;
5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况。

什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样?

在同一时间点,支持多个不同的操作。
LoadRunner中提供IP伪装,集合点,配合虚拟用户的设计,以及在多台电脑上设置,可以比较好的模拟真实的并发。
集合点,即是多个用户在某个时刻,某个特定的环境下同时进行虚拟用户的操作的。集合点失败,则集合点的才操作就会取消,测试就不能进行。

写出bug报告当中一些必备的内容。

硬件平台和操作系统
测试应用的硬件平台(Platform),通常选择“PC”。
测试应用的操作系统平台(OS)。
a) 版本
提交缺陷报告时通过该字段标识此缺陷存在于被测试软件的哪个版本。
b) Bug报告优先级
c) Bug状态
d) Bug的编号
e) 发现人
f) 提交人
g) 指定处理人
h) 概述
i) 从属关系
j) 详细描述
k) 严重程度
l) 所属模块
m) 附件
n) 提交日期

简述一下缺陷的生命周期?

发现->提交->确认->分配->修复->验证->关闭。回归不通过打回

判断题(正确的“√”,错误的“╳”)

(1)发现错误是软件测试的目的(╳)
(2)白盒测试可以找出软件遗漏功能和代码错误功能。(╳)
(3)在设计测试用例时,应包括合理的应用条件和不合理的应用条件。 (√)
(4)软件缺陷一定是由编码引起的错误。 (╳)
(5)文档测试是对系统提交给用户的文档进行验证,并不是一般性的审查活动。(√)

如何编写提交给用户的测试报告?

随着测试工作越来越受重视,开发团队向客户提供测试文档是不可避免的事情。很多人会问:“我们可以把工作中的测试报告提供给客户吗?”答案是否定的。因为提供内部测试报告,可能会让客户失去信心,甚至否定项目。
测试报告一般分为内部测试报告和外部测试报告。内部报告是我们在测试工作中的项目文档,反映了测试工作的实施情况,这里不过多讨论,读者可以参考相关教材。这里主要讨论一下外部测试报告的写法,一般外部测试报告要满足下面几个要求:

  • 根据内部测试报告进行编写,一般可以摘录;
  • 不可以向客户报告严重缺陷,即使是已经修改的缺陷,开发中的缺陷也没有必要让客户知道;
  • 报告上可以列出一些缺陷,但必须是中级的缺陷,而且这些缺陷必须是修复的;
  • 报告上面的内容尽量要真实可靠;
  • 整个测试报告要仔细审阅,力争不给项目带来负面作用,尤其是性能测试报告。
    总之,外部测试报告要小心谨慎的编写。

没有产品说明书和需求文档地情况下能够进行黑盒测试吗?

这个问题是国内测试工程师经常遇到的问题,根源就是国内软件开发文档管理不规范,对变更的管理方法就更不合理了。实际上没有任何文档的时候,测试人员是能够进行黑盒测试的,这种测试方式我们可以称之为探索测试,具体做法就是测试工程师根据自己的专业技能、领域知识等不断的深入了解测试对象、理解软件功能,进而发现缺陷。
在这种做法基本上把软件当成了产品说明书,测试过程中要和开发人员不断的进行交流。尤其在作项目的时候,进度压力比较大,可以作为加急测试方案。最大的风险是不知道有些特性是否被遗漏。

在测试一个web页面时,页面显示为空白页,如何定位问题所在?可能是哪些原因引起的?

1、本身页面代码就是空白的。浏览器按F12查看
2,本地无网络,浏览器是否缓存是否为空白页
3,发送超时,接收超时,服务器超时。
4,域名错误,ip解析不了。

软件的评审一般由哪些人参加?其目的是什么?

在正式的会议上将软件项目的成果(包括各阶段的文档、产生的代码等)提交给用户、客户或有关部门人员对软件产品进行评审和批准。其目的是找出可能影响软件产品质量、开发过程、维护工作的适用性和环境方面的设计缺陷,并采取补救措施,以及找出在性能、安全性和经济方面的可能的改进。
人员:用户、客户或有关部门开发人员,测试人员,需求分析师都可以,就看处于评审那个阶段

描述测试用例设计的完整过程?

需求分析 + 需求变更的维护工作;
根据需求 得出测试需求;
设计测试方案,评审测试方案;
方案评审通过后,设计测试用例,再对测试用例进行评审;

用Android系统和iOS系统进行软件测试,会有哪些不同?

1 . Android长按home键呼出应用列表和切换应用,然后右滑则终止应用
2. 多分辨率测试,Android端20多种,ios较少
3. 手机操作系统,Android较多,ios较少且不能降级,只能单向升级;新的ios系统中的资源库不能完全兼容低版本中的ios系统中的应用,低版本ios系统中的应用调用了新的资源库,会直接导致闪退(Crash)
4. 操作习惯:Android,Back键是否被重写,测试点击Back键后的反馈是否正确;应用数据从内存移动到SD卡后能否正常运行等
5. push测试:Android:点击home键,程序后台运行时,此时接收到push,点击后唤醒应用,此时是否可以正确跳转;ios,点击home键关闭程序和屏幕锁屏的情况(红点的显示)
6. 安装卸载测试:Android的下载和安装的平台和工具和渠道比较多,ios主要有app store,iTunes和testflight下载
7. 升级测试:可以被升级的必要条件:新旧版本具有相同的签名;新旧版本具有相同的包名;有一个标示符区分新旧版本(如版本号),对于Android若有内置的应用需检查升级之后内置文件是否匹配(如内置的输入法)

LoadRunner分哪三部分?

  • 用户动作设计
  • 场景设计
  • 测试数据分析

数据库内联接和外连接,自联接有什么区别?

内联接通常是2个表存在主外键关系时使用的,
内联接查询有2种方式实现:
1是在WHERE 子句中指定联接条件
2是在FROM子句中使用join…on
内联接查询通常不仅仅联接2表,可以3表甚至更多的表
参与内联接的表的地位是平等的
而外联接中参与联接的表有主从之分。以主表的每行数据去匹配从表的数据列,符合条件的数据将直接返回到结果集中,不符合的用NULL(空值)填充后再返回到结果集中

测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?

软件测试计划是指导测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。
测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试测试策略和测试方法(最好是能先评审)

当开发人员说不是BUG时,你如何应付?

开发人员说不是bug,有2种情况,一是需求没有确定,所以我可以这么做,这个时候可以找来产品经理进行确认,需不需要改动,3方商量确定好后再看要不要改。二是这种情况不可能发生,所以不需要修改,这个时候,我可以先尽可能的说出是BUG的依据是什么?如果被用户发现或出了问题,会有什么不良结果?程序员可能会给你很多理由,你可以对他的解释进行反驳。如果还是不行,那我可以给这个问题提出来,跟开发经理和测试经理进行确认,如果要修改就改,如果不要修改就不改。其实有些真的不是bug,我也只是建议的方式写进TD中,如果开发人员不修改也没有大问题。如果确定是bug的话,一定要坚持自己的立场,让问题得到最后的确认

软件测试的缺陷等级如何划分?

A类—严重错误,包括以下各种错误:
  1. 由于程序所引起的死机,非法退出
  2. 死循环
  3. 数据库发生死锁
  4. 因错误操作导致的程序中断
  5. 与数据库连接错误
  6. 数据通讯错误
B类—较严重错误,包括以下各种错误:
  1. 程序接口错误
  2. 系统可被执行,但操作功能无法执行(含指令)
  3. 单项操作功能可被执行,但在此功能中某些小功能(含指令参数的使用)无法被执行(对系统非致命的)
  4. 在小功能项的某些项目(选项)使用无效(对系统非致命的)
  5. 业务流程不正确
  6. 功能实现不完整,如删除时没有考虑数据关联
  7. 功能的实现不正确,如在系统实现的界面上,一些可接受输入的控件点击后无作用;对数据库的操作不能正确实现;
  8. 报表格式以及打印内容错误(行列不完整,数据显示不在所对应的行列等导致数据显示结果不正确的错误)
C类—一般性错误,包括以下各种错误:
  1. 操作界面错误(包括数据窗口内列名定义、含义是否一致)
  2. 打印内容、格式错误(只影响报表的格式或外观,不影响数据显示结果的错误)
  3. 简单的输入限制未放在前台进行控制
  4. 删除操作未给出提示
  5. 已被捕捉的系统崩溃,不影响继续操作
  6. 虽然正确性不受影响,但系统性能和响应时间受到影响
  7. 不能定位焦点或定位有误,影响功能实现
  8. 显示不正确但输出正确
  9. 增删改功能,在本界面不能实现,但在另一界面可以补充实现。
D类—较小错误,包括以下各种错误:
  1. 界面不规范
  2. 辅助说明描述不清楚
  3. 输入输出不规范
  4. 长时间操作未给用户提示
  5. 提示窗口文字未采用行业术语
  6. 可输入区域和只读区域没有明显的区分标志
  7. 必填项与非必填项应加以区别
  8. 滚动条无效
  9. 键盘支持不好,如在可输入多行的字段中,不支持回车换行;或对相同字段,在不同界面支持不同的快捷方式
  10. 界面不能及时刷新,影响功能实现
E类—其他错误
  1. 光标跳转设置不好,鼠标(光标)定位错误
  2. 一些建议性问题

逻辑题,一个是一个6L水的水壶,一个5L水的水壶,旁边有一个池塘,如何用这两个水壶,倒出3L水

第一步:5升加满全部倒入6升中,5升再加满倒入6升使6升加满,此时6升满5升中剩4升;
第二步:清空6升.把5升容器中的4升倒入6中,此时6升中有4升
第三步:加满5升,倒入6升中使其加满,此时5升中剩3升

想象一个登录框,包括ID、密码、登录、取消,记住密码(复选框),尽可能的写出你想到的测试点

ID测试要点:
字符类型(包括:数字、字母、汉字、特殊字符)
字符长度
默认值
空值
字符集
存在空格
复制、粘贴
密码测试要点
密码长度(例如:密码不能少于7个字符,最长不能超过20个字符) 密码复杂度、强度(例如:密码必须包含特殊字符、数字字母大小写等等,长度是否长)
密码字符类型(例如:只允许输入数字、字母、特殊字符、下划线)
默认值
密码为空
字符集
存在空格
复制、粘贴
登录测试要点
① 用户名和密码都符合要求(格式上的要求)
② 用户名和密码都不符合要求(格式上的要求)
③ 用户名符合要求,密码不符合要求(格式上的要求)
④ 密码符合要求,用户名不符合要求(格式上的要求)
⑤ 用户名或密码为空
⑥ 数据库中不存在的用户名,不存在的密码
⑦ 数据库中存在的用户名,错误的密码
⑧ 数据库中不存在的用户名,存在的密码
⑨ 输入的数据前存在空格
⑩ 输入正确的用户名密码以后按[enter]是否能登陆
取消
鼠标左键点击“取消”按钮
鼠标左键双击“取消”按钮
鼠标右键点击“取消”按钮
鼠标右键双击“取消”按钮
鼠标指针移动到“取消”按钮”,按回车键 鼠标指针停留在“取消”按钮上
记住密码(复选框)
点击选中“记住密码”按钮,重新登录
不选中“记住密码”按钮,重新输入密码登录
输入已存在ID和错误密码,勾选“记住密码”,点击登录 输入错误ID和正确密码,勾选“记住密码”,点击登录 输入正确ID和正确密码,勾选“记住密码”,点击登录 输入错误ID和错误密码,勾选“记住密码”,点击登录.

访问一个完整http请求会经历哪些问题

1.域名解析
2.发起TCP的3次握手
3.建立TCP连接后发起http请求
4.服务器端响应http请求,浏览器得到html代码
5.浏览器解析html代码,并请求html代码中的资源
6.浏览器对页面进行渲染呈现给用户。

https和http请求的区别?

https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全性更加高。

http https
TCP SSL/TLS(安全套接层)
IP TCP
IP
数据链路层 数据链路层

http有哪些请求方式,get和post请求有什么区别

HTTP1.0定义了三种请求方法: GET, POSTHEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACECONNECT 方法

方法 描述
GET 请求指定的页面信息,并返回实体主体。
HEAD 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
POST 请求指定的页面信息,并返回实体主体。
PUT 从客户端向服务器传送的数据取代指定的文档的内容。
DELETE 请求服务器删除指定的页面。
CONNECT HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
OPTIONS 允许客户端查看服务器的性能。
TRACE 回显服务器收到的请求,主要用于测试或诊断。
  1. Get传输的数据量小,因为受URL长度限制,但效率较高,Post可以传输大量数据,所以上传文件时只能用Post方式
  2. post较get安全性较高,get是不安全的,因为URL是可见的,可能会泄露私密信息,如密码等.
  3. get方式只能支持ASCII字符,向服务器传的中文字符可能会乱码,post支持标准字符集,可以正确传递中文字符
  4. get传输数据是通过URL请求,以field(字段)= value的形式,置于URL后,并用"?“连接,多个请求数据间用”&"连接,如:http://127.0.0.1/Test/login.actionname=admin&password=admin,这个过程用户是可见的;post传输数据通过Http的post机制,将字段与对应值封存在请求实体中发送给服务器,这个过程对用户是不可见的

cookie与session区别?

  • cookie数据存放在客户的浏览器上,session数据放在服务器上
  • cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session
  • session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能。考虑到减轻服务器性能方面,应当使用COOKIE
  • 单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能超过3K
  • Cookie和Session的方案虽然分别属于客户端和服务端,但是服务端的session的实现对客户端的cookie有依赖关系的,上面我讲到服务端执行session机制时候会生成session的id值,这个id值会发送给客户端,客户端每次请求都会把这个id值放到http请求的头部发送给服务端,而这个id值在客户端会保存下来,保存的容器就是cookie,因此当我们完全禁掉浏览器的cookie的时候,服务端的session也会不能正常使用。

http请求和http响应包含哪些内容

请求报文包含三部分:
a、请求行:包含请求方法、URI、HTTP版本信息
b、请求首部字段
c、请求内容实体
响应报文包含三部分:
a、状态行:包含HTTP版本、状态码、状态码的原因短语
b、响应首部字段
c、响应内容实体

你所熟悉的软件测试类型有哪些?

  1. 按测试阶段划分
    单元测试→集成测试→系统测试→回归测试
  2. 按技术划分
    白盒测试、黑盒测试、灰盒测试
  3. 按测试对象是否运行划分
    静态测试、动态测试
  4. 按不同的测试手段划分
    手工测试、自动化测试
  5. 按测试包含的内容来划分
    功能测试、性能测试、UI测试、接口测试、安全测试、兼容性测试、易用性测试、压力测试、负载测试、恢复测试
  6. 其它测试
    冒烟测试、探索性测试

接口测试用例的编写要点有哪些?

  1. 测试每个参数类型不合法的情况(类型不合法容易遗漏null型)
  2. 测试每个参数取值范围不合法的情况
  3. 测试参数为空的情况
  4. 测试参数前后台定义的一致性
  5. 测试每个参数的上下限(这里容易出现致命的BUG,如果程序处理不当,可能会程序导致崩溃)
  6. 如果两个请求有严格的先后顺序,需要测试调转顺序的情况

你可能感兴趣的:(测试)