
软件测试 - 记录一下面试常用知识
黑盒测试:
黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。
“黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,因此不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。
常用的黑盒测试方法有:等价类划分法;边界值分析法;因果图法;场景法;正交实验设计法;判定表驱动分析法;错误推测法;功能图分析法。
白盒测试:
白盒测试也称为结构测试或逻辑驱动测试,是针对被测单元内部是如何进行工作的测试。它根据程序的控制结构设计测试用例,主要用于软件或程序验证。白盒测试法检查程序内部逻辑结构,对所有的逻辑路径进行测试,是一种穷举路径的测试方法,但即使每条路径都测试过了,但仍然有可能存在错误。因为:穷举路径测试无法检查出程序本身是否违反了设计规范,即程序是否是一个错误的程序;穷举路径测试不可能检查出程序因为遗漏路径而出错;穷举路径测试发现不了一些与数据相关的错误。
白盒测试需要遵循的原则有:1. 保证一个模块中的所有独立路径至少被测试一次;2. 所有逻辑值均需要测试真(true)和假(false);两种情况;3. 检查程序的内部数据结构,保证其结构的有效性;4. 在上下边界及可操作范围内运行所有循环。
常用白盒测试方法:语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
白盒测试中的逻辑覆盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖。六种覆盖标准发现错误的能力呈由弱到强的变化:
1.语句覆盖每条语句至少执行一次。
2.判定覆盖每个判定的每个分支至少执行一次。
3.条件覆盖每个判定的每个条件应取到各种可能的值。
4.判定/条件覆盖同时满足判定覆盖条件覆盖。
5.条件组合覆盖每个判定中各条件的每一种组合至少出现一次。
6.路径覆盖使程序中每一条可能的路径至少执行一次。
软件质量模型六大特征:
功能性,可靠性,易用性,效率性,可维护性,可移植性。
编写用例可以参考
软件测试流程:(当时没回答上来忘了)
软件测试工作流程:
1、需求分析、需求评审
需求分析和评审就是分析客户的需求可不可行,需要怎么进行测试。
2、编写测试计划
编写测试计划通俗一点讲就是什么人在什么时间做什么事,最后产出什么东西。那也就是测试人员要测试哪些模块、在什么期限内,提交哪些文档。
3、编写测试用例、用例评审
测试用例就是指导测试的文档,比如我们要测试商城登录、买东西等功能,通过测试方法和策略设计测试用例。
评审就是评价审查,不能想当然该怎么测。不能只是输入正确的用户名和密码,能登录进去就完事了。作为软测工程师需要有破坏性,比如密码输错时怎么办,会不会有相应的报错等等。
4、执行测试、提交bug、回归测试
Bug就是缺陷,发现bug之后,要提交给开发人员让他们去修改,然后进行回归测试,验证开发人员有没有改好。
5、编写测试总结报告
Bug都改好了之后,要编写测试总结报告,这款软件的质量如何。
TCP/IP协议簇 模型:
TCP的三次握手
最开始的时候客户端和服务器都是处于CLOSED状态。主动打开连接的为客户端,被动打开连接的是服务器。
TCP协议的四次挥手
TCP/IP协议在一定程度上参考了OSI的体系结构。OSI模型共有七层,但是比较复杂,所以在TCP/IP协议中,它们被简化为了四个层次
TCP(传输控制协议):
- TCP是一种面向连接的协议,提供可靠的数据传输。
- 在TCP连接中,通信双方需要建立连接,进行数据的可靠传输,确保数据的完整性和顺序性。
- TCP使用流控制、拥塞控制和重传机制来保证数据的可靠性。
- TCP适用于对数据传输的可靠性要求较高的应用,如文件传输、电子邮件、Web浏览等。
- TCP连接的建立和断开需要较多的开销,通信过程中会有一定的延迟。
UDP(用户数据报协议):
UDP是一种无连接的协议,提供不可靠的数据传输。
在UDP中,数据被分成小的数据报进行传输,每个数据报都是独立的,可能会丢失、重复或乱序。
UDP不提供流控制和拥塞控制,因此传输速度较快,延迟较低。
UDP适用于对实时性要求较高的应用,如音频/视频传输、实时游戏等。
由于UDP不保证数据的可靠性,因此需要在应用层进行额外的处理,如数据确认和重传。
GET与POST区别:
当我们进行网络通信时,GET和POST是两种常见的HTTP请求方法,它们有以下区别:
- GET方法:
- GET方法用于从服务器获取数据。
- 在GET请求中,数据通过URL的查询参数(query parameters)进行发送,将数据附加在URL的末尾。例如 https://hawcat.cn/query?hawcat
- GET请求将数据暴露在URL中,因此可以被其他人看到和收集,不适合用于传输敏感信息。
- GET请求对数据长度有限制,因为URL的长度是有限制的。
- POST方法:
- POST方法用于向服务器提交数据。
- 在POST请求中,数据通过请求体(request body)进行发送,不会显示在URL中。
- POST请求对数据的长度没有限制,可以传输大量的数据。
- POST请求更安全,适用于传输敏感信息,因为数据不会暴露在URL中。
简而言之,GET方法用于从服务器获取数据,将数据附加在URL中,适用于非敏感数据的传输。而POST方法用于向服务器提交数据,数据通过请求体发送,适用于传输敏感信息和大量数据的场景。