当前位置: 首页 > 面试经验 >

已拿到软件测试实习offer(经验贴)----普通二本

优质
小牛编辑
56浏览
2024-10-13

已拿到软件测试实习offer(经验贴)----普通二本

这几天一直在长沙这边面试,总结了一下面试官问的一些问题(目前还记得的):

1.在jmeter里面怎么参数化,怎么接口关联?

一、JMeter参数化

参数化是指将测试数据或变量从测试脚本中分离出来,以便可以更方便地管理和重用这些数据。在JMeter中,可以通过多种方式实现参数化:

  1. 用户定义的变量:通过添加前置处理器“用户参数”来实现。右键点击线程组或请求,选择“前置处理器”->“用户参数”,然后填写变量名及参数值。这种方法适用于需要为所有线程组或请求设置相同参数值的情况。
  2. CSV数据文件设置:通过配置元件“CSV Data Set Config”来实现。右键点击线程组或请求,选择“配置元件”->“CSV Data Set Config”,然后输入文件路径、编码、参数名(以英文逗号隔开)等。CSV文件中的每一行代表一组参数值,JMeter会按照顺序读取这些值并赋值给指定的变量。该方法适用于需要从外部文件中读取大量测试数据的情况。
  3. 函数助手:JMeter提供了多种函数助手,可以生成随机数、随机字符串等。通过选项“函数助手对话框”选择相应的函数,并填写必要的参数,然后生成函数表达式。该方法适用于需要生成随机测试数据的情况。
  4. Random Variable:通过配置元件“Random Variable”来实现。右键点击线程组,选择“配置元件”->“Random Variable”,然后填写变量名、格式、随机数区间等。每个线程组在运行时都会根据设置生成一个新的随机数。
  5. 数据库参数化:通过配置元件“JDBC Connection Configuration”和“JDBC Request”来实现。首先需要下载并放置相应的数据库驱动jar包到JMeter的lib目录中。然后添加JDBC Connection Configuration来配置数据库连接信息,并添加JDBC Request来执行SQL语句并获取查询结果。查询结果可以设置为参数值,供后续的请求使用。

二、JMeter接口关联

接口关联是指在一个接口响应中提取出某些值,并将这些值作为下一个接口请求的参数。在JMeter中,可以通过以下几种方式实现接口关联:

  1. 正则表达式提取器:在HTTP请求之后添加一个“正则表达式提取器”。设置提取的表达式、匹配规则等参数,以从响应中提取出需要关联的值。将提取到的值保存到JMeter的变量中,并在下一个请求中使用${变量名}的方式引用该值。
  2. JSON提取器:如果响应是JSON格式的,可以使用“JSON提取器”来提取其中的值。设置提取的JSON路径、变量名称等参数,并将提取到的值保存到变量中。
  3. XPath提取器:如果响应是XML格式的,可以使用“XPath提取器”来提取其中的值。设置提取的XPath表达式、变量名称等参数,并将提取到的值保存到变量中。

注意事项

  • 在进行参数化和接口关联时,需要确保提取的变量名和引用的变量名一致。
  • 如果使用CSV数据文件进行参数化,需要注意文件的编码格式和参数值的分隔符。
  • 在进行接口关联时,需要确保正则表达式、JSON路径或XPath表达式的正确性,以便能够正确提取出需要关联的值。

2.jmeter在页面如何获取登录的token

一、模拟登录请求

  1. 添加线程组:在JMeter测试计划中,右键点击测试计划,选择“Add”->“Threads (Users)”->“Thread Group”,以创建一个线程组。设置线程数、Ramp-Up Period(启动所需时间)和循环次数等参数。
  2. 添加HTTP请求:在线程组上右键点击,选择“Add”->“Sampler”->“HTTP Request”,以创建一个HTTP请求。配置HTTP请求的服务器名称或IP、端口号、协议(如HTTP或HTTPS)、路径、请求方法(如POST)以及请求参数(如用户名和密码)。

