每天十道软件测试面试题(三)
1、测试流程什么样的
需求的了解 – 测试计划 – 测试需求分析 - 测试设计 - 测试脚本 - 执行测试 - 测试总结
测试计划: 由测试经理编写,测试计划的组成(测试策略、资源需求、时间安排、测试过程管理)
测试需求:测试点分析由测试人员参与编写,常用的工具有思维导图、excel、流程图…
测试设计:测试用例测试人员编写,(编号、标题、前置条件、输入、步骤、预期结果、优先级)编写测试用例的依据是SRS文档,编写的方法主要有等价类、边界值、判定表、场景法、错误分析法
测试脚本:由测试人员开发测试脚本
测试执行: 准备测试环境(基础环境、操作系统、数据库、jdk)、搭建测试对象(测试的软件)
缺陷管理: 编号、标题、版本、模块、责任、严重级别、bug的分类、优先级、环境(win10 chrome105)、步 骤、附件。
测试报告:测试经理编写测试报告(测试的环境、范围、用例;针对功能模块细化用例以及用例的执行情况;数据汇总;数据分析;结论)
2、测试计划的内容
5W1H原则:why(项⽬介绍) when(进度安排) what(测试重点) who(⼈员安排) where(硬件) how(测试⽅法/⾃动化,⼿动,⼯具)
- 测试⽬的:定义测试计划的重点,功能/性能/流程/数据(易⽤性/恢复。。。)
- 测试项⽬简介:软件产品规格,软件产品信息,软件产品简介主要功能,项⽬背景,软件⾯向⽤户
- 测试参考⽂档:测试依据以及测试计划编写参考⽂档,例:需求说明书/概要设计/详细设计/数据库设计/⽤户⼿册/开发计划
- 测试提交⽂档:测试⽤例/⽇报周报/缺陷报告/总结报告
- 术语和定义:项⽬中专业术语的解释
- 测试策略:进⼊/退出标准(准⼊准出,开始标准,结束标准)
退出:是否提交该轮测试的测试报告,⽤例执⾏率,缺陷遗留情况
进⼊:上⼀轮测试退出结果 - 确定测试内容:功能/性能/安全等测试的范围和内容
- 资源:⼈⼒资源(⾓⾊/⼈数/指责)系统资源(软硬件)
- 测试进度:各个测试阶段对于⼈⼒和系统资源以及时间的安排
- 测试⼈员的任务分配:所属模块的负责内容
- 风险和问题:需求整改/⼈员流动/测试⼯程师对业务的了解度/软硬件环境
- 测试⼯具:测试过程会⽤到的⼯具(管理⼯具禅道和QC(TD)(ALM),性能⼯具jmeter/loadruner,⾃动化功能⼯具QTP/seleium⽹
页/appium,接⼝⼯具jmeter,postman,fiddler)
3、测试报告的内容
- 简介:编写⽬的/参考⽂档/术语定义
- 测试背景:项⽬背景和测试环境(什么架构上,进⾏了什么类别的测试,依据了什么⽂档)
- 进度执⾏情况:⼈员安排和每个模块的测试时间和版本信息
- ⽤例执⾏情况:⽤例数分布(模块,类型)和执⾏率和通过率
- 缺陷统计情况:缺陷数量统计,缺陷重要级别统计,缺陷在不同版本的数量和重要级别,缺陷总数和修复数和遗留以及遗留原因,重要级别的bug主要是什么问题,列举⼀些以南bug说明
- 测试结论:此次测试通过与否
- 测试建议:通过此次测试对之后测试有何建议
- 在项⽬开始的时候应该制定编码标准,数据库标准,需求变更标准,开发和测试⼈员都严格按照标准进⾏,可以在后期减少因为开发,测试不⼀致⽽导致的问题,同时也可以降低沟通成本。
- 发布版本的时候,正确布置测试环境,减少因为测试环境,测试数据库数据的问题⽽出现的⽆效 bug。
- 开发⼈员解决 bug 的时候,填写 bug 原因以及解决⽅式,⽅便 bug 的跟踪。
- 开发⼈员在开发版本上发现 bug,可以通知测试⼈员,因为开发⼈员发现的bug很有可能在测试版本上出现,⽽测试⼈员和开发⼈员的思路不同,有可能测试⼈员没有发现该 bug,⽽且,这样可以保证发现的
4、黑盒测试的方法
- 等价类划分法、
- 边界值分析法、
- 错误推测法、
- 因果图法、
- 判定表驱动法、
- 功能图法、
- 正交实验法
5、敏捷开发流程![请添加图片描述](https://i-blog.csdnimg.cn/blog_migrate/de811d801474fd2aa31a26113deb99cb.png)
1. 目标制定:通过市场调研、业务思路、风险评估制定公司规划和目标;
2. 目标拆解:公司目标拆解到各个部门;
3. 产品规划:产品研发部门根据目标制定产品关键路线图,这个路线图中分布着不同的产品特性和其完成时间;
4.组织产品待办列表:产品规划产生的需求、客户需求、市场人员收集到的缺陷等将组成产品待办列表;
5. 需求梳理:然后产品负责人(Product Ower)对这个列表进行梳理,并在需求梳理会(Backlog Grooming Meeting)讲解具体每一个需求,团队成员根据需求的复杂程度评估每个任务的工作量,输出本次迭代的待办事项列表,完成优先级排序等工作;
6.迭代规划:通过Sprint计划会,明确要执行的工作、冲刺目标等,
7.迭代开发:期间会进行每日站会、性能测试、CodeReview、Demo、测试等工作;
8. Sprint评审:由每个任务的负责人演示其完整的工作,由PO确定Sprint目标是否完成,版本什么时候对外发布,新增bug的紧急程度等等。
9.开回顾会议:回顾会议由Scrum团队检视自身在过去的Sprint的表现,包括人 、关系、过程、工具等,思考在下一个Sprint中怎么样可以表现得更好,更高效,怎么样可以和团队合作地更愉快。
6、说一下,form-data、x-www-form-urlencoded、raw、binary
1、form-data:
就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;
由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件,在springmvc中可以使用MultipartHttpServletRequest接收通过api根据"name"获取不同的键值,也可以通过MulTipartFile数组接收多个文件。
2、x-www-form-urlencoded:
就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对,&分隔。
当form的action为get时,浏览器用x-www-form-urlencoded的编码方式,将表单数据编码为
(name1=value1&name2=value2…),然后把这个字符串append到url后面,用?分隔,跳转
到这个新的url。
当form的action为post时,浏览器将form数据封装到http body中,然后发送到server。
这个格式不能提交文件。
3、raw
可以上传任意格式的文本,可以上传text、json、xml、html等
4、binary
相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件
multipart/form-data与x-www-form-urlencoded区别
multipart/form-data:既可以上传文件等二进制数据,也可以上传表单键值对,只是最后会转化为一条信息;
x-www-form-urlencoded:只能上传键值对,并且键值对都是间隔分开的。
7、Http 响应码 有哪些
1xx 表示【临时响应】并需要请求者继续执行操作的状态代码
- 100(继续) 请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。
- 101(切换协议) 请求者已要求服务器切换协议,服务器已确认并准备切换。
2xx 表示【成功】处理了请求的状态代码
- 200(成功) 服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。
请求成功并且服务器创建了新的资源。 - 202(已接受) 服务器已接受请求,但尚未处理。
- 203(非授权信息) 服务器已成功处理了请求,但返回的信息可能来自另一来源。
- 204(无内容) 服务器成功处理了请求,但没有返回任何内容。
- 205(重置内容) 服务器成功处理了请求,但没有返回任何内容。
- 206(部分内容) 服务器成功处理了部分 GET 请求。
3xx 表示要完成请求,需要进一步操作。通常,这些状态代码用来【重定向】
- 300(多种选择) 针对请求,服务器可执行多种操作。服务器可根据请求者(user agent)选择一项操作,或提供操作列表供请求者选择。
- 301(永久移动) 请求的网页已永久移动到新位置。服务器返回此响应(对 GET 或 HEAD 请求的响应)时,会自动将请求者转到新位置。
- 302(临时移动) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
- 303(查看其他位置) 请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
- 304(未修改) 自从上次请求后,请求的网页未修改过。服务器返回此响应时,不会返回网页内容。
- 305(使用代理) 请求者只能使用代理访问请求的网页。如果服务器返回此响应,还表示请求者应使用代理。
- 307(临时重定向) 服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
4xx 表示【请求可能出错】,妨碍了服务器的处理
- 400(错误请求) 表示客户端请求的语法错误,服务器无法理解,例如 url 含有非法字符、json 格式有问题。
- 401(未授权) 请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。
- 402表示保留,将来使用。
- 403(禁止) 表示服务器理解请求客户端的请求,但是拒绝请求。
- 404(未找到) 服务器无法根据客户端的请求找到资源(网页)。
- 405(方法禁用) 禁用请求中指定的方法。
- 406(不接受) 无法使用请求的内容特性响应请求的网页。
- 407(需要代理授权) 此状态代码与 401(未授权)类似,但指定请求者应当授权使用代理。
- 408(请求超时) 服务器等候请求时发生超时。
- 409(冲突) 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。
- 410(已删除) 如果请求的资源已永久删除,服务器就会返回此响应。
- 411(需要有效长度) 服务器不接受不含有效内容长度标头字段的请求。
- 412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。
- 413(请求实体过大) 表示响应实在太大。服务器拒绝处理当前请求,请求超过服务器所能处理和允许的最大值。
- 414(请求的 URI 过长) 请求的 URI(通常为网址)过长,服务器无法处理。
- 415(不支持的媒体类型) 请求的格式不受请求页面的支持。
- 416(请求范围不符合要求) 如果页面无法提供请求的范围,则服务器会返回此状态代码。
- 417(未满足期望值) 在请求头 Expect 指定的预期内容无法被服务器满足(力不从心)。
- 418表示我是一个茶壶。超文本咖啡馆控制协议,但是并没有被实际的 HTTP 服务器实现。
- 420表示方法失效
- 422表示不可处理的实体。请求格式正确,但是由于含有语义错误,无法响应。
5xx 表示【服务器】在尝试处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错
- 500(服务器内部错误) 服务器遇到了一个未曾预料的状况,导致了它无法完成对请求的处理。
- 501(尚未实施) 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
- 502(错误网关) 服务器作为网关或代理,从上游服务器收到无效响应。
- 503(服务不可用) 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。
- 504(网关超时) 服务器作为网关或代理,但是没有及时从上游服务器收到请求。
- 505(HTTP 版本不受支持) 服务器不支持请求中所用的 HTTP 版本。
8、请求头的内容
1.Accept
- 告诉服务器,客户端支持的数据类型
2.Accept-Encoding
- 告诉服务器,客户机支持的数据压缩格式。
3.Accept-Language
- 告诉服务器,客户机的语言环境。
4.Connection
- 客户机通过这个头告诉服务器,请求完后是关闭还是保持链接。
5.Content-Length
- 表示请求消息正文的长度。
6.Content-Type
- 客户机通过这个头告诉服务器,客户端向服务器发送的数据类型。
7.Cookie
- 客户机通过这个头告诉服务器,可以向服务器带数据。
8.Host
- 客户机通过这个头告诉服务器,想访问的主机名。
9.Origin
- 用来说明请求从哪里发起的,包括且仅仅包括协议和域名。
- 这个参数一般只存在于CORS跨域请求中,可以看到response有对应的header:Access-Control-Allow-Origin。
10.Referer
- 客户机通过这个头告诉服务器,它是从哪个资源来访问服务器的。(一般用于防盗链)
11.User-Agent
- 客户机通过这个头告诉服务器,客户机的软件环境。
12.Accept-Charset:
- 告诉服务器,客户端采用的编码。
13.Date:
- 客户机通过这个头告诉服务器,客户机当前请求时间。
14.If-Modified-Since
- 客户机通过这个头告诉服务器,资源的缓存时间。
9、响应头
1.Connection
- 服务器通过这个头,响应完是保持链接还是关闭链接。
2.Content-Encoding
- 服务器通过这个头,告诉浏览器数据采用的压缩格式。
3.Content-Type
- 服务器通过这个头,回送数据的类型
4.Date
- 告诉客户机,返回响应的时间。
5.Server
- 服务器通过这个头,告诉浏览器服务器的类型
6.Transfer-Encoding
- HTTP协议头字段Transfer_Encoding,分块传输编码,一般出现在http的响应头中。该头字段存在与HTTP协议的1.1版本中,提供一种数据传输机制。
通常http协议在传输数据时是整体一起发送的,数据体的长度由Content-Length字段指定,方便判断消息结束。
服务器通过这个头,告诉浏览器数据的传送格式。
7.vary
- Vary 字段用于列出一个响应字段列表,告诉缓存服务器遇到同一个 URL 对应着不同版本文档的情况时,如何缓存和筛选合适的版本。
8.Location
- 这个头配合302状态码使用,告诉用户端找谁。
9.Content-Length
- 服务器通过这个头,告诉浏览器回送数据的长度
10.Content-Language
- 服务器通过这个头,告诉服务器的语言环境
11.Last-Modified
- 服务器通过这个头,告诉浏览器当前资源的缓存时间
12.Refresh
- 服务器通过这个头,告诉浏览器隔多长时间刷新一次
13.Content-Disposition
- 服务器通过这个头,告诉浏览器以下载的方式打开数据。
14.ETag: 与缓存相关的头。
-
(1)Expires
服务器通过这个头,告诉浏览器把回送的数据缓存多长时间。-1或0不缓存。 -
(2)Cache-Control和Pragma
服务器通过这个头,也可以控制浏览器不缓存数据
10、请求方式哪几种
- get: 请求指定页面信息,并返回实体主体。
- head: 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
- post: 向指定资源提交数据进行处理请求(例如提交表单或上传文件),数据包含在请求体中。
post请求可能会导致新的资源的建立或已有资源的修改。 - put: 从客户端向服务器传送的数据取代指定的文档的内容。
- delete: 请求服务器删除指定的页面。
- connect: HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
- options: 允许客户端查看服务器的性能。
- **trace:**回显服务器收到的请求,主要用于测试或诊断。
有哪位大佬知道mock吗