美文网首页
2018-09-19 面试题回忆录

2018-09-19 面试题回忆录

作者: ktide | 来源:发表于2020-06-02 11:04 被阅读0次

    笔试题

    1. 写一个函数,返回两个数字相加的值,入参为a,b

    def addNum(a,b):
        if(a.isdigit()&b.isdigit()):
            return float(a)+float(b)
    
        扩展:判断是否为数字 isdigit()
    

    2. 一个数加上100是个完全平方数,加上168是另一个完全平方数,求这个数。

    import math
    
    # 方法1: 
    def isint(x):
    
        f = str(x).split('.')
        return (f[1]=='0')
            
    def getNum(n):
        x1 = math.sqrt(n+100)
        x2 = math.sqrt(n+168)
        return (isint(x1)) & (isint(x2))
    
    for i in range(0,1000):
        if getNum(i):   
            print i
    
    # 方法2:
    def issqrt(n):
        x = int(math.sqrt(n+100))
        y = int(math.sqrt(n+168))
        return (x*x==(n+100)) & (y*y==(n+168))
    
    for i in range(1,1000):
        if issqrt(i):   
            print i
    
        扩展1:math.sqrt(x)返回x的算术平方根,值为float。
        扩展2:完全平方数开根号后为整数,非完全平方数开根号后为小数。
    

    3. range 和 xrange 的 区别

        相同:两个都是用在循环中
        区别:range返回的是一个列表;xrange返回的是一个生成器
        性能:xrange做循环的性能比range好,尤其是返回很大的时候,尽量用xrange,除非你是要返回一个列表。
    

    4. python标准数据类型有哪些

        Numbers(数字)int,long,float,complex
        String(字符串)
        List(列表)
        Tuple(元组)
        Dictory(字典)
    

    5. 怎么理解迭代器

    6. 测试代码是怎么管理的?

    • 复习重点:如何用版本管理工具管理测试代码
    • 了解适合测试的版本管理工具svn、git

    7. 先自我介绍一下?

    8. unittest框架,数据驱动怎么做? 跳过某个测试用例怎么做?

    9. 自动化架构?设计?

    10. 印象深刻2次痛苦的沟通经历,是怎么沟通的?结果失败/成功?

    11. python web框架flask

    12. 用过哪些抓包工具?fiddler

    13. 用python 装饰器 封装连接数据库?

    14. python 发送带请求头headers的 http 请求,返回值为json

    15. 最近半年用到的python第三方库

    16. 语句覆盖?判定覆盖?条件覆盖?

    白盒测试是基于覆盖的测试,尽可能覆盖程序的结构特性和逻辑路径。具体的方法有 逻辑覆盖、循环覆盖、基本路径覆盖等。逻辑覆盖又分为 语句覆盖、判定覆盖、条件覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖等。白盒测试主要用于单元测试。
        语句覆盖:设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次。
            优缺点:能够使得所有的执行语句都能被测试,但是不能准确地判断运算中的逻辑关系错误。
        判定覆盖:设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。
            优缺点:会忽略条件中取“或(OR)”的情况。
        条件覆盖:设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。
            有缺点:所有条件覆盖都满足了,也不能保证所有判定(分支)覆盖被测试,这样有可能会遗漏程序落哦即错误。
        判定-条件覆盖:是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少被执行一次,同时,所有判断的可能结果至少执行一次。
            优缺点:既没有覆盖到所有路径,也没有覆盖到所有的条件组合。这样容易忽视代码中出现的错误。
        条件组合覆盖:设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少执行一次。
            优缺点:不能保证所有路径被执行。
        路径覆盖:设计所有的测试用例,来覆盖程序中的所有可能的执行路径。
            优缺点:不能覆盖所有的条件组合。
    总结:任何一种方法都不能完全覆盖所有测试用例。在实际的测试用例设计过程中,可以根据需要将不同的设计方法组合起来,交叉使用,以达到最高的覆盖率。
    

    17. 正交试验法(,等价类划分、场景设计、因果图)

    概念:从大量的数据测试例中挑选适量的、有代表性的条件组合,从而合理地安排测试的一种科学实验设计方法。
    应用场景:在一个界面中有多个控件,每个控件有多个取值,控件之间可以相互组合,不可能(也没有必要)为每一种组合编写一条用例,如何使用最少最优的组合进行测试。——正交排列法
    用例设计步骤:1.确定影响被测对象的条件,即因子数;2.确定每个因素的可能取值,即水平数;3.选取合适的正交表;4.将因子、状态映射到正交表中;5.在增加一些没有生成的但可疑的测试用例。
    正交表分析法:参考https://blog.csdn.net/lilinfang90/article/details/17524701
    
    常用的9个正交表:
    
    (1)L4(2^3)
    序号    1    2    3           
    1    1    1    1
    2    1    2    2
    3    2    1    2
    4    2    2    1
    
    
    (2)L8(2^7)
    序号    1    2    3    4    5    6    7                   
    1    1    1    1    1    1    1    1
    2    1    1    1    2    2    2    2
    3    1    2    2    1    1    2    2
    4    1    2    2    2    2    1    1
    5    2    1    2    1    2    1    2
    6    2    1    2    2    1    2    1
    7    2    2    1    1    2    2    1
    8    2    2    1    2    1    1    2
    
    
    (3)L12(2^11)
    
    序号    1    2    3    4    5    6    7    8    9     10    11       
    1    1    1    1     1    1    1    1    1    1    1    1
    2    1    1    1    1    1    2    2    2    2    2    2
    3    1    1    2    2    2    1    1    1    2    2    2
    4    1    2    1    2    2    1    2    2    1    1    2
    5    1    2    2    1    2    2    1    2    1    2    1
    6    1    2    2    2    1    2    2    1    2    1    1
    7    2    1    2    2    1    1    2    2    1    2    1
    8    2    1    2    1    2    2    2    1    1    1    2
    9    2    1    1    2    2    2    1    2    2    1    1
    10    2    2    2    1    1    1    1    2    2    1    2
    11    2    2    1    2    1    2    1    1    1    2    2
    12    2    2    1    1    2    1    2    1    2    2    1
    
    
    (4)L9(3^4)
    
    序号    1    2    3    4               
    1    1    1    1    1
    2    1    2    2    2
    3    1    3    3    3
    4    2    1    2    3
    5    2    2    3    1
    6    2    3    1    2
    7    3    1    3    2
    8    3    2    1    3
    9    3    3    2    1
    
    
    (5)L16(4^5)
    
    序号    1    2    3    4    5           
    1    1    1    1    1    1
    2    1    2    2    2    2
    3    1    3    3    3    3
    4    1    4    4    4    4
    5    2    1    2    3    4
    6    2    2    1    4    3
    7    2    3    4    1    2
    8    2    4    3    2    1
    9    3    1    3    4    2
    10    3    2    4    3    1
    11    3    3    1    2    4
    12    3    4    2    1    3
    13    4    1    4    2    3
    14    4    2    3    1    4
    15    4    3    2    4    1
    16    4    4    1    3    2
    
    
    (6)L25(5^6)
    
    序号    1    2    3    4    5    6       
    1    1    1    1    1    1    1
    2    1    2    2    2    2    2
    3    1    3    3    3    3    3
    4    1    4    4    4    4    4
    5    1    5    5    5    5    5
    6    2    1    2    3    4    5
    7    2    2    3    4    5    1
    8    2    3    4    5    1    2
    9    2    4    5    1    2    3
    10    2    5    1    2    3    4
    11    3    1    3    5    2    4
    12    3    2    4    1    3    5
    13    3    3    5    2    4    1
    14    3    4    1    3    5    2
    15    3    5    2    4    1    3
    16    4    1    4    2    5    3
    17    4    2    5    3    1    4
    18    4    3    1    4    2    5
    19    4    4    2    5    3    1
    20    4    5    3    1    4    2
    21    5    1    5    4    3    2
    22    5    2    1    5    4    3
    23    5    3    2    1    5    4
    24    5    4    3    2    1    5
    25    5    5    4    3    2    1
    
    
    (7)L8(4^1×2^4)
    
    序号    1    2    3    4    5           
    1    1    1    1    1    1
    2    1    2    2    2    2
    3    2    1    1    2    2
    4    2    2    2    1    1
    5    3    1    2    1    2
    6    3    2    1    2    1
    7    4    1    2    2    1
    8    4    2    1    1    2
    
    
    (8)L12(3^1×2^4)
    
    序号    1    2    3    4    5
    1    1    1    1    1    1
    2    1    1    1    2    2
    3    1    2    2    1    2
    4    1    2    2    2    1
    5    2    1    2    1    1
    6    2    1    2    2    2
    7    2    2    1    2    2
    8    2    2    1    2    2
    9    3    1    2    1    2
    10    3    1    1    2    1
    11    3    2    1    1    2
    12    3    2    2    2    1
    
    
    (9)L16(4^4×2^3)
    
    序号    1    2    3    4    5    6    7
    1    1    1    1    1    1    1    1
    2    1    2    2    2    1    2    2
    3    1    3    3    3    2    1    2
    4    1    4    4    4    2    2    1
    5    2    1    2    3    2    2    1
    6    2    2    1    4    2    1    2
    7    2    3    4    1    1    2    2
    8    2    4    3    2    1    1    1
    9    3    1    3    4    1    2    2
    10    3    2    4    3    1    1    1
    11    3    3    1    2    2    2    1
    12    3    4    2    1    2    1    2
    13    4    1    4    2    2    1    2
    14    4    2    3    1    2    2    1
    15    4    3    2    4    1    1    1
    16    4    4    1    3    1    2    2
     
    

    18. 实现数据库表的 左连接,SQL的几种正确写法?left join,join,where,union。

    19. 用例怎么管理的?

    通过testlink管理。
    

    测试管理工具

    • 无论是收集需求,设计测试用例,测试执行报告,通知其他团队成员关于测试进度等,都需要一个测试管理工具。 记录这些细节的小错误可能会导致项目的灾难性影响和失败。 因此,为了管理所有这些细节,一些测试管理工具可以非常方便和有用。

    1 qTest

    • qTest测试管理是敏捷测试团队使用的No 1的测试管理工具。 qTest提供易于学习,易于使用,可扩展的测试管理解决方案,使测试人员能够集中,组织和加快测试管理。 qTest使QA过程的每一步更简单,更有效,包括:
      。管理要求 - 需求与相关缺陷之间的完全可追溯性
      。测试用例库 - 轻松导入,创建,管理和组织测试用例
      。执行测试 - 管理测试周期,创建并执行测试运行
      。跟踪缺陷 - 创建自定义查询来定位缺陷并将结果导出到Excel中
      。具有高级查询功能的实时交互式开箱即用或可定制的报表
      。一流的,实时的JIRA集成在需求和缺陷级别
    • qTest拥有超过10,000个用户,在20多个国家拥有400个客户,是目前市场上最好的测试管理解决方案之一。

    11 TestRail

    • TestRail与名为Gemini的票据管理工具集成;它是最好的测试用例管理工具之一。通过许多其他问题跟踪工具,它为测试用例的创建和执行支持提供了一些外部链接。它附带一个基于HTTP的API与自动测试结果集成。它轻松管理您的功能,探索性和自动化测试。它是一个独特而强大的UI脚本,可帮助您定制应用程序和UI的许多方面。
    • TestRail的主要特点
      。现代测试管理
      。跟踪测试结果
      。报告和指标
      。无缝整合
      。项目灵活的自定义字段

    20. postman 多个body,怎么参数化?

    21. 风险的理解?风险分析的常用方法?

    • 风险的定义:不确定性对目标的影响。影响是指偏离预期,可以是正面的和/或负面的,目标可以是不同方面(如财务、健康与安全、环境等),可以体现在不同的层次(如战略、组织范围、项目、产品和过程)。不确定性起源于人类的无知,我们缺乏足够的信息去推测事件的发生及其后果。
    • 风险的含义:
      1)风险是客观存在的;
      2)风险和不确定性、随机性紧密相连,但不等同;
      3)风险强调的是损害的潜在可能性,而不是事实上的损害;
      4)风险不能消除至尽,包括人为因素带来的风险,也一样不能消除至尽;
      5)衡量风险的两个基本要素就是事件及其后果;
      6)对信息安全而言,导致风险的事件是威胁利用了资产(或系统)的脆弱点。
    • 信息安全是围绕风险展开。
    • 常用的风险分析方法:
      。 专家评价法
      。层次分析法
      。概率分布分析法

    22. 项目管理

    23. 基于风险的测试

    • 基于风险的测试是指评估优先级,先做高优先级的测试,如果时间和精力不够,低优先级的测试可以暂时先不做。
    • 基于风险的测试,也就是根据事情的轻重缓急来决定测试工作的重点。
    • 影响测试优先级的因素重要是:
      。该功能出问题对用户的影响有多大?对用户的影响越大,其优先级越高。
      。出问题的概率有多大?概率越大,优先级越高。(这种概率受国内模块的复 杂性,代码质量的影响。复杂性越高货代码质量越低,问题发生的概率就越大。)
    • 基于风险的测试过程归纳如下:
      。列出软件的所有功能和特性
      。确定每个功能出错的可能性
      。如果某个功能出错或欠缺某个特征,需要评估对用户使用软件产品的影响程度。
      。根据上面两个步骤计算风险度
      。根据可能出错的迹象,来修改风险度
      。决定测试的范围,编写测试方案

    24. 模糊测试方法

    • Fuzz testing,构造大量的随机数据作为系统的输入,从而检验系统在各种数据情况下是否会出现问题。
    • 应用场景:安全性测试,服务器的容错性测试
    • 配置模糊测试参数或框架,包含 已知有效数据、故意错误数据和随机数据的组合,以达到更好的测试效果。

    25. ALAC测试和随机测试

    • 二·八原则
    • 用户80%的时间在使用系统20%的功能;20%的时间在使用系统80%的功能。
    • 测试发现的错误80%集中在20%的程序模块中;20%的错误集中在80%的程序模块中。

    相关文章

      网友评论

          本文标题:2018-09-19 面试题回忆录

          本文链接:https://www.haomeiwen.com/subject/psywnftx.html