二、提取登录Token

  1. 添加正则表达式提取器:在HTTP请求下,右键点击并选择“Add”->“后置处理器”->“正则表达式提取器”。配置正则表达式提取器,以从HTTP请求的响应中提取token。Reference Name:定义一个变量名,用于存储提取到的token值,例如“token”。Regular Expression:编写一个正则表达式,用于匹配并提取token值。这通常需要根据响应数据的格式来编写。例如,如果token值包含在JSON格式的响应中,则可以使用类似"token":"(.*?)"的正则表达式。Template:设置为$1$,表示提取第一个匹配项。Match No.:设置为1,表示只提取第一个匹配项。Default Value:设置一个默认值,以防正则表达式没有匹配到任何内容。例如,“NOT_FOUND”。
  2. 查看结果树:为了验证正则表达式提取器是否正确提取了token,可以添加一个监听器“查看结果树”。运行测试计划,并查看结果树中的响应数据,以确保token已被正确提取。

三、使用提取的Token

  1. 添加HTTP信息头管理器:在需要发送带有token的请求上,右键点击并选择“Add”->“配置元件”->“HTTP信息头管理器”。在HTTP信息头管理器中,添加一个名为“Authorization”的头部字段,并将其值设置为${token},以引用之前提取到的token值。
  2. 发送后续请求:配置好带有token的HTTP信息头管理器后,可以发送后续需要验证token的请求。这些请求将包含正确的Authorization头部字段,从而能够成功访问受保护的资源。

注意事项

  • 确保正则表达式提取器的配置正确无误,以便能够正确提取出token值。
  • 如果响应数据的格式发生变化(例如JSON字段名更改),则需要相应地更新正则表达式提取器的配置。
  • 在使用提取的token时,请确保它仍然有效且未过期。如果token过期或无效,则可能需要重新登录并获取新的token。

3.登录这个场景,怎么设计它的用例,设计方法有哪些?

一、设计方法

  1. 等价类划分:将输入数据划分为若干个等价类,从每个等价类中选取一个或少数几个代表性数据作为测试用例。例如,对于用户名和密码,可以划分为有效等价类(如符合长度、格式要求的用户名和密码)和无效等价类(如空值、特殊字符、超长字符等)。
  2. 边界值分析:针对输入数据的边界值进行测试,以检查系统是否能在极端情况下正确处理。例如,测试用户名和密码的最小长度、最大长度、以及边界值附近的长度。
  3. 场景法:通过模拟用户在实际使用中可能遇到的各种场景来设计测试用例。例如,正常登录、用户名或密码错误、连续多次错误输入、账号被锁定等场景。
  4. 正交实验设计:当输入参数较多时,可以使用正交实验设计来减少测试用例的数量,同时保证测试的全面性。通过正交表来选取输入参数的组合,以覆盖所有可能的输入情况。
  5. 错误推测法:根据经验或直觉,推测用户可能犯的错误或系统可能出现的问题,并设计相应的测试用例。例如,推测用户可能会输入错误的用户名或密码格式,或者系统可能会因为网络问题而登录失败。

二、具体测试用例

以下是一些基于上述设计方法的具体登录场景测试用例:

  1. 正常登录:输入正确的用户名和密码。预期结果:登录成功,跳转到主界面。
  2. 用户名错误:输入错误的用户名(如不存在的用户名、特殊字符等)。预期结果:提示用户名错误,要求重新输入。
  3. 密码错误:输入错误的密码(如与用户名不匹配的密码、空密码等)。预期结果:提示密码错误,要求重新输入。
  4. 用户名和密码均错误:同时输入错误的用户名和密码。预期结果:提示用户名或密码错误,要求重新输入。
  5. 空输入:用户名和密码输入框均为空。预期结果:提示输入不能为空,要求重新输入。
  6. 特殊字符输入:输入包含特殊字符的用户名或密码。预期结果:根据系统要求,可能提示输入格式错误或允许特殊字符输入(但通常不建议允许特殊字符)。
  7. 连续多次错误输入:连续多次输入错误的用户名或密码。预期结果:系统应有一定的限制机制,如锁定账号或增加验证码验证。
  8. 账号被锁定:尝试登录已被锁定的账号。预期结果:提示账号已被锁定,无法登录。
  9. 网络问题:模拟网络不稳定或断开的情况。预期结果:提示网络连接错误或登录失败。
  10. 密码加密存储验证:检查系统后台存储的密码是否为加密形式。预期结果:密码应以加密形式存储,确保用户数据安全。

