测试面经1130

1. 自我介绍

2. 深入的聊一下软件测试岗位主要是干什么的?是一个怎样的工作?他的职责定位?软件测试需要哪些知识技能(软件测试是做什么的?)

  1. 软件测试主要职责就是 站在用户的角度,模拟用户真实操作的情况,检查程序的业务逻辑和代码逻辑提高产品的易用性。检查软件产品是否符合用户的需求,提高产品的质量,使用户满意。
    软件测试是为了发现软件系统或程序中的问题而执行程序的一个过程,测试这个软件是不是能够按照需求运行。软件测试简单点来说就是找Bug

  2. 在软件投入运行之前,对软件需求分析、指定测试计划、编写和执行测试用例、对bug进行跟踪,对软件的质量进行评估,输出测试报告

    1. 根据产品设计或需求,进行需求分析,关注项目需求的可测性,并能预先评估项目的风险,

    2. 制定测试计划编写测试用例(测试用例包含用例编号、用例标题、测试项目/模块、优先级、前置条件、测试步骤和数据、预期结果、实际结果),进行用例的评审

    3. 等待开发交付产品之后,搭建测试环境。首先进行冒烟测试,主要进行正常业务核心业务的测试,测试通过之后,执行用例,功能、性能等其他方面进行测试

    4. 缺陷进行深入定位跟踪分析和报告,协助开发分析解决问题;

    5. 测试完成之后,对测试结果进行分析,输出测试报告。

      (软件测试就是接收到软件之后,按照合格的标准,来对软件进行测试活动,在测试过程中发现软件存在的问题,也就是常说的Bug(漏洞),若发现问题,将问题提交至软件部门进行修改,修改之后再进行测试,直至软件达到合格标准。)
      能对测试流程进行改进,提高测试效率、测试覆盖和质量;跟进项目迭代,推进测试进度;服从领导安排的其他工作。(功能测试工程师)

      自动化测试工程师:根据产品和项目的特点,提出并指定自动化解决方案,完成自动化测试的实施,能够完成接口、UI等 测试方案实现及脚本设计

      对问题进行分析定位,缺陷分析和报告总结,并推动解决,提出代码改进意见

      提高测试效率,增加自动化测试的覆盖率

      指定产品性能,稳定性进行测试方案

      服从领导安排其他的工作

      性能测试工程师:负责规划并制定性能测试、兼容性测试、自动化测试等专项测试计划,并保证高效执行

      负责性能测试执行以及性能问题定位,跟进性能优化和问题解决

      搭建并完善自动化测试矿建的性能、兼容性自动化测试体系,提高转向测试的工作效率

      搭建并完善专项质量监控体系,全面监控产品质量

      挖掘项目研发过程中存在的性能问题、兼容性问题、安全性问题、提前暴露质量风险

      服从领导安排其他的工作

      安全测试工程师:对系统进行安全测试,包括黑盒测试、白盒测试、渗透测试,发现系统潜在的安全漏洞

      分析和评估测试结果,并提出风险分析报告和修复方案

      提供安全建议和解决方案,提供程序的安全性

      参与安全架构设计、安全咨询和安全培训等工作

      跟踪安全技术发展趋势,为企业提供前沿的、专业的、健全的安全建议。

      服从领导安排其他工作

    6. 软件测试需要掌握的知识技能可以分为以下几个部分,首先最重要就是测试的基础知识,脚本语言(python),软件测试工具、计算机的硬件知识、数据库知识、计算机网络、操作系统

3. 如果开发了一个系统,没有bug也不会报错,但是他大部分的功能不是用户想要的,你觉得他的质量高吗?

不高,一个质量高的系统,首先站在用户的角度要满足的就是功能需求,在满足功能需求下,也需要对一些体验性,流畅性、操作性进行提高。

4. 平时有用过那些语言吗?

python

python有哪些基本的数据类型?

数字、字符串、列表、元组、字典、集合

给列表中的数据去重

# 可以直接用set()进行数据类型的转换进行去重。
# 集合(set)是python中用于存储无序且不重复元素的容器,通过将列表转换为集合,可以自动除去列表中重复元素。
list1 = [1, 2, 2, 4, 5]
def func1(list1):
    return list(set(list1))

print('去重后的列表:',func1(list1))


# 使用字典,字典在python中是一个非常有用的数据结构,他以键值对的形式存储数据,在对列表去重时,可以将列表中的元素作为字典中的键,并给每个键分配任意一个值。由于字典中的键是唯一的,重复的元素将会被自动除去
#formkeys()函数创建一个新的字典,获取新字典的键 去重
list2 = [2, 3, 4, 5, 5, 2, 10, 2]
def func2(list2):
    unique_list = []
    for i in {}.fromkeys(list4).keys():
        unique_list.append(i)
    return unique_list
print(func(list4))

my_dict = {}.formkeys(list1) # formkeys()函数创建一个新的字典
unique_list = list(my_dict.keys()) # 字典中的键是唯一的
print(unique_list)
            


