面试题

1、测试的目的是什么?

 测试的目的是找出软件产品中的错误,是软件尽可能的符合用户的要求。当然软件测试是不可能找出全部错误的。

 

2、测试分为哪几个阶段?

 一般来说分为5个阶段:单元测试、集成测试、确认测试、系统测试、验收测试

 

3、单元测试的测试对象、目的、测试依据、测试方法?

 测试对象是模块内部的程序错误,目的是消除局部模块逻辑和功能上的错误和缺陷。测试依据是模块的详细设计,测试方法是采用白盒测试。

 

4、软件测试的流程是什么?

 需求调查:全面了解系统概况、应用领域、软件开发周期、软件开发环境、开发组织、时间安排、功能需求、性能需求、质量需求及测试要求等。根据系统概况进行项目所需的人员、时间和工作量估计以及项目报价。

 制定初步的项目计划。

 测试准备:组织测试团队、培训、建立测试和管理环境等。

 测试设计:按照测试要求进行每个测试项的测试设计,包括测试用例的设计和测试脚本的开发等。

 测试实施:按照测试计划实施测试。

 测试评估:根据测试的结果,出具测试评估报告。

 

5、你对SQA的职责和工作活动(如软件度量)的理解?

 SQA就是独立于软件开发的项目组,通过对软件开发过程的监控,来保证软件的开发流程按照指定的CMM规程(如果有相应的CMM规程),对于不符合项及时提出建议和改进方案,必要时可以向高层经理汇报以求问题的解决。通过这样的途径来预防缺陷的引入,从而减少后期软件的维护成本。SQA主要的工作活动包括制定SQA工作计划,参与阶段产物的评审,进行过程质量、功能配置及物理配置的审计等;对项目开发过程中产生的数据进行度量等等。

 

6、说说你对软件配置管理的理解

 项目在开发过程中要用相应的配置管理工具对配置项(包括各个阶段的产物)进行变更控制,配置管理的使用取决于项目规模和复杂性及风险的水平。软件的规模越大,配置管理就越显得重要。还有在配置管理中,有一个很重要的概念,那就是基线,是在一定阶段各个配置项的组合,一个基线就提供了一个正式的标准,随后的工作便基于此标准,并只有经过授权后才能变更这个标准。配置管理工具主要有CC,VSS,CVS,SVN等,我只用过SVN,对其他的工具不是很熟悉。

 

7、怎样写测试计划和测试用例

 简单点,测试计划里应有详细的测试策略和测试方法,合理详尽的资源安排等,至于测试用例,那是依赖于需求(包括功能与非功能需求)是否细化到功能点,是否可测试等。

 

8、说说主流的软件工程思想(如CMM、CMMI、RUP,XP,PSP,TSP等)的大致情况及对他们的理解

 CMM:SW Capability Maturity Model软件能力成熟度模型,其作用是软件过程的改进、评估及软件能力的评鉴。

 CMMI:Capability Maturity Model Integration能力成熟度模型集成 CMMI融入了大部分最新的软件管理实践,同时弥补了SW-CMM模型中的缺陷。

 RUP:rational unified process是软件工程话过程。

 XP:extreme program,即极限编程的意思,适用于小型团队的软件开发,像上面第三个问题就可以结合原型法采用这样的开发流程。要明白测试对于xp开发的重要性,强调测试(重点是单元测试)先行的理念。编程可以明显提高代码的质量,持续集成对于快速定位问题有好处。

 PSP,TSP分别是个体软件过程和群体软件过程。大家都知道,CMM只是告诉你做什么但并没有告诉你如何做,所以PSP/TSP就是告诉你企业在实施CMM的过程中如何做,PSP强调建立个人技能(如何制定计划、控制质量及如何与其他人相互协作等等)。而TSP着重于生产并交付高质量的软件产品(如何有效的规划和管理所面临的项目开发任务等等)。总之,实施CMM,永远不能真正做到能力成熟度的提升,只有将实施CMM与实施PSP和TSP有机结合起来,才能发挥最大的效力。因此,软件过程框架应该是CMM/PSP/TSP的有机集成。

 

9、你是怎样保证软件质量的,也就是说你觉得怎样才能最大限度的保证软件的质量?

 测试并不能够最大限度的保证软件的质量,软件的高质量是开发和设计出来的,而不是测试出来的,它不仅要通过对软件开发流程的监控,使得软件开发的各个阶段都要按照指定的规程进行,通过对各个阶段产物的评审,QA对流程的监控,对功能及配置的审计来达到开发的最优化。当然测试也是保证软件质量的一个重要方式,是软件质量保证工程的一个重要组成部分。

 

10、基于目前中国的国情,大多数公司的项目进度紧张、人员较少、需求文档根本没有或者很不规范,你认为在这种情况下怎样保证软件的质量?(大多数公司最想知道的就是在这种困难面前你该怎么保证软件的质量,因为这些公司一般就是这种情况--既不想投入过多又想保证质量)

 出现以上的情况,如果仅仅想通过测试来提高软件质量,那几乎是不可能的,原因是没有足够的时间让你去测试,少而不规范的文档导致测试需求无法细化到足够且有针对行的测试。所以,作为公司质量保证的因该和项目经理确定符合项目本身是和的软件生命周期模型(比如RUP的建材,原型法),明确项目的开发流程并督促项目组按照此流程开展工作,所有项目组成员(项目经理更加重要)都要制定出合理的工作计划,加强代码的单元测试,在客户既定的产品交付日期范围内,进行产品的持续集成等等,如果时间允许可以再配合客户进行必要的系统功能测试。

 

11、一个测试工程师应该具备哪些素质和技能?

 1-掌握基本的测试基础理论

 2-本着找出软件存在的问题的态度进行测试,不要以挑刺的形象出现

 3-可熟练阅读需求规格说明书等文档

 4-以用户的观点看问题

 5-有强烈的质量意识

 6-细心和责任心

 7-良好的有效的沟通方式(与开发人员及客户)

 8-具有以往的测试经验能够及时准确的判断出高危险区在何处

 

12、做好软件测试的一些关键点

 1-测试人员必须经过测试基础知识和理论的相关培训

 2-测试人员必须熟悉系统功能和业务

 3-测试要有计划,而且测试方案要和整个项目计划协调好

 4-必须实现编写测试用例,测试执行阶段必须根据测试用例进行

 5-易用性,功能,分支,边界,性能等功能行和非功能性需求都要进行测试

 6-对于复杂的流程一定要进行流程分支,组合条件分析,再进行等价类划分准备相关测试数据

 7-测试设计的一个重要内容是要准备好具体的测试数据,清楚这个测试数据是测试那个场景或分支的。

 8-个人任务平均每三个测试用例至少应该发现一个BUG,否则只能说明测试用例质量不好

 9-除了每天构建的重复测试可以考虑测试自动化外,其他暂时都不要考虑去自动化

 

13、软件测试员自身素质培养

 1-首先,应对软件测试感兴趣和对自己有自信,如果具备了这两点,那么在开发过程中不管遇到什么样的困难,相信一定能克服

 2-善于怀疑,实际上没有绝对正确的,总有错误的地方,具有叛逆心理,别人认为不可能发生的事情,我却认为可能发生,别人认为是对的,我却认为不是对的。

 3-打破沙锅问到底的精神,对于只出现过一次的BUG一定要找出原因,不解决誓不罢休。

 4-保持一个良好的心情,否则可能无法把测试做好。不要把生活中的不愉快的情绪带到工作中来。

 5-做测试时要细心,不是所有的BUG都能很容易找出,一定要细心才能找到这些BUG。

 6-灵活一些,聪明一点,多造一些容易产生BUG的例子。

 7-在有条件的情况下,多和客户沟通,他们身上有你所需要的。

 8-设身处地为客户着想,从他们的角度去测试系统。

 9-不要让程序员,以“这种情况不可能发生”这句话说服你,相反,你应该去说服他,告诉他在客户心理,并不是这样的

 10-考虑问题要全面,结合客户的需求,业务流程和系统的架构等多方面考虑问题。

 11-提出问题不要复杂化,这点和前面矛盾,如果你是一个新手,暂时不要管这点,因为最终将有你的小组成员讨论解决。

 12-追求完美,对于新测试员来说,努力追求完美,这对你很好,尽管有些事情无法做到,但你应该尝试。

 13-幽默感,能和开发小组很好的沟通是关键,试着给你的开发小组找一个BUG杀手,或对他们说“我简直不敢相信,你写的程序居然到现在没有找到BUG”。

 

14、为什要在一个团队中开展测试工作?

 因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量认证,这个时候就需要在团队中开展软件测试的工作。在测试的过程中发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。

 

15、你所熟悉的软件测试类型有哪些?

 测试类型有:功能测试、性能测试、界面测试

 功能测试在测试工作中占有比例最大,功能测试也叫黑盒测试。

 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。

    负载测试和压力测试都属于性能测试,两者可以结合进行。

 界面测试,界面是软件与用户交互的最直接的层,界面的好坏决定用户对软件的第一印象。

 区别在于,功能测试关注产品的所有功能,要考虑到每个细节功能,每个可能存在的功能问题。性能测试主要关注产品整体的多用户并发下的稳定性和健壮性。界面测试则关注与用户体验相关内容,用户使用该产品的时候是否已用,是否易懂,是否规范(用户无意输入无效的数据,当然考虑到体验性,不能太粗鲁的弹出警告)。做某个性能测试的时候,首先它可能是个功能点,首先要保证她的功能是没有问题的,然后再考虑性能的问题。

 

16、你认为做好测试用例设计工作的关键是什么

 白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结构。黑盒测试用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题。软件的黑盒测试意味着测试要在软件的接口处进行,这种方法是把测试对象看作是一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。因此黑盒测试又叫功能测试或者数据驱动测试。黑盒测试主要是为了发现以下几类错误:、

 1-是否有不正确或遗漏的功能

 2-在接口上,输入是否能正确的接受?能否输出正确的结果。

 3-是否有数据结构错误或外部信息(例如数据文件)访问错误

 4-性能上是否能够满足要求

 5-是否有初始化或终止性错误

 软件的白盒测试是对软件的过程性细节做细致的检查。这种方法是把测试对象看作一个打开的盒子,它允许测试人员利用程序内部的逻辑结构和有关信息,设计或者选择测试用例,对程序所有逻辑路径进行测试。通过在不同点检查程序状态,确定实际状态是否与预期的状态一直。因此白盒测试又称为结合测试或逻辑驱动测试。白盒测试主要是想对程序模块进行如下检查:

 1-对程序模块的所有独立的执行路径至少测试一遍。

 2-对所有的逻辑判定,取“真”与取“假”的两种情况都能至少测一遍。

 3-在循环的边界和运行的界限内执行循环体。

 4-测试内部数据结构的有效性,等等。

 

17、请详细介绍一下各种测试类型的含义

 1-单元测试(模块测试)是开发者编写的一小段代码,用于检验被测试代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。

 2-集成测试(也叫组装测试、联合测试)是单元测试的逻辑扩展。它最简单的形式是:两个已经经过测试的单元组合成一个组件,并且测试它们之间的接口。从这一层上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。

 3-系统测试是将经过测试的子系统装配成一个完整系统来测试。它是检验系统是否确实能提供系统方案说明书中制定功能的有效方法。(常见的联调测试)。系统测试的目的是对最终软件系统进行全面的测试,确保最终软件系统满足产品需求而遵循系统设计。

 4-验收测试是部署软件之前的最后一个测试操作。验收测试的目的是确保软件准备就绪,并且可以让用户将其执行软件的既定功能和任务。验收测试是向未来的用户表明系统能够像预订要求那样工作。经集成测试后,已经按照设计把所有的模块组装成一个完整的软件系统,接口错误也已经基本排除了,接着就应该进一步验证软件的有效性,这就是验收测试的任务,即软件的功能和性能如同用户所合理期待的那样。

 

18、测试计划工作的目的是什么?测试计划工作的内容都包括什么?其中哪些是最重要的?

 软件测试计划是知道测试过程的纲领性文件,包含了产品概述、测试策略、测试方法、测试区域、测试配置、测试周期、测试资源、测试交流、风险分析等内容。借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。

 测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。所以其中最重要的是测试策略和测试方法(最好能先评审)。

 

19、您认为做好测试计划工作的关键是什么?

 1-明确测试的目标,增强测试计划的实用性

 编写软件测试计划的重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件测试计划中的测试范围必须高度覆盖功能需求,测试方法必须切实可行,测试工具并且具有较高的实用性,便于使用,生成的测试结果准确

 2-坚持“5W”规则,明确内容与过程

 “5W”规则指的是“WHAT(做什么)”、“WHY(为什么做)”、"WHEN(何时做)"、"WHERE(在哪里)"、"HOW(如何做)"。利用“5W"规则创建软件测试计划,可以帮助测试团队理解测试的目的(WHY),明确测试的范围和内容(WHAT),确定测试的开始和结束日期(WHEN),指出测试的方法和工具(HOW),给出测试文档和软件存放的位置(WHERE)。

 3-采用评审和更新机制,保证测试计划满足实际需求

 测试计划完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。

 4-分别创建测试计划与测试详细规格、测试用例

 应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。

 

20、当开发人员说不是BUG时,你如何应付?

首先,将问题提交到缺陷管理库里面进行备案。

然后,要获取判断的依据和标准:

  • 根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;
  • 如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;
  • 根据用户的一般使用习惯,来确认是否是缺陷;
  • 与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;

合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。

等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。

 

21、什么是系统瓶颈?

 瓶颈主要是指整个软硬件构成的软件系统某一方面或者几个方面能力不能满足用户的特定业务要求,“特定”是指瓶颈会在某些条件下会出现,因为毕竟大多数系统在投入前。

 严格的从技术角度讲,所有的系统都会有瓶颈,因为大多数系统的资源配置不是协调的,例如CPU使用率刚好达到100%时,内存也正好耗尽的系统不是很多见。因此我们讨论系统瓶颈要从应用的角度讨论:关键是看系统能否满足用户需求。在用户极限使用系统的情况下,系统的响应仍然正常,我们可以认为改系统没有瓶颈或者瓶颈不会影响用户工作。

 因此我们测试系统瓶颈主要是实现下面两个目的:

 -发现“表面”的瓶颈。主要是模拟用户的操作,找出用户极限使用系统时的瓶颈,然后解决瓶颈,这是性能测试的基本目标。

 -发现潜在的瓶颈并解决,保证系统的长期稳定性。主要是考虑用户在将来扩展系统或者业务发生变化时,系统能够适应变化。满足用户目前需求的系统不是最好的,我们设计系统的目标是在保证系统整个软件生命周期能够不断适应用户的变化,或者通过简单扩展系统就可以适应新的变化。

 

22、文档测试主要包含什么内容?

 在国内软件开发管理中,文档管理几乎是最弱的一项,因而在测试工作中特别容易忽略文档测试也就不足为奇了。要想给用户提供完整的产品,文档测试是必不可少的。文档测试一般注重下面几个方面:

 文档的完整性:主要是测试文档内容的全面性与完整性,从总体上把握文档的质量。例如用户手册应该包括软件的所有功能模块。

 描述与软件实际情况的一致性:主要测试软件文档与软件实际的一致程度。例如用户手册基本完整后,我们还要注意用户手册与实际功能描述是否一致。因为文档往往跟不上软件版本的更新速度。

 易理解性:主要是检查文档对关键、重要的操作有无图文说明,文字、图表是否易于理解。对于关键、重要的操作仅仅只有文字说明肯定是不够的,应该附有图表使说明更为直观和明了。

 文档中提供操作的实例:这项检查内容主要针对用户手册。对主要功能和关键操作提供的应用实例是否丰富,提供的实例描述是否详细。只有简单的图文说明,而无实例的用户手册看起来就像是软件界面的简单拷贝,对于用户来说,实际上没有什么帮助。

 印刷与包装质量:主要是检查软件文档的商品化程度。有些用户手册是简单打印、装订而成,过于粗糙,不易于用户保存。优秀的文档例如用户手册和技术白皮书,应提供商品化包装,并且印刷精美。

 

23、功能测试用例需要详细到什么程度才是合格的?

 这个问题也是测试工程师经常问的问题。有人主张测试用例详细到每个步骤执行什么都要写出来,目的是即使一个不了解系统的新手都可以按照测试用例来执行工作。主张这类写法的人还可以举出例子:欧美、日本等软件外包文档都是这样做的。

 另外一种观点就是主张写的粗些,类似于编写测试大纲。主张这种观点的人是因为软件开发需求管理不规范,变动十分频繁,因而不能按照欧美的高标准来编写测试用例。这样的测试用例容易维护,可以让测试执行人员有更大的发挥空间。

 实际上,软件测试用例的详细程度首先要以覆盖到测试点为基本要求。举个例子:“用户登陆系统”的测试用例可以不写出具体的执行数据,但是至少要写出五种以上情况(),如果只用一句话覆盖了这个功能是不合格的测试用例。覆盖功能点不是指列出功能点,而是要写出功能点的各个方面(如果组合情况较多时可以采用等价划分)。

 另一个影响测试用例的就是组织的开发能力和测试对象特点。如果开发力量比较落后,编写较详细的测试用例是不现实的,因为根本没有那么大的资源投入,当然这种情况很随着团队的发展而逐渐有所改善。测试对象特点重点是指测试对象在进度、成本等方面的要求,如果进度较紧张的情况下,是根本没有时间写出高质量的测试用例的,甚至有些时候测试工作只是一种辅助工作,因而不编写测试用例。

 因此,测试用例的编写要根据测试对象特点、团队的执行能力等各个方面综合起来决定编写策略。最后要注意的是测试人员一定不能抱怨,力争在不断提高测试用例编写水平的同时,不断地提高自身能力。

 