4.get和post的区别

一、用途和约定

  1. GET请求:主要用于获取信息,即进行查询操作。是幂等的且安全(这里的“安全”仅指不会改变服务器上的资源状态,并不涉及数据传输的安全性)。多次执行相同的GET请求不会产生副作用。
  2. POST请求:用于提交数据,可能会导致新资源的创建或现有资源的修改。通常用于提交表单数据、上传文件等场景。不是幂等的,因为每次提交都可能改变服务器上的资源状态。

二、参数传递方式

  1. GET请求:将参数拼接在URL之后进行传递。参数的长度受到URL长度的限制,通常是2KB左右(但具体数值可能因浏览器和服务器的不同而有所差异)。参数通过“?”连接,并通过“&”进行分割。
  2. POST请求:将参数放在请求体中传递。没有长度限制,适合传输大量数据。参数不会暴露在URL中,相对更加安全(但仍需配合其他安全措施,如HTTPS加密通信)。

三、缓存和历史记录

  1. GET请求:结果通常可以被浏览器缓存。如果下次传输的数据相同,可能会直接返回缓存中的内容,以提高响应速度。参数会保存在历史记录中。地址可被收藏为书签。
  2. POST请求:结果通常不会被缓存。因为其可能引发服务器状态的改变。参数不会保留在历史记录中。地址不能被收藏为书签。

四、安全性(数据传输角度)

  1. GET请求:参数直接暴露在URL中。不适合传输敏感信息,如密码等。
  2. POST请求:参数存放在请求体中。不会在URL中显示。相对更加安全(但仍需其他安全措施)。

五、TCP数据包

  1. GET请求:浏览器会把HTTP header和data一并发送出去。产生一个TCP数据包。
  2. POST请求:浏览器先发送header,服务器响应100 Continue后,浏览器再发送data。产生两个TCP数据包(但在某些情况下,如没有带Expect头时,可能只产生一个数据包)。

5.TCP和UDP的区别

一、连接性

  • TCP:是一种面向连接的协议。在数据传输之前,发送方和接收方必须先进行三次握手,建立连接后才能开始传输数据。这种连接机制确保了数据传输的可靠性和有序性。
  • UDP:是一种无连接的协议。发送方不需要提前与接收方建立连接,可以直接向接收方发送数据。这种无连接特性使得UDP在数据传输时具有较低的时延和较高的效率。

二、可靠性

  • TCP:对数据的可靠性要求非常严格。它使用确认和重传机制来确保数据的完整性和正确性。如果接收方没有收到数据,发送方会不断重传,直到接收方确认收到数据为止。此外,TCP还提供了流量控制和拥塞控制机制,以进一步确保数据传输的可靠性。
  • UDP:对数据的可靠性要求较低。它不提供确认、重传和流量控制机制。如果发送方发送的数据丢失或损坏,UDP不会进行重传,而是直接使接收方收到的数据不完整。因此,UDP通常用于对数据实时性要求较高但对可靠性要求较低的应用场景。

三、速度和效率

  • TCP:由于需要建立连接和使用确认重传机制,TCP在数据传输过程中通常比UDP更慢。此外,TCP的拥塞控制机制也会在网络拥堵时降低发送速率,导致传输速度进一步下降。
  • UDP:没有连接建立和确认重传的开销,因此在数据传输速度方面通常比TCP更快。UDP不受拥塞控制的限制,可以在网络状况良好的情况下实现高速数据传输。

