首页 > 其他分享 >软件测试面试中常见必问(二)自动化问题 内附答案

软件测试面试中常见必问(二)自动化问题 内附答案

时间:2024-10-23 17:25:21浏览次数:6  
标签:必问 -- 内附 元素 自动化 print 拷贝 等待 软件测试

1.你们自动化怎么做的
在需求分析阶段,跟前端沟通好,规范前端代码,避免造成后期自动化工作无法开展的问题。
在用例设计阶段,挑选出适合做自动化的用例,单独整理到一个文件保存。
在项目中后期,趋于稳定之后,就可以开始设计自动化脚本了。

语言python+自动化测试工具selenium+单元测试框架unittest(这里可以挑自己熟悉的说,比如pytest等)+分层模型PO+测试报告HTMLTestRunner

2.selenium是什么,测试所需要包括的工具
selenium是基于UI的模拟用户操作行为的一种web自动化测试工具包,常用于web自动化测试。

需要的工具:webdriver,即浏览器驱动(不同的浏览器驱动不同,与浏览器的版本也相关)。

代码库,python 中的selenium库。

3.说一下元素定位的基本方式
name        id        classname        tagname

link_text        partial_link_next(模糊的文本定位)       css        xpath

4.自动化的测试用例写了多少条
这里回答之后很可能会问总的用例写了多少条,建议回到自动化测试用例占全部用例的15%左右(不超过20%)。

5.自动化的测试脚本你在编写的时候有遇到什么问题吗
    1. 检查自己定位方式是否有误?
    2. 程序加载过快,页面来不及反应? -- 元素等待
    3. 有些输入框必须先点击,再输入
    4. 需要操作的元素在新窗口? -- 切换到新窗口(句柄)
    5. 需要操作的元素在frame/iframe标签内? -- 切换表单
    6. 需要操作的元素被其他元素遮挡了? -- 修改display的值为none
    7. 需要操作的元素是个只读元素?  -- 修改value的值.或者删掉readonly属性.
    8. 需要操作的元素在页面靠下位置?-- 操作滚动条

6.怎么样提高自动化的运行速度和效率
· 少用sleep,多用元素等待.
· 在case层,把连接数据库的代码写到setUpClass里面.
· 如果涉及到多个elif,把最有可能出现的条件写到前面.
· 如果不是大量的测试数据,尽量减少文件IO(input/output)操作.
· 对于一些页面.必须全部加载完成后才会继续执行,可以使用显示等待,这一个元素找到后就继续执行,不必等所有元素加载成功.
· 提高脚本的稳定性,避免因为脚本不稳定影响效率.

7.python的装饰器是什么?有哪些?
在不改变代码的前提下,让代码实现更多的功能

@classmethod  @staticmethod   @ddt   @data    @unittest.skip

8.怎么样提高自动化脚本的稳定性
    1. 不使用xpath的绝对路径.相对路径,找父标签不要跳太多的层级.
    2. 因为网络的原因造成不稳定.  使用隐式等待.
    3. 因为一些随机出现的元素导致不稳定.     使用try
    4. 因为测试数据造成不稳定.   在teardown里面删掉.

9.什么样的项目适合做自动化(你之前xx项目为什么做的自动化测试)
项目比较稳定周期长,需求变化少,UI界面变化少

重复测试或者回归测试多

10.说一下元素等待
隐式等待:

隐式等待是全局性的,一旦设置,它将对测试脚本中的所有元素生效。
它告诉WebDriver在抛出找不到元素的异常之前,应该等待多长时间。
隐式等待适用于页面上所有元素的查找操作。
如果在设置的时间内找到了元素,WebDriver将继续执行;如果超时,则抛出NoSuchElementException。
隐式等待通常在测试脚本开始时设置一次。
显示等待:

显式等待是局部性的,它只对特定的元素查找操作有效。
它允许你等待某个特定条件成立,例如等待某个元素出现。
显式等待更加灵活,可以等待特定的元素或条件,而不是盲目等待固定的时间。
显式等待通常使用WebDriverWait和ExpectedConditions类来实现。
显式等待不会使测试脚本暂停执行,它会周期性地检查条件是否满足。
11.常用的库
标准库:os、csv、sys....等

第三方库:pandas、PyYAML、Pytest.....等

12.元素定位不到有哪些可能
1.网速问题,元素没加载出来
2.代码书写错误
3.嵌套在frame/iframe标签中
4.新的元素在新的窗口中,切换窗口switch_to代码
5.在页面下方,需要操作滚动条
6.元素只读readonly

13.深拷贝和浅拷贝的区别

a = [1,3,[4,5]]
    # 浅拷贝: 拷贝的内存空间的地址.等于都是指向的同一个对象.如果源数据修改,拷贝后的内容也会修改.
    b = a.copy()    # 浅拷贝
    print(b)
    a[2][0] = 99    # 把a的嵌套列表里面的4的值改成99
    print(a)
    print(b)        # b也随之更改.

    # 深拷贝: 在内存空间里面另外开辟一块空间,用来保存值.源数据修改不会影响到修改后的数据.
    from copy import deepcopy
    a = [1, 3, [4, 5]]
    b = deepcopy(a)
    print(b)
    a[2][0] = 99
    print(a)

    print(b)

14.冒泡排序

第一个数和第二个数比较,小的在前面,以此类推

a = [6,4,2,65,1,7]
    # a.sort()
    # print(a)
    for i in range(len(a)):                   # range(0,6) 外层循环,控制循环次数.
        for j in range(0,len(a)-1):         # 内层循环, 把所有的数都拿出来比较一次.,
            if a[j] > a[j+1]:
                a[j],a[j+1] = a[j+1],a[j]         # 就互相换位置.
    print(a)

标签:必问,--,内附,元素,自动化,print,拷贝,等待,软件测试
From: https://www.cnblogs.com/yuanyuanmanman/p/18497855

相关文章

  • 软件测试流程
    一、软件测试定义采用人工或自动化的手段,运行软件或直接观察软件的过程,其目的是检验软件是否满足用户的需求,或弄清软件和需求之间的差别。二、软件测试内容源程序、目标程序、数据、相关文档三、软件测试目的四、软件测试流程(1)计划阶段(2)需求分析阶段(3)设计阶段(4)......
  • 软件测试基础
    软件软件由程序,数据,相关文档组成。软件的分类按重要性系统软件支持软件应用软件按架构单机版软件分布式软件C/S架构(客户端与服务端)B/S架构(浏览器/服务端)软件测试的定义标准定义测试是在用户需求和开发技术之间找一个平衡点。国际定义依据规范的软件检测......
  • 软件测试的十种方法
    一、等价类:定义:指某个输入域的集合,在集合中各个输入的条件都是等效的。有效等价类:对程序规格说明有意义的、合理的输入数据案例:手机号:(1)11位(2)纯数字有效用例:15949613302无效等价类:对程序规格说明无意义的、不合理的输入数据案例:手机号:(1)11位(2)纯数字无效用例1:12......
  • count(*)、count(1)哪个更快?面试必问:通宵整理的十道经典MySQL必问面试题Jv
    合集-面渣逆袭(10)1.阿里面试:Java开发中,应如何避免OOM02-212.美团面试:Kafka如何处理百万级消息队列?02-203.Java异常处理的20个最佳实践:告别系统崩溃02-224.揭秘一线大厂Redis面试高频考点(3万字长文、吐血整理)02-235.美团面试:说说OOM三大场景和解决方案?(绝对史上最全)02-246.面试......
  • count(*)、count(1)哪个更快?面试必问:通宵整理的十道经典MySQL必问面试题
    一、你是如何理解Count(*)和Count(1)的?这两个并没有区别,不要觉得count()会查出全部字段,而count(1)不会。所以count()会更慢,你觉得MySQL作者会这么做吗?可以很明确地告诉你们count()和count(1)是一样的,而正确有区别的是count(字段)。如果你count()的是具体的字段,那......
  • 课堂知识整理—软件测试之测试分类
    一、按开发阶段划分1、单元测试2、集成测试3、系统测试4、验收测试二、按查看代码划分1、黑盒测试定义:黑盒测试也是功能测试,测试中把被测试的软件当成一个黑盒子,不关心盒子的内部结构是什么,只关心软件的输入数据和输出数据比如:计算器当作黑盒子:输入1+2=输出:3结果就是对......
  • 软件测试笔记——接口测试
    文章目录一、概念1.接口测试流程2.URL3.HTTP协议4.RESTful5.案例介绍二、Postman1.Postman软件2.登录接口调试-获取验证码3.登录接口调试-自动关联数据4.合同上传接口-提交请求数据5.提交参数查询6.批量执行7.接口用例设计8.断言8.参数化三、案例1.项目2.课程添加3.课......
  • 软件测试学习思维导图
    软件测试是一个系统的过程,它涉及多个层面的知识和技能。思维导图是一种有效的工具,可以帮助测试人员组织和规划测试活动,确保测试的全面性和深入性。以下是软件测试思维导图的关键组成部分:测试理论知识测试理论知识是软件测试的基础,包括了解软件测试的定义、目的、原则、方法......
  • 软件测试笔记|数据库基础|创建索引的原则
    创建数据库索引有以下原则:一、选择合适的列创建索引1.选择经常用于查询条件的列:如果某一列经常在WHERE子句中作为条件出现,那么为该列创建索引可以大大提高查询速度。例如,在一个员工表中,如果经常根据员工的姓名进行查询,那么为“姓名”列创建索引是一个不错的选择。2.选择......