24、配置和兼容性测试的区别是什么?

 配置测试的目的是保证软件在其相关的硬件上能够正常运行,而兼容性测试主要是测试软件能否与不同的软件正确协作。

 配置测试的核心内容就是使用各种硬件来测试软件的运行情况,一般包括:

 (1)软件在不同的主机上的运行情况,例如Dell和Apple;

 (2)软件在不同的组件上的运行情况,例如开发的拨号程序要测试在不同厂商生产的Modem上的运行情况;

 (3)不同的外设;

 (4)不同的接口;

 (5)不同的可选项,例如不同的内存大小;

 兼容性测试的核心内容:

 (1)测试软件是否能在不同的操作系统平台上兼容;

 (2)测试软件是否能在同一操作系统平台的不同版本上兼容;

 (3)软件本身能否向前或者向后兼容;

 (4)测试软件能否与其它相关的软件兼容;

 (5)数据兼容性测试,主要是指数据能否共享;

 配置和兼容性测试通称对开发系统类软件比较重要,例如驱动程序、操作系统、数据库管理系统等。具体进行时仍然按照测试用例来执行。

 

25、软件文档测试主要包含什么?

 随着软件文档系统日益庞大,文档测试已经成为软件测试的重要内容。文档测试对象主要如下:

 -包装文字和图形;

 -市场宣传材料、广告以及其它插页;

 -授权、注册登记表;

 -最终用户许可协议;

 -安装和设置向导;

 -用户手册;

 -联机帮助;

 -样例、示范例子和模板;

 -……

 文档测试的目的是提高易用性和可靠性,降低支持费用,因为用户通过文档就可以自己解决问题。因文档测试的检查内容主要如下:

 -读者对象——主要是文档的内容是否能让该级别的读者理解;

 -术语——主要是检查术语是否适合读者;

 -内容和主题——检查主题是否合适、是否丢失、格式是否规范等;

 -图标和屏幕抓图——检查图表的准确度和精确度;

 -样例和示例——是否与软件功能一致;

 -拼写和语法;

 -文档的关联性——是否与其它相关文档的内容一致,例如与广告信息是否一致;

 文档测试是相当重要的一项测试工作,不但要给予充分的重视,更要要认真的完成,象做功能测试一样来对待文档测试。

 

26、没有产品说明书和需求文档地情况下能够进行黑盒测试吗?

 这个问题是国内测试工程师经常遇到的问题,根源就是国内软件开发文档管理不规范,对变更的管理方法就更不合理了。实际上没有任何文档的时候,测试人员是能够进行黑盒测试的,这种测试方式我们可以称之为探索测试,具体做法就是测试工程师根据自己的专业技能、领域知识等不断的深入了解测试对象、理解软件功能,进而发现缺陷。

 在这种做法基本上把软件当成了产品说明书,测试过程中要和开发人员不断的进行交流。尤其在作项目的时候,进度压力比较大,可以作为加急测试方案。最大的风险是不知道有些特性是否被遗漏。

 

27、在配置测试中,如何判断发现的缺陷是普通问题还是特定的配置问题?

 在进行配置测试时,测试工程师仍然会发现一些普通的缺陷,也就是与配置环境无关的缺陷。因此判断新发现的问题,需要在不同的配置中重新执行发现软件缺陷的步骤,如果软件缺陷不出现了,就可能是配置缺陷;如果在所有的配置中都出现,就可能是普通缺陷。

 需要注意的是,配置问题可以在一大类配置中出现。例如,拨号程序可能在所有的外置Modem中都存在问题,而内置的Modem不会有任何问题。

 

28、完全测试程序是可能的吗?

 软件测试初学者可能认为拿到软件后需要进行完全测试,找到全部的软件缺陷,使软件“零缺陷”发布。实际上完全测试是不可能的。主要有以下一个原因:

 -完全测试比较耗时,时间上不允许;

 -完全测试通常意味着较多资源投入,这在现实中往往是行不通的;

 -输入量太大,不能一一进行测试;

 -输出结果太多,只能分类进行验证;

 -软件实现途径太多;

 -软件产品说明书没有客观标准,从不同的角度看,软件缺陷的标准不同;

 因此测试的程度要根据实际情况确定。

 

29、软件测试的风险主要体现在哪里?

 我们没有对软件进行完全测试,实际就是选择了风险,因为缺陷极有可能存在没有进行测试的部分。举个例子,程序员为了方便,在调试程序时会弹出一些提示信息框,而这些提示只在某种条件下会弹出,碰巧程序发布前这些代码中的一些没有被注释掉。在测试时测试工程师又没有对其进行测试。如果客户碰到它,这将是代价昂贵的缺陷,因为交付后才被客户发现。

 因此,我们要尽可能的选择最合适的测试量,把风险降低到最小。

 

30、发现的缺陷越多,说明软件缺陷越多吗?

 这是一个比较常见的现象。测试工程师在没有找到缺陷前会绞尽脑汁的思考,但是找到一个后,会接二连三的发现很多缺陷,颇有个人成就感。其中的原因主要如下:

 -代码复用、拷贝代码导致程序员容易犯相同的错误。类的继承导致所有的子类会包含基类的错误,反复拷贝同一代码意味可能也复制了缺陷。

 -程序员比较劳累是可以导致某些连续编写的功能缺陷较多。程序员加班是一种司空见惯的现象,因此体力不只时容易编写一些缺陷较多的程序。而这些连续潜伏缺陷恰恰时测试工程师大显身手的地方。

 “缺陷一个连着一个”不是一个客观规律,只是一个常见的现象。如果软件编写的比较好,这种现象就不常见了。测试人员只要严肃认真的测试程序就可以了。

 

31、所有的软件缺陷都能修复吗?所有的软件缺陷都要修复吗?

 从技术上讲,所有的软件缺陷都是能够修复的,但是没有必要修复所有的软件缺陷。测试人员要做的是能够正确判断什么时候不能追求软件的完美。对于整个项目团队,要做的是对每一个软件缺陷进行取舍,根据风险决定那些缺陷要修复。发生这种现象的主要原因如下:

 -没有足够的时间资源。在任何一个项目中,通常情况下开发人员和测试人员都是不够用的,而且在项目中没有预算足够的回归测试时间,再加上修改缺陷可能引入新的缺陷,因此在交付期限的强大压力下,必须放弃某些缺陷的修改。

 -有些缺陷只是特殊情况下出现,这种缺陷处于商业利益考虑,可以在以后升级中进行修复。

 -不是缺陷的缺陷。我们经常会碰到某些功能方面的问题被当成缺陷来处理,这类问题可以以后有时间时考虑再处理。

 最后要说的是,缺陷是否修改要由软件测试人员、项目经理、程序员共同讨论来决定是否修复,不同角色的人员从不同的角度来思考,以做出正确的决定。

 

32、软件测试人员就是QA吗?

 软件测试人员的职责是尽可能早的找出软件缺陷,确保得以修复。而质量保证人员(QA)主要职责是创建或者制定标准和方法,提高促进软件开发能力和减少软件缺陷。测试人员的主要工作是测试,质量保证人员日常工作重要内容是检查与评审,测试工作也是测试保证人员的工作对象。

 软件测试和质量是相辅相成的关系,都是为了提高软件质量而工作。

 

33、测试产品与测试项目的区别是什么?

 习惯上把开发完成后进行商业化、几乎不进行代码修改就可以售给用户使用的软件成为软件产品,也就是可以买“卖拷贝”的软件,例如Windows2000。而通常把针对一个或者几个特定的用户而开发的软件成为软件项目,软件项目是一种个性化的产品,可以是按照用户要求全部重新开发,也可以修改已有的软件产品来满足特定的用户需求。项目和产品的不同特点,决定我们测试产品和测试项目仍然会有很多不同的地方:

 -质量要求不同。通常产品的质量要高一些,修复发布后产品的缺陷成本较高,甚至会带来很多负面的影响。而做项目通常面向某一用户,虽然质量越高越好,但是一般只要满足用户要求就可以了。

 -测试资源投入多少不同。做软件产品通常是研发中心来开发,进度压力要小些。同时由于质量要求高,因此会投入较多的人力、物力资源。

 -项目最后要和用户共同验收测试,这是产品测试不具有的特点。

 此外,测试产品与测试项目在缺陷管理方面、测试策略制定都会有很大不同,测试管理者应该结合具体的环境,恰如其分的完成工作。

 

34、和用户共同测试(UAT测试)的注意点有哪些?

 软件产品在投产前,通常都会进行用户验收测试。如果用户验收测试没有通过,直接结果就是那不到“Money”,间接影响是损害了公司的形象,而后者的影响往往更严重。根据作者的经验,用户验收测试一定要让用户满意。

 实际上用户现场测试更趋于是一种演示。在不欺骗用户的前提下,我们向用户展示我们软件的优点,最后让“上帝”满意并欣然掏出“银子”才是我们的目标。因此用户测试要注意下面的事项:

 (1)用户现场测试不可能测试全部功能,因此要测试核心功能。这需要提前做好准备,这些核心功能一定要预先经过测试,证明没有问题才可以和用户共同进行测试。测试核心模块的目的是建立用户对软件的信心。当然如果这些模块如果问题较多,不应该进行演示。

 (2)如果某些模块确实有问题,我们可以演示其它重要的业务功能模块,必要时要向用户做成合理的解释。争得时间后,及时修改缺陷来弥补。

 (3)永远不能欺骗用户,蒙混过关。道理很简单,因为软件是要给用户用的,问题早晚会暴露出来,除非你可以马上修改。

 和用户进行测试还要注意各种交流技巧,争取不但短期利益得到了满足,还要为后面得合作打好基础。

 

35、如何编写提交给用户的测试报告?

 随着测试工作越来越受重视,开发团队向客户提供测试文档是不可避免的事情。很多人会问:“我们可以把工作中的测试报告提供给客户吗?”答案是否定的。因为提供内部测试报告,可能会让客户失去信心,甚至否定项目。

 测试报告一般分为内部测试报告和外部测试报告。内部报告是我们在测试工作中的项目文档,反映了测试工作的实施情况,这里不过多讨论,读者可以参考相关教材。这里主要讨论一下外部测试报告的写法,一般外部测试报告要满足下面几个要求:

 -根据内部测试报告进行编写,一般可以摘录;

 -不可以向客户报告严重缺陷,即使是已经修改的缺陷,开发中的缺陷也没有必要让客户知道;

 -报告上可以列出一些缺陷,但必须是中级的缺陷,而且这些缺陷必须是修复的;

 -报告上面的内容尽量要真实可靠;

 -整个测试报告要仔细审阅,力争不给项目带来负面作用,尤其是性能测试报告。

 总之,外部测试报告要小心谨慎的编写。

 

36、常见的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试用例设计工作中的应用。

 1-等价类划分

 常见的软件测试面试题划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.

 2-边界值分析法

 边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.

 使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.

 3-错误推测法

 基于经验和直觉推测程序中所有可能存在的各种错误, 从而有针对性的设计测试用例的方法.

 错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例-例如, 在单元测试时曾列出的许多在模块中常见的错误-以前产品测试中曾经发现的错误等, 这些就是经验的总结。还有, 输入数据和输出数据为0的情况。输入表格为空格或输入表格只有一行-这些都是容易发生错误的情况。可选择这些情况下的例子作为测试用例.

 4-因果图方法

 前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系, 相互组合等-考虑输入条件之间的相互组合,可能会产生一些新的情况-但要检查输入条件的组合不是一件容易的事情, 即使把所有输入条件划分成等价类,他们之间的组合情况也相当多-因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例-这就需要利用因果图(逻辑模型)-因果图方法最终生成的就是判定表-它适合于检查程序输入条件的各种组合情况.

 5-正交表分析法

 有时候,可能因为大量的参数的组合而引起测试用例数量上的激增,同时,这些测试用例并没有明显的优先级上的差距,而测试人员又无法完成这么多数量的测试,就可以通过正交表来进行缩减一些用例,从而达到尽量少的用例覆盖尽量大的范围的可能性。

 6-场景分析方法

 指根据用户场景来模拟用户的操作步骤,这个比较类似因果图,但是可能执行的深度和可行性更好。

 

37、您认为做好测试用例设计工作的关键是什么?

 白盒测试用例设计的关键是以较少的用例覆盖尽可能多的内部程序逻辑结果

 黑盒法用例设计的关键同样也是以较少的用例覆盖模块输出和输入接口。不可能做到完全测试,以最少的用例在合理的时间内发现最多的问题

 

38、详细的描述一个测试活动完整的过程。

 1-项目经理通过和客户的交流,完成需求文档,由开发人员和测试人员共同完成需求文档的评审,评审的内容包括:需求描述不清楚的地方和可能有明显冲突或者无法实现的功能的地方。项目经理通过综合开发人员,测试人员以及客户的意见,完成项目计划。然后sqa进入项目,开始进行统计和跟踪

 2-开发人员根据需求文档完成需求分析文档,测试人员进行评审,评审的主要内容包括是否有遗漏或者双方理解不同的地方。测试人员完成测试计划文档,测试计划包括的内容上面有描述。

 3-测试人员根据修改好的需求分析文档开始写测试用例,同时开发人员完成概要设计文档,详细设计文档。此两份文档成为测试人员撰写测试用例的补充材料。

 4-测试用例完成后,测试和开发需要进行评审。

 5-测试人员搭建环境

 6-开发人员提交第一个版本,可能存在未完成功能,需要说明。测试人员进行测试,发现bug后提交给bugzilla。

 7-开发提交第二个版本,包括bug fix以及增加了部分功能,测试人员进行测试。

 8-重复上面的工作,一般是3-4个版本后bug数量减少,达到出货的要求。

 9-如果有客户反馈的问题,需要测试人员协助重现以及回归测试。

 

39、以往是否曾经从事过性能测试工作?请尽可能的详细描述您以往的性能测试工作的完整过程。

 曾经做过一套网管系统的性能测试,主要测试该软件在同时管理大量终端的情况下,在响应时间,cpu/磁盘/内存等参数是否满足要求。

 也曾经做过软交换系统的呼叫性能测试,主要是测试软交换系统在有大量呼叫的情况下,响应时间,呼叫成功率,cpu/磁盘/内存等参数是否满足设计要求。

 

40、在您以往的工作中,一条软件缺陷(或者叫bug)记录都包含了哪些内容?如何提交高质量的软件缺陷(bug)记录?

一条Bug记录最基本应包含:

bug编号;
bug严重级别,优先级;
bug产生的模块;
首先要有bug摘要,阐述bug大体的内容;
bug对应的版本;
bug详细现象描述,包括一些截图、录像....等等;
bug出现时的测试环境,产生的条件即对应操作步骤;
高质量的Bug记录:
1) 通用UI要统一、准确
缺陷报告的UI要与测试的软件UI保持一致,便于查找定位。
2) 尽量使用业界惯用的表达术语和表达方法
使用业界惯用的表达术语和表达方法,保证表达准确,体现专业化。
3) 每条缺陷报告只包括一个缺陷
每条缺陷报告只包括一个缺陷,可以使缺陷修正者迅速定位一个缺陷,集中精力每次只修正一个缺陷。校验者每次只校验一个缺陷是否已经正确修正。
4) 不可重现的缺陷也要报告
首先缺陷报告必须展示重现缺陷的能力。不可重现的缺陷要尽力重现,若尽力之后仍不能重现,仍然要报告此缺陷,但在报告中要注明无法再现,缺陷出现的频率。
5) 明确指明缺陷类型
根据缺陷的现象,总结判断缺陷的类型。例如,即功能缺陷、界面缺陷、数据缺陷,合理化建议这是最常见的缺陷或缺陷类型,其他形式的缺陷或缺陷也从属于其中某种形式。
6) 明确指明缺陷严重等级和优先等级
时刻明确严重等级和优先等级之间的差别。高严重问题可能不值得解决,小装饰性问题可能被当作高优先级。
7) 描述 (Description) ,简洁、准确,完整,揭示缺陷实质,记录缺陷或缺陷出现的位置
描述要准确反映缺陷的本质内容,简短明了。为了便于在软件缺陷管理数据库中寻找制定的测试缺陷,包含缺陷发生时的用户界面(UI)是个良好的习惯。
例如记录对话框的标题、菜单、按钮等控件的名称。
8) 短行之间使用自动数字序号,使用相同的字体、字号、行间距
短行之间使用自动数字序号,使用相同的字体、字号、行间距,可以保证各条记录格式一致,做到规范专业。
9) 每一个步骤尽量只记录一个操作
保证简洁、条理井然,容易重复操作步骤。
10) 确认步骤完整,准确,简短
保证快速准确的重复缺陷,“完整”即没有缺漏,“准确”即步骤正确,“简短”即没有多余的步骤。
11) 根据缺陷,可选择是否进行图象捕捉
为了直观的观察缺陷或缺陷现象,通常需要附加缺陷或缺陷出现的界面,以图片的形式作为附件附着在记录的“附件”部分。为了节省空间,又能真实反映缺陷或缺陷本质,
可以捕捉缺陷或缺陷产生时的全屏幕,活动窗口和局部区域。为了迅速定位、修正缺陷或缺陷位置,通常要求附加中文对照图。
 附加必要的特殊文档和个人建议和注解