四、数据包大小

  • TCP:将数据划分为较小的数据包进行传输,并根据网络状况进行调整。TCP没有固定的数据报大小限制,可以根据需要动态调整数据包的大小。
  • UDP:允许发送方一次性将多个数据包打包成一个较大的数据报进行传输。UDP数据报的大小通常在应用层自行决定,但受到最大传输单元(MTU)的限制。一般情况下,每个UDP数据包不超过64KB(但具体数值可能因网络环境和配置的不同而有所差异)。

五、适用场景

  • TCP:适用于对数据可靠性要求较高的应用场景。如文件传输、电子邮件和网页浏览等。这些应用需要确保数据的完整性和正确性,因此选择TCP作为传输层协议是合适的。
  • UDP:适用于对数据实时性要求较高的应用场景。如音频和视频流传输、网络游戏和实时通信等。这些应用需要快速传输数据,但对数据的完整性要求相对较低,因此选择UDP作为传输层协议可以实现更高的传输效率和更低的时延。

6.对智能手环的界面进行测试,你会怎么设计测试点?

1. 用户交互测试

  • 触控灵敏度:测试手环屏幕对不同力度和速度的触控响应是否准确、迅速。
  • 滑动流畅性:评估在界面上滑动时的流畅度和响应速度,确保无卡顿现象。
  • 按键反馈:如果手环有物理按键,测试按键的触感、反馈力度和响应速度。
  • 误触率:通过模拟用户日常使用场景,测试界面是否容易因误触而触发不期望的操作。

2. 功能实现测试

  • 信息显示准确性:验证手环界面上显示的时间、日期、步数、心率等信息的准确性。
  • 通知推送:测试手环接收并显示来自手机的通知(如来电、短信、社交应用消息等)的及时性和准确性。
  • 应用切换:在多个应用或功能之间切换时,测试界面的响应速度和稳定性。
  • 手势操作:测试手环支持的手势操作(如双击、长按等)是否按预期执行。

3. 界面布局测试

  • 布局合理性:评估界面元素(如图标、文字、按钮等)的排列是否直观、易于理解。
  • 空间利用率:检查界面空间是否被有效利用,避免信息冗余或界面过于拥挤。
  • 字体大小和可读性:确保字体大小适中,易于阅读,特别是在不同光照条件下。
  • 颜色搭配:测试界面颜色搭配是否和谐,符合用户审美和视觉舒适度。

4. 视觉效果测试

  • 屏幕亮度:测试手环屏幕在不同亮度设置下的显示效果和能耗。
  • 对比度:确保界面元素与背景之间的对比度足够高,以提高可读性。
  • 动画效果:测试界面上的动画效果是否流畅、自然,且不会造成用户不适。
  • 屏幕保护:验证手环在长时间不使用时是否会自动进入屏幕保护模式,以及唤醒的灵敏度。

5. 性能测试

  • 响应时间:测试手环界面在各种操作下的响应时间,确保快速响应用户指令。
  • 稳定性:长时间使用或进行大量操作时,测试手环界面是否稳定,无崩溃或重启现象。
  • 资源占用:评估手环界面运行时的CPU、内存等资源占用情况,确保不会对系统性能造成过大负担。
  • 电池续航:测试手环在界面活动下的电池续航时间,确保用户能够正常使用较长时间。

6. 兼容性测试

  • 不同型号手环:测试界面在不同型号、不同屏幕尺寸的智能手环上的显示效果和兼容性。
  • 不同操作系统:如果手环支持连接多种操作系统(如iOS、Android等),测试界面在不同系统下的兼容性和表现。

还有一些我的知识体系没有太涉及到的问题(网络):

7.你对网络测试了解多少?

8.测试音乐播放器时,点击了收藏按钮也产生了效果,但是该歌曲没有出现在我的收藏歌单里,你怎么去判断是哪里出现了问题?

9.你对软件测试这个岗位的职业规划?

10.你有什么优势来胜任软件测试这个岗位?

#测试##25届实习/校招##实习##面试##计算机面经##悬赏#
 类似资料: