面试问到的问题2021年

1、测试用例设计

    一、划分等价类
    (1)有效等价类,有意义的输入数据构成的集合,检验程序是否实现规格说明预先规定的功能和性能。
    用例尽可能多的覆盖尚未被覆盖的有效等价类。直到所有的有效等价类都被测试用例覆盖。
    (2)无效等价类,不合理、无意义的输入数据构成的集合,检验程序的容错能力。
    用例覆盖一个且仅一个尚未被覆盖的无效等价类。直到所有的无效等价类都被测试用例所覆盖。
    二、边界值 
    三、判定表
        1、确定规则数,条件数为n,规则个数= 2^n
        2、列出所有条件桩和动作桩
        3、填入条件、动作对应的结果
        4、简化判定表,合并相似规则
    四、业务流程(正常流程、异常流程)
    五、正交表(根据水平、因子选取正交表)

2、unittest的工作原理

Test case:一个完整的测试单元,体现在Setup(测试环境的准备)、run(测试执行)、teardown(测试环境的还原)。
Test suite(集合或套件):多个测试用例的集合,测试套件或测试计划
Test Loader:用来加载 testcase 到 testsuite 中的。
Test runner:执行测试用例,测试结果会保存到TextTestResult实例中。
Test fixture:一个测试用例环境的搭建和销毁,主要是setUp() 和 setDown()方法。

3、装饰器的原理

Python中的变量名和对象是分离的,变量名可以指向任意一个对象。
从本质上,装饰器起到的就是这样一个重新指向变量名的作用,让同一个变量名指向一个新返回的可调用对象,从而达到修改可调用对象的目的

4、值传递、引用传递

# 值传递(不可变对象作为函数参数,相当于C语言的值传递)
def zhi(c):
    print("调用中", id(c))  # 2072954816   一开始传递进来的是对不可变数据类型a(数字类型)的引用
    c += 2  # 数字改变后有一个新的指针指向3所在内存空间,但原来指向2的指针a(内存地址空间依旧存在)未改变
    print("被修改后", id(c))  # 2072954848   故c的内存地址改变
    return c


# 引用传递(列表是可变数据类型,作为参数传递实则是传递对列表的引用,修改更新列表值后依旧引用不变)
def yinyong(l):
    print("调用中", id(l))  # 21694696
    l[1] = 30
    print("被修改后", id(l))  # 21694696
    return l


if __name__ == "__main__":
    a = 2
    print('调用前', id(a))  # 2072954816
    n = zhi(a)
    print(n, id(n))  # 4   2072954848
    print(a, id(a))  # 2   2072954816

    list1 = ["loleina", 25, 'female']
    print('调用前', id(list1))  # 21694696
    list2 = yinyong(list1)

    print(list1, id(list1))  # ['loleina', 30, 'female']  21694696
    print(list2, id(list2))  # ['loleina', 30, 'female']  21694696

5、性能测试

6、linux常用命令

 之前的文章 https://www.cnblogs.com/yinwenbin/p/11874351.html

 昨天有问到的:

1、查看服务netstat命令,常用: netstat  -natp

2、查看进程ps命令,常用:ps  -ef 或者  ps aux

7、HTTP与HTTPS有什么区别?

HTTP协议传输的数据都是未加密的,也就是明文的。HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全

8、cookies和session的区别
1、cookie数据保存在客户端,session数据保存在服务器端
2、session过期时间取决于服务期的设定;cookie过期时间可以在cookie生成的时候设置进去;
3、cookie和session都是用来跟踪浏览器用户身份的会话方式。

9、印象深刻的bug

10、缓存

web缓存也叫作代理服务器。(过期机制)
                 它是一种在不向原始服务器发送请求的情形下满足HTTP请求的技术。
                 当对象在web缓存中的时候,请求被满足;
                 否则将会请求原始服务器,然后缓存到服务器,接着满足请求;

静态缓存:是在新内容发布的同时就立刻生成相应内容的静态页面;
动态缓存:是在新内容发布以后,并不预先生成相应的静态页面,直到对相应内容发出请求时,
                  如果前台缓存服务器找不到相应缓存,就向后台内容管理服务器发出请求,
                  后台系统会生成相应内容的静态页面,用户第一次访问页面时可能会慢一点,但是以后就是直接访问缓存了

测试进阶轨迹
原文地址:https://www.cnblogs.com/yinwenbin/p/14540650.html