如果打开某个特殊的文档而产生的缺陷或缺陷,则必须附加该文档,从而可以迅速再现缺陷或缺陷。有时,为了使缺陷或缺陷修正者进一步明确缺陷或缺陷的表现,
可以附加个人的修改建议或注解。
12) 检查拼写和语法缺陷
在提交每条缺陷或缺陷之前,检查拼写和语法,确保内容正确,正确的描述缺陷。
13) 尽量使用短语和短句,避免复杂句型句式
软件缺陷管理数据库的目的是便于定位缺陷,因此,要求客观的描述操作步骤,不需要修饰性的词汇和复杂的句型,增强可读性。
以上概括了报告测试缺陷的规范要求,随着软件的测试要求不同,测试者经过长期测试,积累了相应的测试经验,将会逐渐养成良好的专业习惯,不断补充新的规范书写要求。
此外,经常阅读、学习其他测试工程师的测试缺陷报告,结合自己以前的测试缺陷报告进行对比和思考,可以不断提高技巧。
14) 缺陷描述内容
缺陷描述的内容可以包含缺陷操作步骤,实际结果和期望结果。操作步骤可以方便开发人员再现缺陷进行修正,有些开发的再现缺陷能力很差,虽然他明白你所指的缺陷,
但就是无法再现特别是对系统不熟悉的新加入开发人员,介绍步骤可以方便他们再现。实际结果可以让开发明白错误是什么,期望结果可以让开发了解正确的结果应该是如何。

 

41、您在从事性能测试工作时,是否使用过一些测试工具?如果有,请试述该工具的工作原理,并以一个具体的工作中的例子描述该工具是如何在实际工作中应用的。

 测试网管系统中,使用的mimic来模拟终端,能够大量的节省成本。

 测试软交换系统的时候,使用的prolab来模拟终端并发送呼叫软交换,他完成了同时数百人才能完成的摘机拨号工作,

    主要工作原理是产生一些符合要求的ip包并发送给软交换系统,同时对软交换系统的回应进行处理,决定下一步动作。

 

42、您认为性能测试工作的目的是什么?做好性能测试工作的关键是什么?

 主要是保障在大量用户的情况下,服务能正常使用。

 

43、给你一个网站,你如何测试?

首先,查找需求说明、网站设计等相关文档,分析测试需求。

制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:功能性测试;界面测试;性能测试;数据库测试;安全性测试;兼容性测试

设计测试用例:

功能性测试可以包括,但不限于以下几个方面:

  • 链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回。
  • 提交功能的测试。
  • 多媒体元素是否可以正确加载和显示。
  • 多语言支持是否能够正确显示选择的语言等。

界面测试可以包括但不限于一下几个方面:

  • 页面是否风格统一,美观
  • 页面布局是否合理,重点内容和热点内容是否突出
  • 控件是否正常使用
  • 对于必须但未安装的控件,是否提供自动下载并安装的功能
  • 文字检查

性能测试一般从以下两个方面考虑:

压力测试;负载测试;强度测试

数据库测试要具体决定是否需要开展。数据库一般需要考虑连结性,对数据的存取操作,数据内容的验证等方面。

安全性测试

  • 基本的登录功能的检查
  • 是否存在溢出错误,导致系统崩溃或者权限泄露
  • 相关开发语言的常见安全性问题检查,例如SQL注入等
  • 如果需要高级的安全性测试,确定获得专业安全公司的帮助,外包测试,或者获取支持

兼容性测试,根据需求说明的内容,确定支持的平台组合:

  • 浏览器的兼容性;
  • 操作系统的兼容性;
  • 软件平台的兼容性;
  • 数据库的兼容性

开展测试,并记录缺陷。合理的安排调整测试进度,提前获取测试所需的资源,建立管理体系(例如,需求变更、风险、配置、测试文档、缺陷报告、人力资源等内容)。

定期评审,对测试进行评估和总结,调整测试的内容。

 

44、BUG管理工具的跟踪过程(用BugZilla为例子)

测试人员发现了BUG,提交到Bugzilla中,状态为new,BUG的接受者为开发接口人员

开发接口将BUG分配给相关的模块的开发人员,状态修改为已分配,开发人员和测试确认BUG,如果是本人的BUG,则设置为接收;如果是别的开发人员的问题,

则转发出去,由下一个开发人员来进行此行为;如果认为不是问题,则需要大家讨论并确认后,拒绝这个BUG,然后测试人员关闭此问题。

如果开发人员接受了BUG,并修改好以后,将BUG状态修改为已修复,并告知测试在哪个版本中可以测试。

测试人员在新版本中测试,如果发现问题依然存在,则拒绝验证;如果已经修复,则关闭BUG。

 

45.TCP和UDP协议的区别? ==》

1、udp是无连接的,tcp是面向连接的
2、udp是不可靠传输,tcp是可靠传输
3、udp是面向报文传输,tcp是面向字节流传输。

 

46、get和post的区别 ==》 【超级重点】
1)get请求的的入参是在URL地址栏当中的
2)post请求的入参是在body当中的
3)post请求方法比get请求方法要安全,并且携带的数据会更多
4)post请求方法一般用于表单提交或者向服务器提交数据,get请求用来查询会比较多

 

47、你怎么判断一个bug是前端还是后端 
1)我首先会通过fiddler或者谷歌浏览器F12开发者调试模式去抓取接口,如果接口的入参没有问题,并且返回的报文也没有问题,那说明就是一个前端的bug,有可能是JavaScript代码的语法问题,或者页面渲染的问题,或者样式问题导致的
2)如果接口的入参没有问题,但是接口的返回报文出现了报错那说明就是后端的bug,至于是什么原因导致的,我一般都会通过xshell去连接Linux服务器,查看实时的日志去分析日志然后定位bug

 

48、http和https的区别 ==》https协议属于超文本传输加密协议需要到CA申请证书,一般免费证书较少,需要钱,http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议,http和https用的端口也不一样,前者是80,后者是443,http的连接很简单,是无状态的,HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议。

 

49、b/s架构和c/s架构区别

对比C/S与B/S的不同。

C/S架构的优点:

1 C/S架构的界面和操作可以很丰富。(客户端操作界面可以随意排列,满足客户的需要)

2 安全性能可以很容易保证。(因为只有两层的传输,而不是中间有很多层。

3 由于只有一层交互,因此响应速度较快。(直接相连,中间没有什么阻隔或岔路,比如QQ,每天那么多人在线,也不觉得慢)

C/S架构的缺点:

可以将QQ作为类比:

1 适用面窄,通常用于局域网中。

2 用户群固定。由于程序需要安装才可使用,因此不适合面向一些不可知的用户。

3 维护成本高,发生一次升级,则所有客户端的程序都需要改变。

B/S架构的优点:

1、客户端无需安装,有Web浏览器即可。 
2、BS架构可以直接放在广域网上,通过一定的权限控制实现多客户访问的目的,交互性较强。 
3、BS架构无需升级多个客户端,升级服务器即可。可以随时更新版本,而无需用户重新下载啊什么的。

B/S架构的缺点:

1、在跨浏览器上,BS架构不尽如人意。 
2、表现要达到CS程序的程度需要花费不少精力。 
3、在速度和安全性上需要花费巨大的设计成本,这是BS架构的最大问题。 
4、客户端服务器端的交互是请求-响应模式,通常需要刷新页面,这并不是客户乐意看到的。(在Ajax风行后此问题得到了一定程度的缓解)

 

何种情况应该用C/S架构,何种情况用B/S架构。它们之间的优缺点是什么。

日常生活中哪个是C/S架构的,哪个又是B/S架构的。

C/S:QQ;LOL;各种电脑上安装的软件,

B/S:一刀999血,很多网游等

发展前景

1、 C/S和B/S各有优势,C/S在图形的表现能力上以及运行的速度上肯定是强于B/S模式的,不过缺点就是他需要运行专门的客户端,而且更重要的是它不能跨平台,用c++在windows下写的程序肯定是不能在linux下跑的。但是比B/S安全

2、B/S模式就,它不需要专门的客户端,只要浏览器,而浏览器是随操作系统就有的,方便就是他的优势了。 而且,B/S是基于网页语言的、与操作系统无关,所以跨平台也是它的优势,而且以后随着网页语言以及浏览器的进步, B/S在表现能力上的处理以及运行的速度上会越来越快,它的缺点将会越来越少。尤其是HTML5的普及,在图形的渲染方面以及音频、文件的处理上已经非常强大了。 不过,C/S架构也有着不可替代的作用。

老刘认为:将来将是B/S架构的世界,电脑只要有一个浏览器既可以,不需要安装软件

因为:

1、分布性:可以随时随地进行查询和浏览等业务;

2、功能业务扩展比较方便:增加服务器的功能,就能增加浏览器端的功能;

3、维护简单方便:改变服务器端数据即可以实现所有用户同步更新;

4、开发简单,共享性强,成本低,数据可以持久存储在服务器端而不必担心数据的丢失

 

50、输入url到页面加载都发生了什么事情?

输入url到页面加载整体流程概况如下:

1、浏览器的地址栏输入URL并按下回车。

2、浏览器查找当前URL的DNS缓存记录。

3、DNS解析URL对应的IP。

4、根据IP建立TCP连接(三次握手)。

5、HTTP发起请求。

6、服务器处理请求,浏览器接收HTTP响应。

7、渲染页面,构建DOM树。

8、关闭TCP连接(四次挥手)。

 

51、Cookie和Session的区别与联系
Cookie和Session都是会话技术,Cookie是运行在客户端,Session是运行在服务器端。
Cookie有大小限制以及浏览器在存cookie的个数也有限制,Session是没有大小限制和服务器的内存大小有关。
Cookie有安全隐患,通过拦截或本地文件找得到你的cookie后可以进行攻击。
Session是保存在服务器端上会存在一段时间才会消失,如果session过多会增加服务器的压力。

 

52、白盒、黑盒和灰盒测试区别

黑盒和灰盒的区别:
  如果某软件包含多个模块,当使用黑盒测试时,你只要关心整个软件系统的边界,无需关心软件系统内部各个模块之间如何协作。而如果使用灰盒测试,则需要关心模块与模块之间的交互。
白盒和灰盒的区别:
  在灰盒测试中,你无需关心模块内部的实现细节,对于软件系统的内部模块,灰盒测试依然把它当成一个黑盒来看待。而白盒测试还需要再深入地了解内部模块的实现细节和各个分支。

 

53、说说你之前公司的研发管理流程/测试流程

产品经理整理需求文档、绘制产品原型,并组织产品、开发、测试相关人员召开需求评审会议。

评审之后,开发人员开始编写代码,并进行单元测试;测试人员同步开始编写测试用例、评审测试用例。

开发完成后提测,部署到测试环境,测试人员开始测试,包括集成测试、系统测试等等。测试完成后,对测试结果进行分析,编写测试报告,最后产品发版/上线。

上线后持续关注线上产品是否正常运行。

 

54、app闪退是有那些原因造成的

1.缓存垃圾过多
由于安卓系统的特性,如果长时间不清理垃圾文件.会导致越来越卡.也会出现闪退情况.

运行的程序过多,导致内存不足
3.应用版本兼容问题
如果应用版本太低,会导致不兼容,造成闪退。此外,有些新版本在调试中,也会造成应用闪退。
4… 检查APP中访问网络的地方,组件中的ImageView是否可以正常的下载并显示到app 页面上。
5.检查APP的sdk和手机的系统是否兼容。
6.在一些特定情况下的闪退,比如播放视频,在Android5.0 升级到Android6.0的时候,有些系统API老版本有,新版本没有,到时回去对象的时候失败,报空,

系统就会出现闪退问题.
二.常见的解决方案
1.缓存垃圾过多
可通过“设置”中清除应用缓存的方式解决
2.内存不足
可尝试关闭其他暂时不用的软件
3.兼容性问题
3.1应用版本兼容性问题
如果是版本太低,可升级版本即可:如果是新版本闪退,可能还在调式,需卸载安装旧的版本使用
3.2APP中的SDK和手机的兼容性问题
需要原生端相关人员,设置SDK的最低兼容系统版本

3.迭代器 和生成器 的区别?
迭代器 ==》有两个基本的方法:iter() 和 next()。字符串,列表,元组对象都可用于创建迭代器
生成器 ==》使用了 yield 的函数被称为生成器(generator)。
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
调用一个生成器函数,返回的是一个迭代器对象。
4.闭包是什么,闭包的原理是什么?有没有写过?
闭包的原理:闭包就是能够读取其他函数内部变量的函数,保存外部函数的变量,而且必须为嵌套函数,内部函数必须使用了外部函数的变量或者参数,外部函数返回内部函数 这个使用了外部函数变量的内部函数称为闭包

复制代码
def log(func):
    '''就是在一个函数里面定义了一个新的函数,这个新的内部函数可以引用外部函数的参数
    和局部变量,当外部函数返回内部函数的时候,相关的参数和变量都保存在返回的参数中这种就称为闭包'''
    def wrapper(*args,**kw):
        print('call %s:' % func.__name__)
        return func(*args,**kw)
    return wrapper

@log
def now():
    print('2021-11-15')

now()
复制代码

5.深拷贝和浅拷贝有啥区别?   ==》
深拷贝:deepcopy,会开辟新的内存地址,深拷贝直接拷贝对象到内存中一块区域,然后把新对象的指针指向这块内存,复制的对象指向了新的地址
浅拷贝:copy,不会开辟新的内存地址,浅拷贝并不拷贝对象本身,只是对指向对象的指针进行拷贝,复制的对象和原对象都指向同一个地址
6.数据库事务  ==》数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。
1.原子性atomicity
事务中包括的操作要么都做,要么都不做。
2.一致性consistency
一个事务独立执行的结果,将保持数据一致性。如:增减平衡
3. 隔离性isolation
一个事务的执行不能被其他事务干扰。
4. 持久性durability
持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就必须是永久性的。
事务(Transaction)是一系列的数据库操作,简而言之就是就是一个操作序列。可以是一条SQL语句,一组SQL语句或整个程序;一个应用程序通常包含多个事务。 
BEGIN TRANSACTION   事务的开始。
END TRANSACTION  事务的结束
COMMIT   事务提交。事务成功执行,即通知事务管理器该事务所有操作现在可以被提交或者永久保存。
ROLLBACK   事务回滚。事务执行失败,即通知事务管理器该事务出故障了,数据库可能处于不一致的状态,该事务所有更新操作必须撤销或者回滚。
举例:账户A转入账户B 金额X元

复制代码
BEGIN TRANSACTION 
   read(A);
 A=A-x;
 IF (A<0) then 
        Print(“余额不足”)
ROLLBACK;
   ELSE
       write(A);
       read(B);
       B=B+x 
       write(A);
       COMMIT;
    ENDIF;
END TRANSACTION 
复制代码

7.线程和进程的关系及区别  ==》进程:指在系统中能独立运行并作为资源分配的基本单位,进程一般有三个状态:就绪状态、执行状态和等待状态【或称阻塞状态】
线程:线程是进程中的一个实体,它是系统调度和分派的基本单位。线程是进程内的一个相对独立的可执行的单元
进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,进程包含多个线程在运行。
在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。

8.get和post的区别 ==》 【超级重点】
1)get请求的的入参是在URL地址栏当中的
2)post请求的入参是在body当中的
3)post请求方法比get请求方法要安全,并且携带的数据会更多
4)post请求方法一般用于表单提交或者向服务器提交数据,get请求用来查询会比较多
9.你怎么判断一个bug是前端还是后端  ==》
1)我首先会通过fiddler或者谷歌浏览器F12开发者调试模式去抓取接口,如果接口的入参没有问题,并且返回的报文也没有问题,那说明就是一个前端的bug,有可能是JavaScript代码的语法问题,或者页面渲染的问题,或者样式问题导致的
2)如果接口的入参没有问题,但是接口的返回报文出现了报错那说明就是后端的bug,至于是什么原因导致的,我一般都会通过xshell去连接Linux服务器,查看实时的日志去分析日志然后定位bug
10.元组和列表的区别?
1)元组是不可变的基本数据类型、列表是可变的基本数据类型
2)元组是()小括号来定义的、列表是用中括号[]来定义的
3)元组的处理速度会列表要快
4)元组比列表要更加的安全
5)列表里面自带的函数比元组要多、比如有append、extend、pop、remove、count等等函数
11.列表和字典的区别?
1)字典是{}大括号来定义的、列表是用中括号[]来定义的
2)字典是无序的不能通过索引来取值、列表是有序的
3)字典是以键值对的形式存在的、列表相当于就是一个容器、里面可以放置任何的数据类型
12.unittest单元测试框架里面失败重跑机制 ==》用@ rerun 装饰器
unittestreport 的安装:
pip install unittestreport
unittest 重运行机制,unittestreport 中提供了两种方式,第一种选择单个测试用例实现重运行,可以自己去标记失败需要重运行的测试用例,第二种是针对运行的所有的测试用例,只要运行失败的用例就会重运行改用例。
单个用例重运行
如果像标记单个测试用例失败重运行,可以直接使用 unittestreport 中的 rerun 来标记测试用例,rerun 接收两个参数 count,和 interval。
count:用来指定用例失败重运行的次数
interval:指定每次重运行的时间间隔
下面有三个测试用例,其中有一个 test_case_01 使用了 rerun 进行了标记,设置的失败重运行次数为 4 次,每次间隔的时间 2 秒。 
13.python中的数据类型  ==》字符串、Number、元组、列表、字典、集合等等
14.你认为是一个bug、开发认为不是、你怎么处理  ==》看需求深入了解需求,和开发一起讨论,看是否是双方对于需求理解有出入,如果没有的话我就会守着开发去修复这个bug,如果还是没有用的话我就向上级反馈这个问题,让测试经理帮忙去推动这个问题的处理。
15.Jmeter怎么做关联接口 ==》先调通登录接口,然后把响应体的内容,通过正则提取呀,或者json path提取器进行提取,然后再添加一个http信息头管理期在里面用键为:token   值为:${token}进行引用,然后在下一个接口的请求头里面就自带token参数了。 
16.http和https的区别 ==》https协议属于超文本传输加密协议需要到CA申请证书,一般免费证书较少,需要钱,http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl/tls加密传输协议,http和https用的端口也不一样,前者是80,后者是443,http的连接很简单,是无状态的,HTTPS协议是由SSL/TLS+HTTP协议构建的可进行加密传输、身份认证的网络协议。
17.长连接和短连接的区别 ==》短连接:就是客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。当客户端浏览器访问的某个HTML或其他类型的Web页中包含有其他的Web资源,每遇到这样一个Web资源,浏览器就会重新建立一个HTTP会话。
长连接:从HTTP/1.1起,在响应头加入这行代码Connection:keep-alive,在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接需要客户端和服务端都支持长连接,HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。
18.将一个对象转换为json字符串  ==》将对象转换为字符串 用json.dumps函数
19.性能测试的bug有哪些?  ==》https://www.cnblogs.com/xiaoshubass/p/15562467.html 
20.APP的弱网测试怎么测? ==》用fiddler 来模拟弱网测试
比如在fiddler里面设置限制上传和下载的速度
通过模拟5g 4g 3g 2g WiFi网络频段来进行APP端的弱网测试、看一下是否会有数据丢包的现象。
21.会接口里面的mock吗? ==》mock  就是在测试环境不稳定的时候提起把接口的返回提前写好放入mock server系统 
当调用接口的时候就不在访问测试环境的接口、直接调用mock server系统中的mock接口来达到测试依赖或者关联接口的测试。
22.左连接和右连接的区别
23.字典和JSon的区别  ==》字典是无序的,是Python的基本数据类型,json是json字符串,json和字典的表现形式看起来差不多,字典可以通过
24.还有用到哪些装饰器,装饰器的作用,装饰器你是怎么用的  ==》@ddt  @data  @classmethod  @staticmethod  @property
25.多线程怎么设置  ==》用threading模块
26.对一个列表有相同的元素去重有哪些方法【重点】