# 列表解析:python中简洁高效的方式用于快速创建新列表,在进行去重时,用列表解析来创建一个不包含重复元素的新列表,count()方法统计该元素在列表中出现的次数,只有当元素个数为1时,才将其加入新列表,从而实现列表去重
list1 = [1, 2, 3, 3, 4]
unique_list = [i for i in list1 if list1.count(i)==1]
print(unique)

# 直接使用空列表 for循环遍历,判断列表中是否存在相同的元素
# 不存在就追加到新的空列表里
list4 = [1, 2, 3, 4, 3]
def func4(list4):
    unique_list = []
    for i in list2:
        if i in unique_list:
            continue
        unique_list.append(i)
    print(unique_list)
print(func4(list4))

# sorted()排序
def func3(list3):
    unique_list = []
    temp_list = sorted(list3)
    i = 0
    while i < len(temp_list):
        if temp_list[i] not in unique_list:
            unique_list.append(temp_list[i])
        else:
            i += 1
    return unique_list

5. 接口测试有了解过吗?

做接口测试的get和post请求,这两者有什么区别

GET和POST方法的使用场景,参数,安全性、幂等性、可缓存和XMLHttpRequest是不同的。

  • GET用于搜索查询,查询参数在url中明文显示,提交速度快,提交数据有长度限制。
  • POST用于提交数据、注册、登录。非明文显示(相对于GET比较安全,但是还是可以用F12抓包抓取到),提交数据速度相对慢,提交长度没有限制

使用场景

get用于获取资源,比如说查找

post用于向服务器传输实体主体,比如说提交数据,登录、注册。post的主要目的并不是获取相应的主体内容

参数

GET和POST 的请求都能使用额外的参数,但是GET的传参时是以字符串出现在URL中的,POST的参数存储在实体主体中。

当使用GET方法时,这也就限制了GET的参数在URL中也不可能无限长,长度也是有限制的,一般长度为1M

相对来说POST的安全性更高一些,但是不能因为post参数存储在实体的主体中就认为他的安全性高,因为照样可以通过一些抓包工具(Fiddler)查看。

URL支持ASCII码,因此GET的参数如果存在中文等字符就需要实现进行编码。POST参数支持标准的字符集。

安全性

(安全的HTTP方法不会改变服务器的状态,也就是说他是可读的。)

GET方法是安全的,而POST不是。因为POST传输的是实体主体内容,这个内容可能是用户上传的表单数据,上传成功之后,服务器可能把这个数据存储到数据库中,因此状态也可能会发生改变。

安全的方法除了GET之外,还有HEAD、OPTIONS

不安全的方法除了POST之外还有PUT、DELETE

幂等性

幂等的HTTP方法,同样的请求被执行一次与连续多次的效果是一样的,服务器的状态也是一样的。也就是说,幂等方法不应该有副作用(统计用途除外)

所有安全的方法都是幂等的。

可缓存

如果要对响应进行缓存,需要满足以下条件

  • 请求报文的HTTP方法本身是可缓存的,包括GET和HEAD方法,但是 PUT 和 DELETE 不可缓存,POST 在多数情况下不可缓存的。
  • 响应报文的状态码是可缓存的,包括:200, 203, 204, 206, 300, 301, 404, 405, 410, 414, and 501
  • 响应报文的 Cache-Control 首部字段没有指定不进行缓存。

XMLHttpRequest

(XMLHttpRequest 是一个API,他为客户端提供了在客户端和服务器之间传输数据的功能.通过URL来获取数据的简单方式,并且不会使整个页面刷新.这使得网页值更新了一部分页面不会打扰到用户.XMLHttpRequest在AJAX 中被大量使用.)

  • 在使用XMLHttpRequest的POST方法时,浏览器会发送Header载发送Data.但并不是所有的浏览器会这么做,火狐就不会
  • 而GET方法Header和Data会一起发送

6. 数据库有了解过吗?做过哪些操作?

增删改查。

  1. select name, id from students; # 查找表中的数据
    select * from students where name="LiLi"; # 查找某个学生的数据
    insert into students (id, name) values (1, 'LiMing'); # 插入数据
    DROP TABLE table_name; # 删除一个表
    delete from students; # 删除一个表
    DELETE FROM table_name WHERE condition;  # 删除某一条数据
    DELETE FROM table_nmae WHERE condition LIMIT 1; # LIMIT 1指定删除一条数据
    DELETE FROM table_name WHERE primary_key_column = (SELECT something FROM another_table WHERE condition LIMIT 1);
    

7. 测试场景:举办一个活动,扫二维码报名,扫完这个二维码之后,去填写姓名,地址,电话号码,最后点击提交

(分析测试点,界面,功能,性能,易用性,安全性,兼容性)
案例1

其他

  1. 提升点:功能测试是基于业务的,首要的就是要熟悉业务和系统,是为谁而服务的。一定要站在用户的角度。
  2. 日常工作内容:首先就是熟悉系统熟悉业务主要进行的就是功能测试,在熟悉之后做接口测试,对需求进行分析,测试用例的编写,测试用例的评审,在开发完之后进行测试,执行测试用例,提交bug,让开发去改,改完之后进行回归测试,达到要求之后,进行上线。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值