复制代码
1.set集合
list1 = ['test','dcs13',888,666,'test']
set1 = set(list1)
print(set1)

#2.通过for循环
list1 = ['test','dcs13',888,666,'test']
new=[]
for i in list1:
    if i not in new:
        new.append(i)
print(new)
复制代码

27.APP和web端测用的多,APP和web端测试的区别?  ==》https://www.cnblogs.com/xiaoshubass/p/12872636.html
28.你每个接口都需要断言还是每个接口用例需要断言   ==》断言用assert True、assert False、和unittest单元测试框架里面的self.assertEqual
29.python 方面  is 和== 区别   ==》   ==是用来比较判断两个对象的value(值)是否相等,is是用来比较id是否相同
30. http://localhost:8888/select?page=3  设计接口用例   浮点
31. 海康经典面试题:往数据库插入11条数据,接口返回10条,前端页面只显示9条数据,定位是什么问题,是前端还是后端bug
答:如果往数据库插入11条数据,数据库也显示11条数据且是自己插入的数据,说明数据库这块是没有问题的,那么此时我用fiddler或者谷歌浏览器F12开发者工具去抓包看看接口是否返回11条数据,此时接口如果只返回了10条数据,我会看一下接口是不是有做分页处理,如果没有分页处理,然后接口总的返回数据也都是10条的话,那说明这就是一个后端的接口的bug了,然后我再看一下前端页面,如果前端页面没有分页总的数据也只显示了9条,那说明通过调后端接口返回的数据,前端页面没有正常的渲染,说明前端页面也是出现了bug的,所以得出结论前端页面和后端接口都是有bug的!!
32.性能测试中的每次处理的事务数==》这个事务指的是什么?==》下面2个图不同的流程但是指的都是1个事务==》TPS指的就是每秒或者说单位
时间内能处理的事务数量  

 

1.自我介绍

2.项目介绍 要负责哪一块.哪些场果用到uI自动化.xx模块的具体功能
3. 做ui自动化的流程
4. xpath定位不到用什么定位的?

5.购买6年的医疗险和购买8年有什么区别?

寿险险的话:
现金价值不一样,8年再退保所退的费用比6年的要多

医疗险的话:

1.保费会递减
2.保险责任会增加
3.保险条款有所更新
4.去年投保的会增加新冠疫苗的保险责任

6.理赔这块有什么区别呢?  ==》理赔不是我负责的 ==》项目很大,分开分的比较细

7.把Unicode转换为字符串

text ='\u9500\u552e'
text.encode('utf-8').decode("unicode_escape")
print(type(text),text)

8.如何将order对象转换成一个json字符串。

复制代码
from datetime import datetime
import json
class Order(object):

    def __init__(self):
        self.dict1={}   #定义一个空的字典来把实例变量转进字典里面
        self.name = 'order name'
        self.price = 100
        self.create_date = datetime.now()

    def get_value(self):
        '''封装把实例变量装进一个字典里面'''
        self.dict1['name'] = self.name
        self.dict1['price'] = self.price
        self.dict1['create_date'] = str(self.create_date)
        return json.dumps(self.dict1)  #通过json.dumps把self.dict1这个字典转换为json字符串

# 生成一个order对象:
order = Order()
print(order.get_value(),type(order.get_value()))
复制代码

9.把Unicode转换为字符串

text ='\u9500\u552e'
text.encode('utf-8').decode("unicode_escape")
print(type(text),text) ==》这是定义Unicode用变量接受,然后再通过encode函数进行编码为UTF-8 然后再通过decode进行解码,然后再保存到变量里面,然后再输出

10.Python中迭代器和生成器的区别?

迭代器 ==》有两个基本的方法:iter() 和 next()。字符串,列表或元组对象都可用于创建迭代器

生成器 ==》使用了 yield 的函数被称为生成器(generator)。

跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。

调用一个生成器函数,返回的是一个迭代器对象。

11.给你一部电梯,能想到哪些用例和测试点,怎么去设计测试用例 ==》https://www.cnblogs.com/xiaoshubass/p/15625195.html

 

 

1、将一个对象转换为json字符串  ==》将对象转换为字符串 用json.dumps函数

2、TCP和UDP的区别 ==》1、udp是无连接的,tcp是面向连接的;2、udp是不可靠传输,tcp是可靠传输;3、udp是面向报文传输,tcp是面向字节流传输。

3、kill -9 和kill -15 PID 的区别?

kill -9 PID 是操作系统从内核级别强制杀死一个进程.

kill -15 PID 可以理解为操作系统发送一个通知告诉应用主动关闭.

 

 

 

2021.11.29号  阿里巴巴初面

面试题:
项目
数据库事务  ==》数据库事务( transaction)是访问并可能操作各种数据项的一个数据库操作序列,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。事务由事务开始与事务结束之间执行的全部数据库操作组成。

数据库事务的性质:1、原子性  2、一致性   3、隔离性  4、持久性
服务器缓存
sql优化
数据库的场景题(查询两个分数一样的数据)
自动化框架
性能测试关注点
TPS 和 QPS区别
Jmeter分布式压测
接口测试

 

 

 

1.自我介绍
2.上个项目介沼
3. python中的数据类型  ==》字符串、Number、元组、列表、字典、集合等等
4. 字典和JSon的区别  ==》字典是无序的,是Python的基本数据类型,json是json字符串,json和字典的表现形式看起来差不多,字典可以通过

键取到的值,json字符串可以通过eval函数转换为字典。
5. get和post区别 

 

1.个人介绍
2.怎么对需求进行提取,分析  ==》1)在需求澄清会议的时候,听取产品经理讲解需求对需求进行澄清  2)在写用例之前除了分析

显性需求,然后尽可能的分析需求中的隐性需求,挖掘隐性需求  3)通过xmind对需求进行提炼,梳理出测试点,方便我后续用例的编写

3.你在需求评审中提出什么意见  ==》比如有一次输入内容报错,在需求文档上面没有这个报错之后的弹框提示,我提出应该会报

什么样子的提示

4.给你一个年月日输入框,输入日期后,会输入后一天的日期
5.怎么定位bug
6.用什么做接口测试
7.接口自动化流程

 

1.po
2.你是用什么写的代码脚本
3.Python模块

 

1. 线程等待都有哪些   强制等待和显性等待的区别
2.UI自自动化 六层封装
3.app元素定位不到是什么原因怎么解决
4.app测试怎么抓取闪退问题  ==》1)一般可以通过adb命令,然后通过monkey随机测试  ,如果发现闪退和崩溃,直接通过adb logcat > log.txt命令

然后把闪退的日志输出到log.txt中,然后找到崩溃的日志并且截图给我开发同事去定位    2)我们的APP测试环境里面有日志定位的系统,崩溃的时候

日志会自动在Android手机里面生成或者我去测试的环境的服务器里面去捞日志然后截图发给开发同事

 

1.get和post的区别
2.线程和进程的关系及区别  ==》进程:指在系统中能独立运行并作为资源分配的基本单位,进程一般有三个状态:就绪状态、执行状态和等待状态【或称阻塞状态】

线程:线程是进程中的一个实体,作为系统调度和分派的基本单位。线程是进程内的一个相对独立的可执行的单元

 

进程就是一个应用程序在处理机上的一次执行过程,它是一个动态的概念,而线程是进程中的一部分,进程包含多个线程在运行。

 

在引入线程的操作系统中,通常都是把进程作为分配资源的基本单位,而把线程作为独立运行和独立调度的基本单位。由于线程比进程更小,基本上不拥有系统资源,故对它的调度所付出的开销就会小得多,能更高效的提高系统内多个程序间并发执行的程度。

举例说明:

进程:杭州地铁单位

线程:杭州地铁1号线、2号线、3号线........8号线

杭州地铁单位的所有地铁线路共享着杭州坐地铁的所有客源(相当于进程中的资源,所以进程属于资源单位),而各线路负责

将客源输送到指定地点(执行操作,所以线程属于执行单位)。


3.元组和列表的关系
4.常用的测试工具
5.单元测试、集成测试、系统测试的区别  ==》单元就是白盒测试也就是对代码进行测试,集成测试就是接口测试也是灰盒测试,系

统测试可以广义的理解为功能测试这块
6.评估需求的测试点
7.测试常见的风险分析 
8.全局变量和局部变量
9.讲解负责的项目模块
10.APP闪退原因
11.APP如何测试
12.Linux命令
13.项目
14.liunx命令
15.多表连接有哪些
16.selct查询平均年龄

 

三轮面试(两轮线下)
1.个人履历(哪年上班,在哪上班,做过哪些项目,项目的范围,背景等,项目介绍还是比较详细)
2.测试流程
3.如何进行需求分析
4.你的优点和缺点
5.你对我们公司了解吗
6.为什么来我们公司面试
7.你还有什么问题

 

传易互联    2021.11.15号
1、自我介绍
2、项目介绍
3、项目测试流程
4、测试用例设计方法?
5、一般你是怎么测的?
6、你认为做测试的工作的关键
7、怎么思考用例的可行性和不可行性
8、实际工作中有遇到不可行的的吗?
9、讲一下自己的优缺点
10、你对我们公司有了解吗?
11、你还有什么问题

 

润和外包 3轮     2021.11.15号
​1.常用的linux指令
2 .get post区别 不考虑安全的情况下 哪个更快
3.​多线程和进程区别 哪个快 io多线程好多进程好
​4.讲项目
5.​常用的库
6.​元组和列表的区别 都可叠代吗
7.​jil啥玩意儿  不会
8.​多个elif 咋能更简单 比如a=1 b=2 a=2 b=3 他说是键值对形式
​9.mv是啥 mv.a.txt文件 怎么变成mv.bak文件 
10.​rm -r 和rm -rf 区别 都是干啥的

 

博彦    2021.11.15号

1.自我介绍
2.项目业务流程
3.查服务端接口,用的工具有哪些
4.Linux指令 
5.给你一个电梯,编写测试用例
6.淘宝购物车,测试用例
7.用Python写自动化,描述流程
8.Python中列表和元组区别
9.为什么学Python,这个语言的特点  
10. http和https区别
11.测试职业规划
12.有没有独立负责一个项目
13.拿到一个项目,怎样评估风险
14.对加班的看法

 

传易互联
1、自我介绍
2、项目介绍
3、项目细节
购物车的数据模型
产品的注册用户量
在线用户量
购物车的设计逻辑
4、对我们公司有了解吗

 

传易互联
1.项目
2.产品验收在什么环节
3.等价类编写测试用例
4.怎么理解产品需求?
5.跟开发会产生冲突吗 具体有什么冲突?
6.毕业几年?
7.JAVA还是Python?
8.怎么做合格的测试?
9.项目管理用什么工具?
10.未来的规划?
11.你认为在同龄段属于低等中等还是高等?为什么?
12.Python自学的吗?
13.什么专业?JAVA教吗?
14.平时对逻辑思维挑战感兴趣吗?算法?学校里学数据结构吗?
15.线上有没有出现过bug?哪些?用户量大吗?活跃用户大吗?
16.对性能这块有要求吗?有什么要求?
17.性能测试工具,说一下jmeter
18.性能指标?怎么理解?
19.选一个模块,编写测试用例,设计思路,场景
20.你认为你的优点缺点分别是什么?提现在哪方面?
21.有没有看论坛?自己私下里学习什么视频?比如?
22.有没有去了解框架?
23.有没有了解过数据库?哪些方面?
24.测试大神遇到过吗?
25.你之前公司是外包吗
26.对我们公司了解吗?业务了解吗?

 

博彦刚刚一个电话猝不及防
没有自我介绍什么的
你是计算机专业的吗
1、你写过代码吗
2、unittest里面有什么函数,前置函数有哪些
3、跳过用例用哪个函数
4、你知道装饰器吗
5、你知道dt吗(重复确认不是ddt)
6、你会用数据库吗
7、查看日志用什么命令

8、闭包是什么,有没有写过?

复制代码
def log(func):
    '''就是在一个函数里面定义了一个新的函数,这个新的内部函数可以引用外部函数的参数
    和局部变量,当外部函数返回内部函数的时候,相关的参数和变量都保存在返回的参数中这种就称为闭包'''
    def wrapper(*args,**kw):
        print('call %s:' % func.__name__)
        return func(*args,**kw)
    return wrapper

@log
def now():
    print('2021-11-15')

now()
复制代码

 

1、工资待遇是多少,中间是否有过涨薪,上班多久进行调薪,五险一金是否全额缴纳
2、你接触的工作方向是哪些
3、工作中遇到的最大困难是什么,怎么解决,寻求帮助时,你会找谁帮你
4、公司流水

 

1、你最专精哪个方面的测试,说一下怎么测的

2、不要说注册,登录

3、做过app测试吗?

4、app有哪些专项测试

 

 

蚂蚁金服一面: 2021.6.7号
1.数据库调优
2.索引的作用
3.存储过程
4.python列表与元组的区别,哪里用到元组
5.python中操作数据库需要导入什么库

 

蚂蚁金服一面:  2021.6.7号
1,数据库在一个表中查询姓张的人的信息
2,接口测试怎么做的,接口之间怎么关联
3,登录界面的测试点
4,linux命令,1)查看实时日志,2)查看端口号,3)查看进程
5,列表,元组,字典的区别

6,UI自动化,搭建过UI自动化的环境没有

 

自我介绍     2021.6.7号
说项目
给你一个百度网页,列出测试点
性能测试(这是我自己带的节奏)
python基本数据结构
常用的库
常用的函数
数据库的视图
数据库的数据分组

 

华为项目:   2021.6.7号

python数据结构,浅拷贝和深拷贝的区别
Python中可变对象和不可变对象有哪些
对可变对象进行浅拷贝和深拷贝有啥区别
对可变对象浅拷贝和普通拷贝有啥区别   ==》

  • 深拷贝:深拷贝直接拷贝对象到内存中一块区域,然后把新对象的指针指向这块内存,复制的对象指向了新的地址
  • 浅拷贝:浅拷贝并不拷贝对象本身,只是对指向对象的指针进行拷贝,复制的对象和原对象都指向同一个地址


装饰器有哪些,有啥作用
闭包管理是什么原理

 

华为项目:   2021.6.7号
1、自我介绍
2、项目
3、python数据结构
4、Python中可变对象和不可变对象有哪些
5、浅拷贝和深拷贝
6、python中的多线程和多进程
7、python中的线程和进程的区别
8、Linux命令
9、你有什么要问的

10、还有用到哪些装饰器,装饰器的作用,装饰器你是怎么用的  ==》@ddt  @data  @classmethod  @staticmethod  @property

 

软通外包蚂蚁金服一面:  2021.6.7号
1.自动化、功能、接口测试占比
2.接口测试工具,测试方法(postman、jmeter)
3.断言的作用
4.常见状态码
5.HTTP请求流程
6.进程和线程区别
7.存储过程、索引
8.Python常用模块
9.字典取值方法
10.selenium定位方法
11.隐式等待和显示等待
12.登录注册接口测试方法设计
13.sql注入原理   ==》

所谓SQL注入,就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击.当应用程序使用输入内容来构造动态sql语句以访问数据库时,会发生sql注入攻击。如果代码使用存储过程,而这些存储过程作为包含未筛选的用户输入的字符串来传递,也会发生sql注入。

14.git或者SVN用过吗
15.常用Linux命令
16.你之前做过手机端的测试吗
17.在职还是离职的
18.期望薪资
19.你有什么要问的

 

1、说一下左UI自动化的流程    2021.6.7号
2、如果定位用xpath定位不到怎么办
3、说一下jenkins的作用
4、你是怎么做接口的
5、接口用postman怎么做
6、说一下接口的返回值
7、说一下怎么提取token值
8、你做UI自动化写了多少用例

 

1,项目     2021.6.7号
2、linux命令
3、日志中查指定字符
4、多进程和多线程是什么,有什么区别?  ==》进程是资源分配的最小单位,线程是CPU调度的最小单位

 

 

 


5、什么是资源分配的最小单位,什么是cpu调度的最小单位
 6、装饰器有哪些?
7、列表和字符互相转换
8、id元素存在,但定位不到什么原因

 

1、说一下你怎么做UI自动化    2021.6.7号
2、说一下数据库的增删改查
3、说出怎么用Python写一个99乘法表
4、没有做过APP测试
5、APP测试兼容性怎么做
6、有没有做过安全测试
7、 说一下怎么做接口自动化
8、你们一般用什么定位方法
9、能否接受加班

 

博彦:    2021.6.7号
1、你们ul自动化的成功率是多少?
2、场景无法用ui自动化大概有什么原因?
3、项目流程
4、怎么保证你的测试工作高质量进行?
5、Linux查看进程命令?
6、怎么查看日志?
7、ui自动化的依赖关系怎么处理?
8、写没写过测试报告?
9、怎么搭建测试环境?
10、掌握哪些语言?
11、上线之前的准出有哪些?

12、ui自动化浮动id如何定位  ==》手写xpath

13、接口自动化,如果用例里面有1000个用例,我要跑其中100个,我怎么设置?

答案:1.如果是配置了DDT的话 ,可以通过方法名去加载跑用例,不用通过discover这个方法去全部加载

2.第二种就是在unittest单元测试框架里面添加装饰器  @unittest.skip(reason):强制跳转。reason是跳转原因

 

 

平安寿险一面    2021.6.7号

 

自我介绍
为什么跳槽
介绍最近的项目
测试用例包含哪些?
出了一个sql语句(找出表中年龄最大,姓周的)
get和post的区别
http请求头包含哪些
接口怎么测的?
性能测师怎么测的
用例覆盖率怎么保证
python中的类型
列表和集合的区别
优惠券的测试点
测试用例的设计方法
等腰三角形的设计方法
期望薪资
还有什么想问的

 

 

2021.3.8号早上

1、是否接触过自动化测试?若做过,使用什么工具,写过多少自动化测试用例; ==》robotframework+selenium2library selenium

2、是否接触过数据库?使用程度如何?

mysql  熟练

具体举例:

数据库的关键字having是什么意思? ==》分组后进行筛选和过滤

3、python源程序执行的方式??

有三种:

1)在命令行窗口输入python执行

2)集成开发环境,在PyCharm里面执行

3)在命令行输入ipython或ipython3进入交互式shell环境

4、python常用的标准库用过哪些?标准库有很多,只要能说出哪几个常用的即可

如下图:

 

 

 

 

 

郭涛 捷科智诚面试题  3.8号下午

1、深拷贝与浅拷贝的区别

浅拷贝只复制指向某个对象的指针,而不复制对象本身,新旧对象还是共享同一块内存。

但深拷贝会另外创造一个一模一样的对象,新对象跟原对象不共享内存,会开辟新的内存地址,修改新对象不会改到原对象

2、多线程怎么设置  ==》用threading模块

3、自定义关键字怎么弄

1)、首先在C:\Python37\Lib\site-packages目录下新建一个库名

2)、在库里面新建一个__init__.py文件和另外一个模块

3)、在自定义的模块里面编写类和方法、封装工具方法

4)、在__init__.py文件定义一个类和库名相同、并且定义类变量如下:          ROBOT_LIBRARY_SCOPE = 'GLOBAL'

5)、在RF框架套件中导入新建的库

6)、新建testcase然后调用自定义的关键字

4、环境查看进程  ps -ef|grep tomcat

5、查看端口号   netstat -nltp  lsof -i:端口号

6、ui自动化框架  ==》http://duoceshi.cn/duoceshi/Tech_article/73.html

7、接口测试流程  

8、不想执行这个用例 直接跳过怎么操作   ==》unittest.skip()装饰器

9、公司用过哪些框架   ==》unittest、flask、Django、Jquery

10、java用过吗  ==》用过

11、用的哪种语言

12、unittest里面怎么跳过用例 ==》unittest.skip()装饰器

 

3.8号下午

1、怎么查进程 

2、查端口

3、python你是用什么做的 

4、你对自己未来的发展有什么想法

5、你们公司 做性能压力测试 ,并发数大不大,一般为多少。  ==》500  tps大于100

 

麟云科技  3.8号下午

1.自我介绍

2.python中用什么做的自动化

3.熟练mysql增删改查,Linux的指令吗

4.怎么查进程 

5.查端口

6.你对自己未来的发展有什么想法

7.你想过往测试开发或者测试运维方向发展吗。   ==》有的

8.会不会搭建环境

9.APP自动化有接触过吗,用什么做的  ==》appium

10.你们公司 做性能压力测试 ,并发数大不大,一般为多少。

 

博彦科技电面  3.8号下午

1.自我介绍

2.测试流程

3.深浅拷贝区别

4.python+selenium中的定位方法  ==》9种  id,name,class,css,xpath,JavaScript,link_text,tag_name,partial_link_text

5.接口测试遇到的问题

6.最有成就感的项目

7.Linux指令

8.Java的用过吗  ==》用过

9.对id字段去重   select distinct(id) from 表名;

 

 博彦初面  3.8号下午

1登入界面的测试用例

2元祖和列表的区别   ==》元组不可变、列表是可变的

3linux命令

4mysql命令

 

博彦 电话面试3.8号下午

1、python如何连接数据库    ==》通过pymysql模块

2、项目的逻辑是什么

3、左连接的sql语句

4、与管道符相似的sql语句    ==》过滤,group by  ....having

5、get与post的区别   ==》get接口参数在url地址栏、post在body里面,get安全性比较低,post接口请求方法安全性高

6、怎么实时查看一个路径的实时日志

7、java内==与.equal什么的区别 ==》==比较的是2个对象的地址,而equals比较的是2个对象的内容

8、元组与列表的区别

9、pp界面登录的测试用例

 

电话面试3.8号下午

1,get与post的区别 

2,左连接的用法

3,mysql去重后分组   ==》select distinct(字段) from 表名 group by 字段

4,查实时日志倒数100行  ==》tail -n 100 文件名

5,po六层的定义   ==》http://duoceshi.cn/duoceshi/Tech_article/73.html

6,你上个项目周期多少 多久迭代一次

7,发现bug后怎么解决,

8,多个数据怎么去实现

9,python怎么连接数据库    ==》通过pymysql

10,出现什么样的bug还是会上线 ,性能测试 主要测那些环境,上线还会测吗

 

博彦蚂蚁内面  电话面试3.9号上午

1.介绍项目

2.下拉框怎么定位   ==》导入Select类

3.定位方法

4.测试流程

5.测试报告有什么

6.你怎么判断一个bug是前端还是后端  ==》通过fiddler抓包看接口的返回,如果接口返回正常那说明是前端渲染的问题或者前端页面的bug,如果接口返回报错,那就需要去

定位是接口还是数据库还是服务端代码的问题。

7.单表查询出数学语文英语大于80的姓名 

8.APP和web端测用的多,APP和web端测试的区别?  ==》https://www.cnblogs.com/xiaoshubass/p/12872636.html

9.你能为公司创造什么

10.你还有什么想问的吗

 

博彦科技电话面试3.9号上午

1、深拷贝与浅拷贝

2、元素定位方法

3、ui自动化遇到的问题

4、python的数据类型  ==》String、Number、Tuple、List、Set、Dict

5、项目流程

6、增删改查 改一个表中的name

7、接口测试6层

8、存储过程

9、99乘法表

10、java的特性  ==》封装和继承、多态

11、ssh什么意思  ==》可以远程连接Linux服务器

12、liunx命令

13、java中i++和++i的区别 ==》 i++ 先赋值在运算,例如 a=i++,先赋值a=i,后运算i=i+1,所以结果是a==1 * ++i 先运算在赋值,例如 a=++i,先运算i=i+1,后赋值a=i,所以结果是a==2

 

3.10号  下午

1.正常测试点、异常测试点、bug

2.支付功能测试点

3.第三方支付有哪些  ==》https://www.cnblogs.com/xiaoshubass/p/14512121.html

 

3.10号  下午

面试遇到的问题总结:

1、存储过程描述

2、APP测试环境搭建

3、对Appium的理解

4、RF框架

5、PO的理解和API框架  ==》http://duoceshi.cn/duoceshi/Tech_article/73.html

6、数据库数据清洗到另一个数据库,如何测试清洗的数据没有发生改变

7、如何进行性能测试

8、linux指令

9、post和get的区别

10、测试流程

12、购物车测试点  ==》问的非常的多

13、APP中adb命令

14、测试环境搭建

15、工作中印象最深的bug  ==》问的非常的多

16、索引的种类有哪些  ==》普通索引,主键索引,唯一索引

 

3.10号  下午

1、po框架

2、iframe框

3、你们项目组的结构

4、然后就是我的个人经历,做python几年了,怎么学的,英语好不好。

 

3.10号   优云

1.你们数据库放在哪里的  ==》Linux服务器里面的

2.你们测试有几个   ==》开发20个左右,测试5个左右

3.你们服务器性能怎么样   ==》通过压测tps可以达到500以上

4.数据库有多大

5.你想怎么提升自己   ==》看博客园和CSDN,千万不要说看书,很多搞技术的同学很少看书

6.遇到问题的话怎么解决

7.你们公司tps指标多少   ==》tps能达到200到500笔/sec左右

8.你们的用例有标准吗

9.你们自动化用例覆盖多少  ==》用例条数覆盖功能测试用例的10-20%,场景覆盖占到70-80%

10.你们自动化用例一般跑多久  ==》40分钟到1个小时左右

11.Linux里面网络方面的指令有那些  

hostname ==》显示主机名称

ping  ==》看网络是否通

ifconfig ==》查看IP地址

netstat  ==》查看端口,进程

Telnet ==》远程登入

route==》route命令用于查看或修改主机和网络的路由信息

12.你们服务器和数据库放在哪里

13.你们用例的输入和输出是什么

14.你们用的什么服务器  ==》Tomcat和nginx

15.你和开发对用例通不通过产生起了争执怎么解决的

16.你目前自己想往那个方面发展

17.http和https有什么区别  ==》http是超文本传输协议,端口80,

https是超文本传输安全协议,端口443

https是基于HTTP协议的,然后通过SSL或者TLS对数据进行加密

18.问数据库性能方面的知识,你看过吗。服务器性能的一些数据。

19.Linux命令中关于性能的命令有哪些?

top、vmstat、lsof、tcpdump、htop、netstat、iotop、iostat、IPTraf、psacct、uptime、pidstat、free -m

 

3.10早

第一家:软通

1、项目测试具体流程

2、自动化怎么做的

3、你擅长什么

第二家:中软

1、Linux常用指令,MySQL增删改查

2、冒泡排序

3、iteartools库使用

第三家:相芯科技(线下)

1、手写一个你熟悉的python框架脚本

2、结合项目讲你的自动化测试流程

3、美颜相机脸部美颜-唇部子功能的测试点

4、未来发展方向

5、性能测试接触过哪些

6、app测试接触过哪些

7、第三方接口ai识别身份证的测试点

 

 3.10下午  央选网络

1、自我介绍

2、购物车模块测试点

3、支付模块测试点

3、Fiddler为什么可以抓包

4、怎么区分前后端的bug

5、linux命令

7、mysql增删改查

8、淘宝购物车的测试点

9、怎么区别前端bug还是后端bug

10、你认为是一个bug、开发认为不是、你怎么处理  ==》看需求深入了解需求,和开发一起讨论,看是否是双方对于需求理解有出入,如果没有的话向上级反馈这个问题,让

测试经理或者问需求人员去处理。

11、get和post区别

 

 3.10下午  

字节
1.自我介绍
2.介绍下你的项目
3.Linux指令
4.多表连接
5.jemter性能测试做过压测吗
6.UI自动化 我讲了po设计
7.购物车测试点
8.你们购物车能加多少商品
9.http和https的区别
10.接口用例怎么设计的
11.慢SQL  听不懂没回答

 

 3.10下午  
捷科智诚 一面
1.自我介绍
2.介绍下项目
3.做过接口吗
4.用的什么工具


软通    3.10下午  
1.列表 怎么获取后三个数    ==》用切片或者写个冒泡排序然后再用切片
2.Python中怎么断言的
3.你每个接口都需要断言还是每个接口用例需要断言   ==》断言用assert True、assert False、和unittest单元测试框架里面的self.assertEqual
4.Linux指令
5.索引有什么作用   ==》可以加快查询的速度
6.Python中你是怎么做接口的
7.你是用什么来进行上下接口的连接  ==》创建self.session() 对象

 

字节跳动  3.10下午  
1、提测延期怎么办  ==》提前报风险评估,然后催开发加班,如果实在不行就甩锅给开发
2、@classmethod和@staticmethod的区别  ==》都可以被类和对象调用

区别一:从它们的使用上来看

@staticmethod不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样。

@classmethod也不需要self参数,但第一个参数需要是表示自身类的cls参数。

如果在@staticmethod中要调用到这个类的一些属性方法,只能直接类名.属性名或类名.方法名。

而@classmethod因为持有cls参数,可以来调用类的属性,类的方法,实例化对象等,避免硬编码。

3、一个文本框你们是怎么测试的
4、你们这个接口的场景
5、jmeter是怎么做压力测试的
6、一个bug,我们怎么判断是前端问题还是后段问题

 

创值高科线下   3.11上午
自我介绍
postman做接口流程
淘宝购物车测试点
登陆接口性能指标查看

通卡联城     3.11上午
自我介绍
测试流程
接口怎么做的
购买商品的测试点

 

恒生电子      3.11上午
1.自我介绍
2.项目
3.查看日志
4.添加一个数据
5.多表连接的方法
6.搭建环境遇到的问题
7.接口用例怎么设计的
8.登陆的测试点
9.你们工作中遇到过什么困难吗
10.你们用什么方法写的用例

创业慧康   3.11下午

1、正则表达式匹配一个邮箱的@符合 

复制代码
import re

def re_pattern():
    '''
    匹配邮箱
    :return:
    '''
    str1 = '2966123@qq.com'
    a = re.findall('^2\d{5,10}@\D.\D{1,5}',str1)
    print(''.join(a))

re_pattern()
复制代码

2、一个字符串A=“{}”要怎么样去除外面的引号,只输出一个词典格式

复制代码
import json

def foo():
    '''
    通过json.loads把字符串转换为字典
    :return:
    '''
    A='{"name":"xiaohu"}'
    a = json.loads(A)
    print(type(a))

def foo1():
    '''
    通过json.dumps把字典转换为字符串
    :return:
    '''
    A={"name":"xiaohu"}
    a = json.dumps(A)
    print(type(a))

if __name__ == '__main__':
    foo()
    foo1()
复制代码

3、给你一个性能需求你会怎么去测试  

 

网易线下面试   3.11下午

1、给你一个接口,测试思路是什么  ==》首先问开发要接口文档,如果没有的话就自己用fiddler或者Charles抓包,然后看看接口的请求方法和入参这些

然后看看用postman和jmeter哪个比较适合,然后编写接口的测试用例,包括正常场景和异常场景,大概一个接口可以写10条以上接口用例,然后组建

接口,进行测试。

2、站在测试工程师的角度web前端界面可能存在的风险,app可能会出现的危险,验证码的特性是什么?

3、你们公司怎么进行风险管理,来处理突然出现会影响上线的bug   ==》申请发紧急的版本

4、除了你们公司要求的一些测试报告,你还会有什么类似自己的总结  ==》暂时公司每个版本都会有项目版本的总结大会

 

 

 

1、mysql数据库里面的in 和out的区别,inout加一块的区别?

IN 输入参数

表示该参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值

仅需要将数据传入存储过程,并不需要返回计算后的该值。 只能当做传入参数

OUT 输出参数

该值可在存储过程内部被改变,并可返回不接受外部传入的数据,仅返回计算之后的值。 只能当做转出参数

INOUT 输入输出参数

调用时指定,并且可被改变和返回 需要数据传入存储过程经过调用计算后,再传出返回值可当做传入转出参数

2、mysql数据库里面的触发器和程序包用过吗?

https://www.cnblogs.com/geaozhang/p/6819648.html

tigger_event详解:

①INSERT型触发器:插入某一行时激活触发器,可能通过INSERT、LOAD DATA、REPLACE 语句触发(LOAD DAT语句用于将一个

文件装入到一个数据表中,相当与一系列的INSERT操作);

②UPDATE型触发器:更改某一行时激活触发器,可能通过UPDATE语句触发;

③DELETE型触发器:删除某一行时激活触发器,可能通过DELETE、REPLACE语句触发。

3、python里面的dumps和dump、load和loads的区别是什么?

 

4、有两张表,一张user表里面的字段是:店名、sid
另外一张表a有sid、产品数量、时间时间格式是:“2020-XX-XX XX-XX-XX”
问题1)、查询下今天店名是达西店的产品数量
问题2)、查询达西店时间和产品数量按照"2020-03-01"格式输出近一个月每一天的产品总量,写出sql语句
第一题:
select count(产品数量) from user inner join a on user.sid = a.sid and 店面="达西" and to_days(时间字段名) = to_days(now());
第二题:
select sum(产品数量) from user inner join a on user.sid = a.sid and DATE_SUB(CURDATE(), INTERVAL 1 MONTH) <= date(time);

 

 1、python当中的生成器和迭代器的区别?

 2、adb命令是什么意思?

 

2021.04.08
1、你们公司测试的流程是怎样的?
2、一个迭代写了多少条用例?ui自动化覆盖率是多少?大概多少条用例?执行这些用例用了多少时间?平时是怎么维护自动化脚本的?你觉得自动化测试有什么优势和劣势?
3、ui自动化设计和接口自动化设计
4、有没有处理过线上问题?
5、上线后对项目有没有监控?
6、测试报告怎么处理的?
7、tps没达到要求怎么办?

 

 

1.post和put的区别
PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容
2.http1.0和http1.1区别
HTTP 1.1支持长连接
HTTP 1.1增加host字段
3.假设有一个A接口,返回参id = xx
4.一个B接口,返回data=列表里很多对象[id=xx,key=xxxx]
用正则怎么去提取A接口id 去B接口里取出key值
1)首先要把数据处理为json字符串、然后再通过re.findall("(.+)", data)语法去取
2)取对象里面的值有多种方法、也可以转换为字典然后再for循环遍历加上递归函数拿到键对应的值、这个要看代码的具体实现
5.nginx是用来干什么的
nginx有很多的作用、可以当做部署前端的服务器、也可以用作正向和反向代理、也可以配合Tomcat做服务器集群
也可以简单的部署项目
6.假设一张表里面很多数据,如何用sql语句随机提取10条
SELECT * FROM 表名 ORDER BY RAND() LIMIT 10;
7.关系型数据库与非关系型数据库区别
这个区别就非常多了、可以百度查一下
8.post可以去删除数据 那么与delect的区别
post一般用来做表单提交和查询数据操作很少用来删除数据操作、DELETE请求一般用来删除某一个资源的、有点像数据库的delete操作
9.你的ui自动化做的真的有意义么
我们上家公司是领导安排让我做的UI自动化、我认为UI自动化和功能测试都是非常的重要、功能是UI自动化的
基础、做UI自动化可以更加好的帮忙我功能测试的开展、我们上家公司做UI自动化测试在回归测试过程中当中
还是为我们解决了很大一部分问题、为了回归测试节省了不少的时间
10.数据库中约束的优先级 ==》这个没听过、百度一下
11.python中数据类型哪些是可变,哪些不可变 ==》列表、集合、字典可变数据类型 字符串、number数值型、元组不可变

 

 

1.自我介绍
2.在项目上涉及到的工作内容,(你主要做了什么,测了什么点)
3.有没有参加评审会议,参加需求评审的时候你有没有发现过哪些不合理的需求,有没有提出来
4.有没有看过开发日志,怎么查看的,(在linux里查看日志)
5.假如你之前说的测试的滚动条需要等待的时间太长,你怎么办?(这里说跟开发协商测试的时候把时间调短,正式上线的时候再调回来)
6.如果有一个商品,有A线路和B线路,A线路发货7天运费2元,B线路发货10天运费4元,从购物车到订单给我设计测试用例或者说出测试点,十分钟。

 

法本 2021.4.7号11点
1、自我介绍
2、jenkins任务创建的流程
3、测试这边的项目流程
4、python中UI自动化的测试流程
5、selenium模块你的理解
6、selenium中元素定位的方法
7、python中==和=和is的区别
8、re模块里match和search

 

 

新华智云测试问题:
微信朋友圈点赞怎么测,
闹钟的异常情况的测试用例
Jmeter的断言怎么设置,
一般设置哪些断言,
Python脚本selenium的框架,
接口自动化的unittest框架的方法
接口测试用例和功能测试用例的区别
Python中查找元祖元素怎么设置不区分大小写
根据闹钟的功能来写测试用例
python接口自动化的requert库有那些方法
APP的升级情况的测试用例
python怎样才能不用区分大小写

 

复制代码
def func():
    '''
    封装一个不区分大小写的函数
    :return:
    '''
    words=str(input("输入一个英文句子:"))
    for ch in words:
        if ord(ch)>=65 and ord(ch)<=90:#大写字母对应的Ascall
            words=words.replace(ch,chr(ord(ch)+32))#大写通过Ascall转小写
        if ord(ch)<97 or ord(ch)>122:#非小写字母对应的Ascall
            words=words.replace(ch,' ')#空格代替所有非小写字母
    pac={}#定义一个空字典
    for i in words.split():
        pac[i]=pac.get(i,0)+1#返回pac[key]因为唯一性可避免单词重复
    k=0#统计总词汇
    sum=''
    for key in pac:#一元组查找
        k+=1
        sum+=key+' '
    number={k}#不同单词数量的字典
    print('全部单词如下:\n',sum)
    print('共有',number,'不同个单词')

func()
复制代码

 

 

 

复制代码
Python里面如果要不区分大小写 可以用re正则表达式
传入 re.I 参数进行不区分大小写的匹配
import re

a = re.compile(r"hello", re.I)
result = a.search("HELLO world")
print(result)  #结果:<re.Match object; span=(0, 5), match='HELLO'>
复制代码

python接口自动化的requert库有那些方法
问了测试用例报告
还有添加购物车后商品降价用户页面收到弹窗的测试报告
还有电脑删除软件后从回收站恢复的测试用例

 

12.13阿里面试
用python讲一下自己的项目(python+unnitest框架)
类的开始和结束都写了哪些内容
测试多个账号登录怎么设计自动化
怎么设计场景框架(六层封装)
Python有哪些数据类型
列表和元组的区别
集合有哪些特点
元组和列表、字典可以放到集合中吗?
元组和列表可以当字典里的key吗?
字典中的key是唯一的,所以列表可变不能当字典中的key
哪些场景下会用到SQL语句,
多表连查会用到哪些关键字:inner join on
Order by  group by是什么意思
数据库的事务有哪些特性:事务具有 4 个特性,即原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability),这 4 个特性通常简称为 ACID。
上份工作的每天的工作安排

 

云融科技
postman怎么自动跑自动化
postman运行插入数据接口后怎么知道判断存入数据库
postman插入数据接口同时插入两条相同的数据是怎么测的(同一个用户两次)

 

萤石网络(一面)
如何分析需求
项目中的隐性测试点
项目中的关联测试点
举例说明怎么优化用例
举例说明怎么定位bug  分析bug
你在一个bug发现过程中的贡献
你发现的这条bug,别人能发现吗?
从发现bug到解决bug中你做了什么(工作中的问题你怎么解决)?
职业规划(自我提升可参考的点:测试执行能力、测试设计能力、项目管理能力)

 

 

 

阿里:
装饰器
cookie和session
cookie的创建
前后端bug
linux查日志
ui抓取页面元素
固定一半怎么抓取
列表的增删改查 ==》insert remove  extend find index

 

 

 

博彦
1.用什么接口自动化框架   
2.接口自动化框架的参数
3.接口自动化参数框架怎么存储  ==》用的Excel和ini文件存储的
4.一个登陆的接口,设计几十条case,刚开始数据不写死,在后面代码生成,这个的参数化怎么做   
5.自动化框架的数据驱动怎么做  ==》po设计模式6层封装
6.单元测试框架用的什么
7.unittest怎么做数据驱动 ==》用ddt模块 
8.app测试做过什么测试  ==》功能和APP自动化测试
9.对adb命令熟悉么
10.导出日志用什么命令  ==》adb logcat -s
11.查看当前设备连接数  ==》netstat -nat|grep -i "80"|wc -l (统计80端口连接数)
12.性能测试做的哪一方面的流程
13.jmeter做性能测试怎么做,测试数据怎么分析的
14.结合项目说一说并发测试
15.并发测试做出来的颈点有多少

 

阿里面试(一面)
什么条件搭建ui自动化
ui自动化成效(解决了什么问题)
ui自动化是前端后端都有使用吗  ==》我们UI自动化都是基于前端的https://www.cnblogs.com/xiaoshubass/p/12373820.html
ui自动化元素定位
ui自动化遇到的问题
切换iframe框方法
ui自动化有用到别的技术吗(六层封装,po设计)  ==》
说一下什么是po设计模式  ==》

 

 

 

'''
po设计模式 ==》page object页面对象设计模式解释:所有当前页面的控件和元素都为类或者对象的属性
po设计模式优势如下:
1.让元素定位,流程,案例进行了分离
2.前端代码关于元素定位有改动可以随时进行处理,修改非常方便
3.让代码间的耦合性降低、防止代码写死
4.降低代码的维护成本
5.代码的复用性高
6.采用标准的page object页面对象设计模式,符合现在主流ui自动化框架的标准搭配
'''

 


接口自动化用什么做的
关联接口
闭包是什么  ==》

 

复制代码
def log(func):
    '''就是在一个函数里面定义了一个新的函数,这个新的内部函数可以引用外部函数的参数
    和局部变量,当外部函数返回内部函数的时候,相关的参数和变量都保存在返回的参数中这种就称为闭包'''
    def wrapper(*args,**kw):
        print('call %s:' % func.__name__)
        return func(*args,**kw)
    return wrapper

@log
def now():
    print('2021-11-15')

now()
复制代码

 

内连接和外连接区别  ==》内连接inner  join   左连接和右连接就是外连接
linux查日志、查进程
mysql 排序  取前十行

 

杭州快鱼互动科技一面
1.自我介绍
2.项目主要负责的内容
3.说一下post和get的区别
4.Python的数据类型有哪些
5.列表和元组的区别
6.元组怎么添加数据
7.有哪些聚合函数
8.接口自动化用过哪些库
9.项目组有多少人,人员怎么分配的
10.常用的linux命令
11.数据库怎么去增加数据
12.多表查询的方式与区别
13.接口测试做过吗?怎么做的
14.App测试和web测试的区别
15.常用的adb命令
16.说出微信视频通话的测试点
17.离职原因是什么
18.上家公司在哪里
19.最快到岗时间

 

2022.7.21巡天科技
1.项目流程?
2.接口测试怎么做?
3.web端从安全测试要考虑哪些点?
4.按f12你会去看哪些东西?
5.mock测试了解吗?
6.测试报告包含哪些内容?
7.和开发沟通有困难没?
8.领导给你的印象如何?在她身上学到了什么?
9.在工作时,比较闲,如何安排自己的时间?

 


2022.7.21润亨丰线下面试题目
1.自我介绍
2.你做过什么项目
3.讲一下你的银行项目
4.这个项目中你认为最难的地方在哪
5.银行项目出现的重大的bug
6.jmeter怎么做断言
7.用过哪些自动化框架
8.讲一下pytest重跑你用的什么
9.讲一下pytest的版本
其他记不清了~~~

 

 2022.7.20 之江实验室
1.讲下自己的项目和项目里遇到的难点
2.接口测试怎么做的
3.接口响应时间过长,怎么办(常被问到)
幂等
4.关于索引,组合索引
5.讲下性能测试
6.排查过性能的问题吗
7.接口自动化的例子,测一个接口
入参,返回参

 

面试公司:腾木科技
面试时间:2022年7月
面试形式:线下
面试难度:中
1、自我介绍
2、为什么从上一个公司离职
3、介绍一下项目
4、介绍一下你负责的模块
5、介绍一下借还款的流程
6、介绍一下借还款模块接口怎么做测试的
7、你的模块从什么时候介入测试的
8、为什么要做接口测试
9、讲一下接口自动化框架(unittest)
10、做没做过ui自动化
11、接口自动化框架是不是你搭建的
12、数据库MySQL的多表查询,基础,左,右
13、左右链接的区别
14、统计公司的男女人数怎么统计
15、linux使用的查看进程,查看端口,查看MySQL的进程
16、http协议说一下http的理解
17、扫码点餐功能:临时分析功能测试点
18、期望薪资多少?
19、对加班怎么看?
20、对值班怎么看(值班到后半夜两点,每周一次)
21、之前有没有出现过线上bug的情况)
22、你觉得自己的抗压能力怎么样?
23、怎样快速熟悉项目融入项目组
24、你有什么需要了解的吗?
25、你打算一直在成都吗?
26、住所距离公司多远?
27、之前测过客户端吗?


第2轮面试:
1、常用的测试工具
2、之前有用过jmeter做过压测没有?
3、当时是怎么做的
4、怎么确定性能指标的
5、线程数能达到多少?
6、压力测试怎么设计测试用例的
7、性能测试监听那些数据?
8、tps是多少?
9、在压力测试时tps上不去怎么处理
10、做压测有没有用到结合点
11、定时器用过吗?
12、同步定时器和固定定时器的区别
13、jmeter的正则表达式
14、同线程组相互依赖的接口如何处理
15、跨线程组如何的提取与应用
16、python:装饰器,正负索引,内存管理
17、会员充值1000开始消费,经理提成50%:临时想测试点和测试用例。
18、负载均衡压测
19、上一个公司为什么离职
20、平时有没有学习的习惯,学些什么
21、负责模块大概写了多少用例

 

 7.20木链互联网
1.tcp和udp是什么?两个的区别?
2.自动化做项目 自己有什么感想?
3.ddt模型为什么可以提升用例效率?
4.项目迭代 新用例怎么去写?
5.python数据类型中哪几个是不可变类型?为什么是不可变?
6.需求分析包括哪些?
7.测试计划包括哪些?
8.怎么把握自己的项目进度?
9.用例怎么管理?testlink和svn区别在哪?
10.项目测试听起来都是一些表单验证?没有其他的更深入的 用到第三方库的吗?

 

7.19网易二面
1.自动化用在苹果端还是安卓端?两个端是两个代码库吗?
2.自动化用例写了多少条?
3.自动化用例都是自己一个人写吗?写多长时间?
4.做自动化时用过什么工具?
5.兼容性怎么去做?
6.怎么选手机型号 版本?
7.线上用户 你没有机型 怎么测?
8.pc端有做过吗?
9.mac window可以适合 可以来测吗?
10.版本多 时间短 怎么安排?
11.测试app关注线上崩溃情况?
真实用户有崩溃?怎么搜集信息?
12.修改请求功能?修改过响应数据?
13.什么场景要修改响应?
14.弱网做过吗?
15.app性能有接触吗?
16.jmeter测性能 什么场景用过?
17.为什么要测登录接口呢?领导安排的还是?
18.登录接口调通是功能 性能有测登录接口吗?
19.最近最有意思的事情?
20.做过什么工具类的开发吗?提升工作效率?
21.ddt是开发 还是改进 ?效率真的提升了吗?
22.python怎么学的?
23.列表怎么去重?
24.深拷贝和浅拷贝的区别?
25.装饰器的功能?
26.selenium常用定位方法?
27.维护用例失败 怎么排查?
28.客户端 pc端做自动化 有什么方案?
29.selenium适合于pc端吗?
30.http的状态码
31.请求方法有哪些?
32.linux查看主机资源?
33.shell有写过吗?
34.数据库模糊查询关键字?范围呢?
35.在工作中有遇到什么困难?怎么去解决的?
36.你有什么想问的?

鲸祺一面
1.项目讲解
2.怎么做好一个测试?
3.ui自动化怎么做?
4.rf怎么用 怎么加参数?
5.用python语句10-100求和?
6.白盒测试做过吗?
7.客服端兼容性考虑哪些方面?
8.post和get区别?
9.响应状态码
10.linux怎么查看java运行情况?
11.python中数据类型是哪些?分别用什么表示?
12.接口测试从哪些方面考虑?
13.shell写过吗?
14.怎么管理用例?
15.设计纸杯的测试用例
16.性能测试怎么做?

 

1 自我介绍
2 自动化占比大概在多少
3做最近这个项目遇到了什么印象深刻的问题
4 python常见的数据类型
5列表和元组的区别
6 post和get的区别
7 break、continue和return分别是做什么用的
8 pass的作用是什么
9 介绍一下python中继承的意思,哪些类型的继承
10.讲一下方法的重写
11.介绍一下进程和线程的区别
12.抓包应该关注哪些数据
13.有没有用过Linux系统,简单说十个
14.期望薪资
15.面试通过多久可以到岗

 

吉利外包一面:
1.自我介绍
2.简历-jemeter怎么进行性能测试
3.简历模块,功能测试使用什么工具编写测试用例
4.搭建什么测试环境
5.项目的工作抉择,内容
6.针对注册,登陆模块 功能用例设计 
7.性能,压测,自动化多吗
8.自动化基于什么编写,
9.功能测试用例覆盖率,自己写的占比多少,别人补充多少?
10.sql语句基于保单价格升降序
11.面试顺利的情况,多久入职
12.未来的职业发展,功能多还是自动化多

 

16:30
国家电网二面  20分钟
1.讲下项目,测试过程,测试用的方法
2.测谷歌浏览器的兼容性有哪些思考
3.性能测试,在测试这边响应时间是合理的,但是到用户那边响应时间过长,会从哪些方面考虑问题
4.怎么看待测试岗位的,从业务和技术角度

 

吉利:
1、项目已经要上线了,忽然通知你业务有变更,你要怎么办
2、你做性能测试,如果接口的并发数不一致,你又不知道具体的数量,你怎么办
3、你不知道接口并发的数量,产品经理也不在,你要怎么办
4、你是项目经理,接到一个中等的项目,手下只有你一个人,你要怎么做测试计划

 

面试题:
零跑:
1、如果一个星期就要上线,开发5天后才能把代码开发出来,你要怎么办;
2、如果开发代码质量特别差,你要怎么办
3、怎么保障测试用例的覆盖率
4、你会怎么写商品下单的测试用例
5、怎么提高测试用例的覆盖率
6、如果上线的时候发现很严重的bug,你会怎么处理
7、如果需求不明确,你会怎么办?
8、你会经常和产品经理,开发沟通交流吗

 

7月15

16:30 国家电网 线下面试 30分钟

有印象的面试题:
1:关于网页的兼容性测试

18:00 华为 电话面试  20分钟
1:python里防止app崩溃的语句 try
2:python的两个集合相加的结果

7月19
11:30  之江实验室  30分钟
1.深浅拷贝区别
2.用python找到列表里重复的数字,重复的次数
3.python去重用的什么函数
4.用python计算从1月1日到现在 经历了多少天
5.mysql的事务特性

13:00  10分钟
浙商
1.iframe框怎么定位
2.讲下之前做的银行业务
3.元素定位的方式
4.讲下银行项目和保险对比的话 有哪些复杂的点

 

1、自我介绍
2、接口、自动化、功能的比例
3、接口做过吗 主要用什么工具做
4、你们自己的项目里面有多少个接口
5、都是你一个人做的吗
6、你负责什么模块
7、投保的流程设计多少个接口
8、讲一下支付接口是怎么做的
9、有没有测过像延时 无网络 无响应这种接口,出现这种问题怎么去处理
10、什么时候开始做接口
11、接口里面的请求头的参数有哪些方式
12、请求体里面有哪些格式
13、做过接口自动化吗,怎么做的
14、接口自动化主要用来干嘛的
15、接口怎么去断言,具体的语句
16、求出学生表和教师表中每个班成绩最高的同学的名字和对应老师的名字
17、数据库中怎么去重
18、一个表里有是10组数据,我要查看第7个到第10个数据,怎么看
19、期望薪资多少,上家公司薪资多少
20、还有什么想要问的

 

1.自我介绍、自我的优势在哪?
2.如何做好测试?怎么把工作做好?有没有自己的总结?
3.如何设计高质量的用例?从哪体现?怎么覆盖全面?
4.上家公司地址在哪?项目什么时候上线的?在公司待了多久?为什么离职?
5.保险的测试重点有哪些?
6.你一个负责整个投保流程吗?每个险种是一个人来负责吗?
7.重疾险包括哪些?范围是?
8.怎么去信息核查?自己负责去调查吗?审核时间是多久?购买生效期是多久?是自己来设定吗?
9.购物车的测试点?
10.40个商品的数据 在接口 怎么测?怎么展现出来?怎么展示分页?
11.银行项目你是负责什么模块?安排的系统是什么?业务部门是什么?人员多少?
12.期待薪资?什么时候到岗?

 

博彦面试题
自我介绍
列表和元组的区别
python中的数据类型
python的基础库
ui自动化的流程
讲下你的项目

 

向阳-博彦  电话面试  自我介绍》 app测试关注点》 专项测试》 Python闭包》 闭包函数作用域》 自动化接口覆盖率》 接口覆盖的内容》 关联接口》 SQL更新数据》bug管理工具》po设计,封装》 接口自动化多久跑一次》 K8S》 docker??》是否在职

向阳 博彦 电话面试  自我介绍》 压测工具,流程》并发数多少》tps/qps多少,并发数多少》自动化说一下UI接口都可》web多还是app多》大概多少条用例》bug怎么定位》F12点出来在哪里看》看日志命令

 

2022.08.17号
oceanbase面试第一轮面试题
1、数据库的事务说一下 
2、数据库的事务的特性解释一下
3、数据库的多表查询有哪些方式
4、数据库的主键、外键、索引有哪些
5、数据库的锁、悲观锁和乐观锁有哪些
6、一般用数据库干嘛
7、常用的Linux命令有哪些
8、有没有用过Java做自动化测试 ==》补充问题:Java里面的封装继承和多态都分别解释一下是什么意思
9、Java里面的异常处理是怎么样的
10、Java做ui自动化元素定位方式有哪些
11、隐性等待和显性等待有什么区别、哪种会提升脚本的性能
12、碰到浮动框怎么定位? ==》回答可以通过jQuery或者JavaScript语法
13、iframe框怎么处理的
14、接口里面怎么做的数据驱动?讲一下对应的代码 ==》ddt或者Java里面的dataprovider数据提供者都可以
15、Python里面的元组和列表有什么区别
16、做自动化大概有几年了?
17、做自动化碰到的最困难的问题是什么? ==》可以回答环境维护、定位之类的
18、给你一个水杯你是怎么测试的?
19、你有什么要问我的嘛?



 

2022.08.17号
oceanbase面试第二轮面试题
1.讲解项目

2.项目流程
3.保险核保规则是什么
4.接口是怎么做的
5.接口怎么设计的测试用例
6.测了哪些接口
7.这个接口入参有哪些字段
8.返回的报文怎么断言的
9.接口的状态码有哪些
10.数据库用了哪些
11.数据库里面的功能主要用的哪些
12.说一下分组功能用什么SQL语句
13.数据库里面的事务有哪些特性、大概说一下
14.数据库索引有哪些
15.数据库存储过程是怎么创建的
16.Python里面的深拷贝和浅拷贝有什么区别
17.你的业务中用到了哪些表
18.Python用到了哪些库
19.数据库平时都用来干什么
20.Linux常用的命令有哪些
21.讲一下fiddler怎么抓HTTPS的包
22.怎么设置手动代理
23.你之前工作一天是怎么开展工作的
24.项目中碰到了哪些难点
25.有没有印象深刻的bug
26.对Oceanbase有没有了解过
27.接口自动化测试是怎么做的
28.讲一下你这个接口自动化框架是怎么样的
29.这个框架用了哪些库
30.写了多少条接口自动化用例
31.大概执行完需要多久
32.UI自动化你觉得价值大嘛
33.大概讲一下UI自动化是怎么做的
34.说一下你自己封装过什么工具类
35.手写一个xpath路径语法是怎么样的
36.性能测试做过吗?怎么做的
37.关注了哪些性能测试指标
38.性能有没有发现过一些异常和bug?最后是什么原因导致的
39.你们服务监控CPU和内存是用的什么工具?这些你都会吧
40.你对OceanBase了解多少呢?
41.你自己用过哪些数据库
42.你对SQL编程、数据库测试感兴趣吗?
43.如果你来了我们项目组你会怎么去开展测试和学习并且多久能融入项目组呢
44.你觉得你自己的性格是怎样的
45.如果用三个字形容你自己你会选择哪三个字
46.你接受加班吗
47.你们之前的加班强度是怎样的呢
48.你上家公司离职原因是什么
49.你接受的薪资大概是多少
50.你对我们这边意愿程度怎么样
51.你还有什么需要问我的嘛
52.到岗时间大概需要多久呢

 

2022.09.20号 字节跳动一面面试题
1、With open 的用法?
2、如何去继承父类?
3、New与int的区别?
4、对于发弹幕的测试点?
5、讲所使用的python的框架?
6、项目的中具体某个需求的如何实现?
7、Adb命令?
8、App与web端同时打开百度地址操作,用fiddler抓包,如何知道是抓的是app端还是web端的接口?
9、你用过开发者工具吗?
10、你用开发者工具来看什么数据?

 

华东科技院--2022.09.20号
1、自我介绍
2、挑一个熟悉的项目讲一下,在里面挑一个模块讲一下里面的业务流程
3、你在项目里有接触到测试计划或测试策略吗?主要包括哪几个点?
4、数据库用哪些?除了mysql还有什么?
5、有没有做过数据调优?
6、建立索引的依据(我为什么要去建立这个索引?)
7、工具用过哪些?
8、说一下Linux里常用的命令有哪些?(工作上常用到的)
9、看日志一般用哪几种命令?
10、我要查看一个端口被占用用什么命令?
11、有做过分布式的项目吗?(后端的架构)
12、微服务用的是什么平台?
13、有自己安装部署过吗?
14、有做过自动化吗?是那种界面自带的还是脚本?
15、比较熟悉的脚本语言说一下
16、有一个文件有十行文字,我要查看文件的每一行的最后一个单词,用Python讲下你的思路
17、开发和测试有什么区别(开发自测和测试自测)
18、有其他问题想了解的吗?

 

2022.09.20号-杭州银行(一面)
1.自我介绍
2.接口自动化,UI自动化在工作中的占比
3.比较熟悉那个自动化测试
4.自动化测试框架谁来搭建
5.selenium常用的定位方法
6.浏览器iframe弹框怎么处理
7.接口测试编写用例的流程
8.接口的报文是怎么获取?
9.接口测试有多系统交互的情况吗?
10.Linux服务器有接触吗?怎么查看日志
11.数据库用的什么,遇到过数据库死锁问题吗?怎么解决?
12.接口自动化怎么跟踪定位问题
13.会自己去看开发代码吗?有这个权限吗?
14.在工作上自己的进度推进不下去怎么处理?多久和领导沟通一次?
15.目前的居住地址,对上班的距离和时间有什么要求?
16.结婚了吗?有结婚打算吗?
17.原来也是外包公司吗?可以接受外包吗?

 

2022.09.20号-字节跳动面试题
1.自我介绍
2.什么样的场景要去做自动化测试?
3.接口自动化用什么工具做的?
4.自动化用例数量多少条,接口多少条?
5.做接口测试时关注哪些点?
6.之前测试中有遇到幂等的问题吗?
7.平时测试偏中台还是业务?
8.在做保险时主要做哪些险种?
9.保险涉及保费的场景多吗?
10.你在测试时会去关注保费的正确性吗?
11.保险中哪个产品比较难测或者时业务逻辑比较复杂的?
12.测试桩是怎么做的?
13.你对银行app中交易了不了解?
14.平时会去写一些python等辅助小工具吗?
15.使用优惠卷满10减5设计场景(异常场景)

 

1、自我介绍
2、项目详细介绍
3、征信核心
4、测试环境无法对接征信接口,你们是怎么测试的
5、征信是不是调用的第三方接口还是别的
6、调用的征信数据是什么样的
7、测试数据怎么造的
8、造数据是从人员身份造还是征信返回的数据造的?
9、征信信息怎么去改写
10、有出现过漏测的情况吗
11、做的自动化类型
12、有哪些自动化框架
13、自动化用例有多少
14、执行一轮自动化用例要做多久
15、自动化在哪里跑
16、Jenkins部署在哪里
17、用例用怎么部署到Jenkins
18、同事之间怎么用Jenkins去共享用例
笔试:讲解思路
给定一个包含n+1个整数的数组num,其数字部在[1,n]范围内(包括1和n),可知至少存在一个重复的整数
假设nums只有一个重复的整数,返回这个重复的数
你设计的解决方案必须不修改数组nums且只用常量级0(1)的额外空间
1
输入:=[13,4,2,2
计:2
示例2
输入:=[3,1,3,4,2
输出:3

 

2022-09-16东上科技
1、自我介绍
2、讲解项目经历:一到两个
3、项目人员
4、你项目的迭代周期
5、对于周迭代和两周迭代有什么看法
6、查询框流程:前端后端、服务器联系起来
7、接口测试get和post请求区别
8、Post请求参数为什么不能放在url地址里面
9、自动化回归测试优势
10、你写的自动化用例有多少
11、公司用例总共多少
12、你还有什么想问我的

 

2022-09-16-之江实验室(一面)
Python做了什么?
Python语言掌握的怎么样?
答:对第三方的库有一些了解,并可以熟练运用
正则中\和.的区别
讲讲你对字典的理解?
Python中列表怎么去重?
Python里面怎么计算今天是今年的第多少天?
项目流程?
设计测试用例从哪些方面?
答:前端、接口、后端、设计方法…、功能、性能、兼容
测试中有没有印象深刻的东西?
测试中你认为是个bug但是开发不认为是个bug怎么办?
数据库怎么使用的?
Drop  delete truncate的区别?
数据库中事务了解过吗?
答:事务是用来保证数据的一致性的。
测试中有没有遇到过网络上的故障?
有没有做过性能?
怎么看服务器有没有达到上限?
有没有测试过线上环境?
答:主要是功能,因为数据真实所以没办法进行
微信发红包的测试点?
微信安全性出发的测试点?
离职原因?

 

2022.9.26号  阿里二面面试题-支付宝
1.项目讲解
2.项目流程
3.MySQL数据库
4.常用Linux命令
5.jmeter问的非常多
6.jmeter的参数化有哪些方式
7.jmeter的断言方式有哪些
8.jmeter的7大元件分别的作用域是什么
9.jmeter做接口关联怎么做的
10.jmeter的正则表达式和json提取器
11.jmeter的bean shell脚本、前置处理器和后置处理器
12.jmeter的分布式压测怎么做的
13.jmeter的json断言怎么用的?如果返回值是树状结构jmeter里面的json断言怎么断言的
14.jmeter怎么做的压测?  jmeter的生成可视化报告用的什么插件
15.jmeter压测、如果不断的加并发但是CPU还是80%、有可能是什么原因导致的
16.接口自动化怎么做的
17.http协议的组成部分有哪些?
18.接口用例设计怎么设计的

 

postman里面接口测试怎么做的

Python列表追加有几种方法

列表(list)
liebiao=['中文','yingwen','2','2.2',['中文','yingwen','2','2.2']]#可以使用中文,英文,数字 注意:要使用字符串,允许元素重复使用
print(liebiao) #liebiao里面有一个中括号表示下标索引,要用,表示下一个索引
#增加列表,有四种方法增加列表:
第一种:使用append()函数增加列表项,在尾部增加一个元素
liebiao=['中文','yingwen','2','2.2']
liebiao.append('楷体') #使用变量名取调用函数,只能增加一个,添加到最后一位
#print(liebiao)

第二种:使用extend()函数增减多个列表项
liebiao=['中文','yingwen','2','2.2']
liebiao.extend(['楷体','宋体','隶书',]) #记得函数里面增加一个[]不然只能放一个,执行默认放在最后一位
注意:liebiao.extend('abcdefg') 如果这么写会被当作字符串,从而会被隔开,不会在一起
print(liebiao)

第三种:insert()增加指定列表项
liebiao=['中文','yingwen','2','2.2']
liebiao.insert(1,'zhiding') #从左边的下表第一位添加一个元素 下标为(012345)
print(liebiao)

第四种:使用+号进行合并操作
liebiao1=['中文','添加','2','2.2']
hebing=liebiao+liebiao1 #前后的位置取决与加的位置
print(hebing)


Python列表移除有哪些方法

一、del

删除列表或删除指定数据

1、 语法

del 目标 或 del(目标)

2、快速体验

2.1删除列表

list1 = ['python', 'java', 'php']
# 2种写法
del list1
# del(list1 )
print(list1) # 报错提示 NameError: name 'list1' is not defined

2.2 删除指定数据

list1 = ['python', 'java', 'php']
# del可以删除指定下标的数据
del list1[0]
print(list1) # ['java', 'php'] ---- 'python'数据被删除

二、pop()

删除指定下标的数据,如果不指定下标,默认删除最后一个数据,无论是按照下标还是删除最后一个,pop函数都会返回这个被删除的数据

1、语法:

列表序列.pop()

2、快速体验

# 不指定下标
list1 = ['python', 'java', 'php']
del_list = list1.pop()
print(del_list) # php
print(list1) # ['python', 'java']
# 指定下标
list2 = ['python', 'java', 'php']
del_list2 = list2.pop(1)
print(del_list2) # java
print(list2) # ['python', 'php']

三、remove()

移除列表中某个数据的第一个匹配项

1、 语法

列表序列.remove(数据)

2、快速体验

list1 = ['python', 'java', 'php']
list1.remove('python')
# list1.remove(list1[0]) # 和上面效果一样
print(list1)

四、clear() :清空列表

1、 语法

列表序列.clear()

2、快速体验

list1 = ['python', 'java', 'php']
list1.clear()
print(list1) # [] --- 空列表


pytest中的-s和-v有什么区别

使用 -v 参数,会在 console 里打印出具体哪条测试用例被运行,-s :用于显示测试函数中print()函数输出


pytest里面的只执行某个类用什么方法

pytest 文件名.py::类名  例如: #pytest.main(["-vs"],'./interface_testcase/test.py::TestLogin')  ==》只运行test模块里面的TestLogin类


pytest里面的失败重跑机制用什么装饰器

希望在某一条测试用例失败后重新执行,可以使用flaky装饰器 @pytest.mark.flaky(reruns=, reruns_delay=)  ==》reruns 指定重跑的次数,reruns_delay 指定重跑的延迟时间

 


提现的测试点

一、功能测试
1、点击提现按钮是否可以进入到提现界面
2、未登录的情况下是否可以点击提现
3、token失效或者登录态失效的情况下点击提现是否会跳到登录界面进行登录再提现
4、假设提现的额度最低为0.01,最高为50000元,我需要通过边界值测试
5、0.01能不能提现,100能不能提现,50000能不能提现,0.009能不能提现,50000.001能不能提现
6、带小数点或者浮点型的能不能提现
7、如果约束为小数点后2位、我用100.01能不能提现、我用100.009能不能提现成功
8、是否有提现笔数的限制,比如一天只能提现10次,我要测试,提现10次,11次
9、每天提现的限额是否有限制,比如一天是否限制为20万,超过20万是否会有文字提示:您的提现额度已经超过单日最高限制请每天再试,谢谢
10、输入字符串,为空,包含非法字符,包含中文字符等等能不能提现
11、是否可以全部提现按钮,是否可以点击
12、假如余额为10000,提现1000,是否会及时到账
13、提现1000之后,余额是否会刷新为9000
14、超过余额能不能提现
15、提现是否是实时到账还是2小时内到账
16、提现是否为T+1到账
17、是否可以提现到信用卡,银行卡
18、是否可以提现到已失效或者已销户的银行卡
19、如果提现失败资金是否会原路返回
20、提现是否需要服务费
21、提现是否可以进行免密提现
22、是否需要输入密码提现
23、是否可以刷脸提现
24、提现成功是否会有文字提示
25、输入错误密码是否可以提现
26、输入密码错误3次是否会提示当日提现输入密码错误超过3次,已锁定提现功能
27、提现成功是否会有提现记录和流水号等等
28、如果是在web网页和app同时提现是否会生成多个提现记录,是否会出现接口幂等性的问题
29、如果未绑卡进行提现,是否会显示需要先绑卡再提现

二、ui外观测试
1、提现界面文字是否清晰,布局是否合理
2、输入提现金额时指针是否会闪烁
3、输入提现金额的时候是否出现提现数字键盘
三、接口测试
1、点击提现按钮是否会通过调用提现接口做逻辑判断
2、提现到未知或者失效的卡中资金是否会通过调用接口原路返回
3、输入的金额如果超过可提现余额前端做了校验,但是通过调用接口看是否会做校验
4、如果该用户是黑名单或者风险用户是否禁止提现
5、提现的时候是否会做风控的校验,是否会调用第三方的实名认证接口
四、Android和iOS端兼容性测试
1、需要看提现功能在不同的系统比如Android和iOS系统的不同版本不同机型上面的显示功能是否完整
比如Android机型的话会测:华为、vivo、魅族、三星曲面屏、OPPO、小米机型等等,然后版本的话从5.0到12.0都有测
比如iOS机型的话会测:iPhone6 iPhone7 iPhone8 iPhone11 iPhone X ,然后版本的话从7.0到16.0系统都有测,然后除了系统和版本,还需要测试分辨率,华为手机屏幕的适配,苹果的齐刘海,三星的曲面屏,还有折叠屏等等
五、易用性测试
1、所有的用户是否可以通过查看文字和实现的功能很简单的进行提现操作
2、是否可以容易上手使用提现功能
六、性能测试
1、不断刷新页面和打开提现页面是否会对服务器造成压力
2、不同的用户在同一个时间然后都同时进行提现操作,调用接口是否会对服务器造成压力
七、弱网测试
1、通过fiddler抓包点击Performance→勾选Simulate Modem Speed,然后打开Customize Rules,如果m_SimulateModem为True,也就是fiddler开启了弱网模式,那么上传1KB的内容 需要300ms(转化后的上传速度为1KB/0.3s=3.3KB/s),下载1KB内容需要150ms(转化后的下载速度为1KB/0.15s=6.6KB/s)
如果要模拟2G网络, 上传下载配置如下:
oSession["request-trickle-delay"] = "3000";
oSession["response-trickle-delay"] = "1500";
如果要模拟3G网络,上传下载配置如下:
oSession["request-trickle-delay"] = "20" ;
oSession["response-trickle-delay"] = "10";
手机APP使用SIM卡数据流量的话,要考虑不同的运营商:联通、移动、电信,根据上行速率、下载速率来设置参数。
计算公式为:[1/(上或下行速率/8)] x 1000
注意:1KB=8kb
步骤3:设置完成后,保存。
这时步骤1勾选的Simulate Modem Speed会被取消勾选,需要重新勾选一下再进行测试。看一下弱网测试前和弱网测试后的丢包和一些网络超时
八、稳定性测试
1、通过ui自动化或者接口自动化的方式实现,不断的打开提现页面进行提现的操作,点击返回,然后看提现界面是否会出现信息是失误,比如是否出现提现失败,绑卡失败,提现超时和其他的接口报错等等
2、可以通过monkey工具进行随机自动化测试、看提现功能是否可以正常的打开和提现


数据库里面升序和降序


一个礼拜找出里面的2个数相加等于传入的参数的数值

复制代码
def fun1():
    list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    new=[]
    for i in list1:
        if i % 2 == 0:
            new.append(i)
    print(new)

fun1()

def fun(value):
    list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    list2 = []
    for i in range(len(list1)):
        for j in range(len(list1)-1):
            if i+j == value:
                list2.append((i,j))
    return (list2)

result = fun(6)
print(result)
复制代码

 

 

银行卡扣费


扣费测试点

ui自动化框架

有内嵌怎么解决


断点失败是什么原因


把列表当中把偶数提取出来

def test():

  list = [1,2,3,4,5]

  list_new = []

  for i in list:

    if i%2==0

    list_new.append(i)

  print(list_new)

test()


a 学号  姓名  年龄 性别   b 成绩表  学号 班级 科目 成绩
题目:学生各科平均成绩大于的80的学生和平均分数

select  a.name,avg(b.fengshu) from a inner join b on a.学号 = b.学号 group by a.name having avg(fengshu)>80;

 

  
有a表(学号,姓名,性别,年龄)和b表(学号,班级,科目,分数),求出总分大于800分的学生姓名 

select  学生表.name from 学生表 left join 成绩表 on 学生表.学号 = 成绩表.学号 group by 学生表.name having sum(score)>800;

左连接后的检索结果是显示tbl1的所有数据和tbl2中满足where 条件的数据。不满足则显示null

右连接则相反

inner join(内连接):左右两张表连接字段相等的一个数据

 

求出列表中最大的三个数  

def test():
    list1 = [3, 1, 2, 5, 77, 11, 7]
    a = sorted(list1,reverse=True)
    print(a[0:3])

test()

list = sorted(iterable, key=None, reverse=False)  

其中,iterable 表示指定的序列,key 参数可以自定义排序规则;reverse 参数指定以升序(False,默认)还是降序(True)进行排序。sorted() 函数会返回一个排好序的列表。

 

朋友圈点赞

https://www.cnblogs.com/chenxiaomeng/p/14602234.html




 

软件测试面试中90%会遇到的问题;你会搭建测试环境吗?

 

面试的时候,遇到这样的提问,很多人的都会感觉脑子一下一片空白,或者星星点点,不知道从何说起。

一方面不知道面试官问这个问题的意图是什么?也不知道他想得到的答案是什么?

更加不知道该从哪些方面来回答。

作为一个测试行业从业8年有余的测试人员,我想跟大家分享一些我的经验和看法。

 

首先,毋庸置疑的是,面试官问这个问题,想要得到的是你肯定的答案,希望你是一个会搭建测试环境的优秀测试工程师。

QA不管是做什么类型的测试,最基础的功能测试,需要搭建测试环境;

进阶部分的性能压力测试,对搭建环境的要求更高。

所以搭建测试环境是优秀测试工程师的必备技能之一,也是QA开展测试工作的前置条件。


当然有些公司可能会有运维或者研发部门帮忙准备好测试环境,但是QA如果一味依赖别的部门,就会大大的局限测试工作的开展,如果别的部门没有时间或者进度滞后,会直接影响到测试工作的进度和效率;

而且测试环境如果不是QA负责维护的,后期扩展业务需要优化测试环境的时候,或者遇到问题要调试的时候,都需要依赖其他部门,会导致测试工作不独立,也会显得测试工作人员不专业。

了解了QA具备搭建测试环境能力的重要性,那么真正要具备搭建测试环境的能力,需要掌握哪些技能和知识呢?

这就需要我们先知道测试环境是什么?

测试环境(Testing Environment),是指为了完成软件测试工作所必需的计算机硬件、软件、网络设备、历史数据的总称,简而言之,测试环境=硬件+软件+网络+数据准备+测试工具。

显而易见,我们要学会搭建测试环境,需要具备这5种的技能和知识。

所以,我们针对每一个知识领域大家需要掌握的知识点及其深度和广度,给大家做个详细的介绍,希望能给大家作一个指引,知道自己该努力的方向。

硬件,一般测试会涉及到的硬件就是计算机系统相关的内容,比如Windows系统,Linux系统和MacOS系统。

测试环境可以部署在以上任何一种系统上,根据当前被测软件的具体需求而定。

一般软件的运行平台,可能会更多的在Windows系统上;但是相关服务的搭建,比如软件运行需要交互的服务,或者是软件后台的承载服务,都会在Linux系统上搭建。

所以Linux系统相关的命令和操作是QA必须要知道而且熟练的。

 

Linux系统有很多类型,如CentOS,Ubuntu,Redhat,Debian等,根据产品的具体需求选择合适的系统就可以。

另外,我们最好还要知道怎么安装Linux系统,因为在很多公司会给QA提供设备资源,需要QA根据需求在服务器上部署Linux系统。 (不会安装linux系统的同学也可以找我要软件还有视频安装哦)

这里还需要注意的一点,就是软件运行对硬件的要求。

通常软件说明书上会明确软件对硬件的需求,比如CPU个数,内存大小,硬盘大小,网卡个数等信息,如果没有明确要求,QA可以跟开发或者产品沟通确认。

所以,关于硬件这块,需要大家对各种操作系统有所了解,特别是能够操作Linux系统常用命令,能够安装系统,并且配置IP、路由等基础网络(这个在网络部分会再重点讲到),能够在各种系统上安装和搭建常用的服务。


软件,包括当前被测的软件以及相关依赖和交互的软件。

当前被测软件的部署,一般在部署好的Linux系统上安装好服务之后,可以直接在前端通过web或者APP访问,后端只要部署完成了,前端的运行还是比较简单的;依赖和交互的软件,一般是一些支持的软件,比如JDK,tomcat,数据库等。

怎么安装部署,大家可以去自行百度,网上相关的教程很多,如果找不到,我可以发相关资料给大家,基本上30分钟就可以搭建好JDK+tomcat+数据库

 

网络,这个可能是很多测试人员的一个知识盲区。

网络是一个比较庞大的知识体系,涉及的内容特别多而且复杂。

所以大家可以优先学习一些跟搭建环境密切相关的网络知识,然后自己再慢慢的去渗透和深造。


一般公司网络环境,最基本的要求是交换和路由相关的知识。

比如要自己搭建一个网络拓扑,使用多台网络设备(如服务器,路由交换等中间设备,客户端等),QA需要规划和配置IP地址,部署路由和VLAN等相关配置,实现网络隔离和通信,这样才可以开展正常的业务测试;另外,对于一些常用的基础网络协议,如TCP,UDP,HTTP等,最好也能有个基本的认知,因为很多服务都是基于这些基础协议实现的,知道这些能够加深自己的理解,有利于测试的作的实现。

当然,如前面提到的,除了以上网络设备,我们还需要操作Linux的基本网络配置,如Linux IP和路由配置,Linux系统命令抓包,调试网络通信问题等,这些都是需要Linux命令和网络基础知识结合在一起使用的。


数据准备,一般指测试数据的准备。测试数据会在测试用例设计的阶段设计好,然后软件运行的时候,作为软件输入去验证软件功能。

如果是少量、正常的测试数据,可以直接通过手动方式模拟出来,如果是大量的用户数据的模拟,可以借助测试工具来构建,这个接下来的测试工具部分会再详细讲到。


测试工具,是很多测试人员都比较感兴趣而且趋之若鹜的一个知识领域。

大家执行功能测试的时候,会利用各种工具代替手工,简化和深化测试;执行压力和性能的时候,就更加需要借助测试工具模拟出来高并发、高吞吐、高持续的数据。

由此可见,工具确实很重要也很实用,纵观大量招聘公司的职位要求,基本都有“熟悉xxx测试工具”的明确要求项。

QA可以针对自己将要做的测试类型,选择合适的工具进行学习。

比如你要做的是接口测试,可以选择Jmeter或者postman;你要做压力和性能测试,可以学习Loadrunner,IxLoad或者Avalanche的使用;要模拟多种协议的流量,也可以使用Linux上常用的流量测试工具,如Hping,Curl,ab等;还有一些常用的debug和抓包工具,如fiddler,wireshark等,也可以学习并且使用起来。

总之,工具是辅助测试的好帮手,灵活使用可以让你的测试效率事半功倍。

 

当然,这里想补充一句,工具的重要性确实无可厚非,但是大家还是不要盲目崇拜,一味追求工具的学习和使用,因为工具再好也仅仅就是一个工具而已,还是需要专业测试人员应用良好的测试思路和理念去恰到其分地使用到测试中,才能将其作用发挥到极致。

讲到这里,可能会有很多人都觉得压力山大,毕竟要掌握这么多专业的知识,对任何一个人来说都不是一件易事。如果能够全部掌握固然是完美,但是对于经验没有那么丰富的人,甚至有很多从事测试多年的测试工程师,都无法自信的笃定自己可以在这所有的知识领域里游刃有余。

所以,在你成长成为一个全能型优秀测试工程之前,被面试官问到这种问题要怎么办呢?

这里,我可以分享给大家一些小技巧。

 

首先,去面试之前,先了解你要去面试的公司具体是个什么类型的公司

    其实这点,不止针对这个问题,应该是针对所有的面试,都应该先弄清楚你要去面试的公司主要业务和职位要求,有针对的去准备自己的知识点和回答问题的方向,这是面试的一个必备智慧。好,回到我们今天要讨论的环境搭建的问题,因为不同的公司所需要你具备的搭建测试环境的能力是不一样的。

    比如是一个传统的网络设备公司,如路由交换,防火墙等业务产品,他会要求你更偏向于的网络基础知识多一些,如网络拓扑的搭建和配置,相关协议的使用等,所以你可以提前做好相关知识的准备;

    如果是传统的Windows软件的公司,搭建测试环境大部分都是跟系统相关的,也就是上面我们讲到的硬件部分要求的内容。那么你就可以提前把Linux系统的相关的知识抓紧时间恶补一下;

    如果是时下最流行的互联网公司,测试web应用,PC 端APP和移动端APP软件的较多。

搭建这样的测试环境,则侧重更多的是Linux系统知识,还有相关服务的搭建以及各种工具的使用。 当然,这种分析也只是一个大概的总结,不是绝对正确也不能涵盖所有的情况,所以大家做一个参考就好。不过,先分析公司类型和业务,针对岗位需求提前做准备的这种思路,肯定是百利而无一害的。

另外,面试之前,大家一定要根据自己已有的工作经验和知识体系做好相关的梳理

大部分面试官,都会要你根据工作经验描述搭建测试环境的过程,那么你就需要在实际项目经验的基础上,结合自己的知识储备,然后再有针对性的组织语言去迎合当前面试公司的要求,总结出来一份漂亮而且能满足对方预期的答案。这么说可能会有些抽象,我们可以来看个具体实例。

面试官:你以前公司测试需要自己搭建测试环境么?你会自己独立搭建测试环境么?

你:我们原来公司都是测试人员自己搭建测试环境的,因为这样子的测试工作能比较自主独立的开展,而且后期的维护也会比较方便一些(首先,肯定的回答了问题,告知你是会搭建测试环境的,而且也表达了你认为测试人员会搭建测试环境的必要性)。

我们一般会在拿到测试需求的时候,根据需求先把准备环境好。因为我上一家公司是一家防火墙公司,有自己的设备,也有相应的web应用和APP,所以我会同时测试这些前端应用以及防火墙设备服务(先介绍一下公司的业务类型以及自己的测试的产品,以方便后面讲环境搭建的重点,这里可以根据自己的实际情况而定)。

所以准备这样的测试环境,我们会需要准备两台Linux服务器分别模拟客户端和后端服务器,搭建好测试拓扑,配通网络就可以(表明网络基础配置能力你是具备的);然后Linux系统我们一般也会自己安装,而且还要准备好相应的服务(表达出Linux系统的操作和常用服务搭建也是OK的);然后我们会用客户端模拟一些用户流量,也会在Windows上安装一些常用的测试工具来模拟用户数据来测试产品(常用测试工具也是没有问题的)。这样最初的测试环境搭建基本就完成了。

面试官:所以Linux系统你是会用的对吧?你们一般会安装一些什么服务?具体操作步骤能简单描述一下么?(他会根据你的描述挑出来他感兴趣的点来细化的问你,比如一些具体的知识细节)

你:(这个时候,就需要你回答具体的细节了,考验你的技术硬核能力了。当然,如果遇到自己不是很清楚的,一定要避重就轻,聪明的引导面试官问你擅长的领域,比如“这个我不是太了解,但是我用过另外一个xxx,这个我比较熟悉”) ......

总而言之,面试官问你这样的问题,一方面是想考察你的技术能力,另一方面也想考察你的表达能力。

所以,大家可以对照一下上面列出来的知识点,如果感觉自己的知识储备不足,可以趁面试之前好好补习一下;

如果发现很多知识领域自己都有涉猎,但是回答的时候不知道从哪里开始,那就根据自己的经验和实际情况,时常总结和沉淀,梳理自己的知识体系。记住,毫无准备的面试,成功率都不会太高;善于总结积累的人,运气都不会太差!

posted @ 2023-02-15 22:15  handsome_bad_boy  阅读(87)  评论(0)    收藏  举报