精华内容
下载资源
问答
  • 创建软件需要什么条件
    千次阅读
    2019-08-10 16:21:12
    1. 索引的介绍
      索引在MySQL中也叫做“键”,它是一个特殊的文件,它保存着数据表里所有记录的位置信息,更通俗的来说,数据库索引好比是一本书前面的目录,能加快数据库的查询速度。
      当数据库中数据量很大时,查找数据会变得很慢,我们就可以通过索引来提高数据库的查询效率。

    2. 索引的使用
      查看表中已有索引:

    show index from 表名;

    说明:
    主键列会自动创建索引

    索引的创建:

    -- 创建索引的语法格式
    -- alter table 表名 add index 索引名[可选](列名, ..)
    -- 给name字段添加索引
    alter table classes add index my_name (name);
    
    

    说明:
    索引名不指定,默认使用字段名

    索引的删除:

    -- 删除索引的语法格式
    -- alter table 表名 drop index 索引名
    -- 如果不知道索引名,可以查看创表sql语句
    show create table classes;
    alter table classes drop index my_name;
    
    
    1. 案例-验证索引查询性能
      创建测试表testindex:
    create table test_index(title varchar(10));
    

    向表中插入十万条数据:

    from pymysql import connect
    def main():
    # 创建Connection连接
    conn = connect(host='localhost',port=3306,database='python',user='root',passwor
    d='mysql',charset='utf8')
    # 获得Cursor对象
    cursor = conn.cursor()
    # 插⼊10万次数据
    for i in range(100000):
    cursor.execute("insert into test_index values('ha-%d')" % i)
    # 提交数据
    conn.commit()
    if __name__ == "__main__":
    main()
    
    

    验证索引性能操作:

    -- 开启运⾏时间监测:
    set profiling=1;
    -- 查找第1万条数据ha-99999
    select * from test_index where title='ha-99999';
    -- 查看执⾏的时间:
    show profiles;
    -- 给title字段创建索引:
    alter table test_index add index (title);
    -- 再次执⾏查询语句
    select * from test_index where title='ha-99999';
    -- 再次查看执⾏的时间
    show profiles;
    

    4.联合索引
    联合索引又叫复合索引,即一个索引覆盖表中两个或者多个字段,一般用在多个字段一起查询的时
    候。

    -- 创建teacher表
    create table teacher
    (
    id int not null primary key auto_increment,
    索引
    84
    name varchar(10),
    age int
    );
    -- 创建联合索引
    alter table teacher add index (name,age);
    

    联合索引的好处:
    减少磁盘空间开销,因为每创建一个索引,其实就是创建了一个索引文件,那么会增加磁盘空间
    的开销。

    1. 联合索引的最左原则
      在使用联合索引的时候,我们要遵守一个最左原则,即index(name,age)支持 name 、name 和 age 组合查
      询,而不支持单独 age 查询,因为没有用到创建的联合索引。
    -- 下⾯的查询使⽤到了联合索引
    select * from stu where name='张三' -- 这⾥使⽤了联合索引的name部分
    select * from stu where name='李四' and age=10 
    -- 这⾥完整的使⽤联合索引,包括 name 和 age 部分
    -- 下⾯的查询没有使⽤到联合索引
    select * from stu where age=10 -- 因为联合索引⾥⾯没有这个组合,只有 name | name age 这两种组合
    
    

    说明:
    在使用联合索引的查询数据时候一定要保证联合索引的最左侧字段出现在查询条件里面,否则联合索引失效

    • MySQL中索引的优点和缺点和使用原则
      优点:
    • 加快数据的查询速度
      缺点:
    • 创建索引会耗费时间和占用磁盘空间,并且随着数据量的增加所耗费的时间也会增加

    使用原则:

    1. 通过优缺点对比,不是索引越多越好,而是需要自己合理的使用。
    2. 对经常更新的表就避免对其进行过多索引的创建,对经常用于查询的字段应该创建索引,
    3. 数据量小的表最好不要使用索引,因为由于数据较少,可能查询全部数据花费的时间比遍历
      索引的时间还要短,索引就可能不会产生优化效果。
    4. 在一字段上相同值比较多不要建立索引,比如在学生表的"性别"字段上只有男,女两个不同值。相反的,在一个字段上不同值较多可是建立索引。
    • 小结
      索引是加快数据库的查询速度的一种手段
      创建索引使用: alter table 表名 add index 索引名[可选] (字段名, xxx);
      删除索引使用: alter table 表名 drop index 索引名;
    更多相关内容
  •  优秀程序员的一个突出特点是他们采用高质量的过程来创建软件。这种过程在计划的开始、中间和末尾都强调高质量。  如果你只在一个计划即将结束时强调质量,那你注重的只是测试。  如果在一个计划的开始强调质量...

    3.1 先决条件重要性
            优秀程序员的一个突出特点是他们采用高质量的过程来创建软件。这种过程在计划的开始、中间和末尾都强调高质量。
            如果你只在一个计划即将结束时强调质量,那你注重的只是测试。
            如果在一个计划的开始强调质量,这意味着你计划并要求设计一种高质量的产品。
    3.1.l 造成准备不足的原因
            一些程序员并不做准备工作,有两条忠告:第一,阅读一下下一部分工作的内容提示,或许你会从中发现一些你没想到的问题;第二,要注意自己的问题。
    3.1.2 在进行创建工作之前必须做准备工作的论据
            在你进行编码、测试和调试之前,学会这些论据,并且和你的老板推心置腹地谈谈技术项目的开发过程。
            求助于逻辑推理:进行有效程序设计的关键之一就是认识到准备工作是非常重要的。
            求助于类比:创建一个软件系统与其它需要耗费人力与财力的工程是一样的。
            求助于数据:过去十五年的研究证明,一次完成是最好的选择,不必要的修改是非常昂贵的;通常的准则是,一旦引入错误,就尽早发现和消除它;错误在软件食物链中存留的时间越长,它的危害也就传播得越远。


    3.2 问题定义先决条件
            在进行创建工作之前你要满足的第一个先决条件,便是必须弄清楚你想要解决的问题是什么。
            问题定义只描述要解决的问题是什么,根本不涉及解决方法;问题定义的工作是在需求分析之前进行,后者是对问题的更为详尽的分析;问题定义应该从用户的观点出发,使用用户的语言进行定义。


    3.3 需求分析先决条件
            需求详细描述了一个软件系统需要解决的问题,这是找到问题答案的第一步;这项活动也被称作“需求分析”、“需求定义”等。
    3.3.1 为什么要有正式的需求
            明确的需求是很重要的,因为:1)明确的需求可以保证是由用户而不是程序员决定系统的功能;2)明确的需求也可以避免引起争议;3)注意需求定义,也可以使得在开发工作开始之后,对系统作的改动最小。
            充分进行需求分析是一个项目成功的关键,很可能比使用有效的创建技术还重要
    3.3.2 稳定需求的神话
            有了稳定的需求,软件开发工作可能从结构设计到详细设计到编码,都平稳、顺利地进行。
    3.3.3 在创建阶段如何对付需求变化
            在创建阶段,为应付需求变化而应该采取的措施:1)用检查表来评估你的需求分析质量;2)让每个人都知道由于变化需求所付出的代价;3)建立一套更改控制过程;4)用开发的方法来容纳变动;5)放弃项目。
    3.3.4 检查表
            需求:这个需求检查表包含一系列关于你的项目需求的自测题。
            需求内容、关于需求的完善性、关于需求的质量。


    3.4 结构设计先决条件
            软件结构设计是较高级意义上的软件设计,它是支持详细设计的框架;结构也被称为“系统结构”、“设计”、“高水平设计”或者“顶层设计”;一般说来,结构体系往往在一个被称为“结构定义”或者“顶层设计”的单一文件中进行描述。
            为什么要把结构设计当成先决条件呢?因为结构设计的质量决定了系统概念上的完整性,而这又会决定系统的最终质量;好的结构设计可能使创建工作变得很容易,而坏的结构设计则使创建活动几乎无法进行。
    3.4.1 典型的结构要素
            程序的组织形式:一个系统结构首先需要一个总体上的概括性描述;在结构设计中,你应该能找出最终组织形式的几种方案,并且应该知道为什么选中了现在这种组织形式;在结构设计中,应该在程序中定义主要模块;每一个模块作什么应该明确定义;每个模块之间的交界面也应该明确定义。
            变动策略:变动产生的原因可能是由于反复无常的数据结构,也可能是由于文件格式和系统功能改变,新的性能等而引起的;结构设计应该清晰地描述系统应付变动的策略;结构设计中应该说明用于延缓变动的策略。
            购买而不是建造的决定:创建一个软件的最彻底的办法并不是创建—而是去购买一个软件;如果计划中要求使用已有的程序,那它就该指出如何使这些重新被使用的软件适应新的需求,而且它应该证明这个软件可以通过改动来满足新的需求。
            主要的数据结构:结构设计应该给出使用的主要文件、表和数据结构,同时,还应给出考虑的替代方案并评审做出的选择;不应该允许一个以上的模块访问数据结构,除非是通过访问子程序,以使得这种访问是抽象的而且是可控的;如果一个程序使用了数据库,那么结构中应该规定这个数据库的组织形式和内容;最后,应该遵循数据守恒定律。
            关键算法:如果结构设计依赖于某一特定算法,那它应该描述或指出这一算法。
            主要对象:在面向对象的系统中,结构中应指出要实现的主要对象,它应该规定每一个对象的责任并指出每个对象之间是如何相互作用的,其中应包括对于排序层次、状态转换和对象一致性的描述;结构中还应该指出考虑的其它对象,以及选择这种组织形式的原因。
            通用功能:用户界面、输入/输出、内存管理、字符串存储。
            错误处理:需要考虑的问题包括:1)错误处理是纠正还是仅仅测试错误?2)错误测试是主动的还是被动的?3)程序是怎样对付错误的?4)处理错误信息的约定是什么呢?5)在程序中,应该在哪一个层次上处理错误呢?6)每一个模块检验输入数据合法性的责任级别有多高?
            坚固性(Robustness):是指在发现错误后,一个系统继续运行的能力;在结构设计中需要从几个方面表述坚固性:1)裕度设计(over-engineering);2)断言(assertions);3)容错性(fault tolerance)。
            性能:性能目标包括速度和内存使用。
            通用的结构设计质量准则:一个好的结构设计特征包括对于系统中模块的讨论,每个模块中隐含的信息,选用和不选用某方案的原因;概念完整性是最重要的;每一次变动都应与总体和设计概念相符;结构的目标应该清楚地说明;结构中做出每一个决定的动机都要阐明清楚;好的软件结构往往是机器和语言相互独立;结构设计应该恰好在过分定义和定义不足的分界线上;结构中不应该有任何部分让你感到不舒服。
    3.4.2 检查表
            结构设计:一个好的结构设计应该阐明所有问题,这个表并不是用于指导结构设计的,而只是想提供一种方法。


    3.5 选择编程语言先决条件
            当程序员使用自己所熟悉的语言时,其工作效率要比使用陌生的语言高得多。
            使用高级语言编程,其效率和质量要比使用低级语言高得多。
            一些语言比其它语言更擅长解释编程思想;程序员也可能同样受到他所懂得的程序语言限制;程序语言影响程序员的思想方法。
    3.5.1 语言描述
            Ada语言:是一种在Pascal语言基础上发展的通用高级语言,它是在国防部的要求和资助下发展起来的,特别适用于实时和嵌入式系统。
           汇编语言:汇编语言,是一种低级语言,每一条语句都与一条机器指令相对应。
           Basic语言:Basic原来是一种解释性语言,现在则解释性和编译性两种形式都有。
           C语言:C是一种中级通用语言,有某些高级语言的特点,例如,结构化数据、结构化控制流、对于机器的独立性、丰富的操作指令等。
           C++语言:C++是一种面向对象的语言,除了与C兼容之外,C++提供了多态性和函数重载功能,同时,它还提供了比C更坚固的类型检查功能。
           Fortran语言:Fortran是一种高级语言,引入变量和高级循环的概念,主要在科学和工程计算中使用。
           Pascal语言:主要特征是严格的类型、结构化控制创建和结构化数据类型。
    3.5.2 语言选择快速参考表
     


    3.6 编程约定
            在高质量软件中,你可以发现结构设计的概念完整性与较低层次实现之间的密切联系。
            在复杂的软件中,结构设计指导方针对程序进行结构性平衡,而实现指导方式则在较低层次上实现程序的和谐统一,使得每一个子程序都成为总体设计的一个可以信赖的组成部分。
            在创建工作开始之前,一定要写明你将要采用的编程约定,约定说明一定要写得非常详尽,使得在编程过程中无法对其进行改动。


    3.7 应花在先决条件上的时间
            用于问题定义、需求分析和软件结构设计的时间,随项目需要的不同而不同。一般来说,一个运行良好的项目通常把20%~30%的时间用于先决条件。


    3.8 改变先决条件以适应你的项目
           先决条件随项目规模和正式性不同而变化。


    3.9 小结

    (1) 如果想开发一个高质量的软件,必须自始至终重视质量问题;在开始阶段强调质量往往比在最后强调质量更为有效。
    (2) 程序员的份内工作之一便是向老板和同事宣传软件的开发过程,包括在编程开始前从事先决条件准备工作的重要性。
    (3) 如果问题定义工作做得不好,那么在创建阶段,所解决的问题可能并不是用户真正要解决的问题。
    (4) 如果需求分析工作做得不好,很可能因此而漏掉要解决问题中的重要细节;在创建工作后更改需求,要比在需求分析阶段进行更改的成本高20到100倍;所以,在开始编程前一定要确认需求定义工作一切正常。
    (5) 在编程前规定好约定,在创建工作结束后再改变代码来满足约定几乎是不可能的。
    (6) 在创建活动开始之前如果无法完成准备工作,可以尝试在不太稳固的基础上进行创建活动。

     

           本章小结:

           本章介绍了在创建软件之前,我们需要做什么。

            实际的软件项目中,在动手编代码之前,我们要做的一件非常重要的事情就是需求评审。这件事情做得是否好,可以决定一个软件项目的成败。

            所谓的“需求”,通俗地讲就是要开发人员做什么。由于我们不是直接和客户沟通,因此要经过一个叫做SE的角色来了解需求,这就不可避免地可能会出现偏差,即做出的东西不是客户想要的。

            我们如何进行需求评审呢?一般操作如下:

            第一步:SE(系统工程师)将需求写成一个文档,并预定一个会议室,叫上相关开发人员和开发经理去评审。这里的“评审”,其实就是大家坐在一起讨论,看文档上面写的东西能否实现。

            第二步:开发人员和开发经理根据实际情况,发表意见,对于无法完成的需求予以驳回,或者是提出另外一种实现方式。

            第三步:大家就争议较大的需求进行集中讨论,最终定出一个大家都可以接受的方案,并通知客户,看是否能够得到他们的认可。

            第四步:在与客户沟通之后,SE编写一个最终的需求文档,并通知开发人员和开发经理,进而才可以正式启动开发。

            在软件项目中,我们一定要把问题扼杀在最初的需求阶段,否则越到后面,修改起来越难,花费的成本也越高。

            很多公司(包括一些大公司),是没有“需求评审”这个环节的,这样的公司做出来的东西,一般都会有很多问题,而且项目亏损的可能性极大。

    展开全文
  • 详细讲解应聘软件测试岗位所需要掌握的一些列基础知识与技能,包括软件测试的基本概念和基本流程、基础的网络知识、常用的数据库技能以及常用的Linux命令等。

    目录

    1、前言

    2、要掌握的基础知识及技能概述

    3、软件测试的基本流程与基本概念

    3.1、一个软件产品从无到有的完整流程

    3.2、软件测试工程师的职责与工作内容

    3.3、测试的分类

    3.4、测试用例的编写

    3.5、软件的产品形态

    4、基本的网络知识和常用的网络命令

    4.1、基本的网络知识

    4.2、常用的网络命令

    5、数据库与常用的SQL语句

    6、常用的Linux命令

    7、自动化测试工具的使用与自动化脚本的编写

    8、做软件测试是否有前途?

    9、应聘途径的选择

    9.1、通过校园招聘应聘

    9.2、通过招聘网站应聘

    10、作为应届生,面对严峻的就业形势,该怎样应对?

    11、最后


           最近和一些高校的学生朋友交流,他们打算毕业后从事软件测试的工作,他们想了解一下软件测试的一些工作内容和工作方式,想知道应聘软件测试岗位要掌握哪些知识和技能。今天我们就来讲一下在应聘软件测试岗位之前需要学习哪些内容,做好哪些方面的技能储备,给大家提供一个参考。

    1、前言

           IT行业主要有两大类岗位,一是研发类岗位,一个是测试类岗位。以前我经常讲,测试岗位相对研发岗位,门槛要低不少,对学历和能力的要求要低一些,很多同学都可以来应聘软件测试的工作。

           除了计算机科学与技术、软件工程等计算机类专业的同学,其他计算机相关专业的同学也可以来从事IT相关的工作,比如电子信息工程、通信工程、电气自动化、自动化等专业,甚至是数学、物理、化学等专业同学也进入了IT行业。虽然很多IT公司的招聘岗位说明中都有提到招聘计算机专业和计算机相关专业,但实际招聘时并不会有特别的限制,只要是有一定基础的理科和工科的同学,都可以来应聘。实际情况也确实是这样的,在公司我们接触到的同事,很多都是非计算机专业毕业的。

           作为从事IT行业十多年的软件开发人员,我经常和软件测试人员打交道,对软件测试行业比较了解,对招聘软件测试人员的要求也比较熟悉!我已经成功帮助一个足球队建制的朋友们跨入了软件测试行业,其中有刚毕业的应届生,也有在其他行业工作若干年中途转到IT行业的朋友,所以在这方面积累了一些技术和经验。这些朋友在应聘软件测试岗位之前,我都会给他们做一些基础知识的技术培训,包括软件测试的基本概念和基本流程、基础的网络知识、常用的数据库技能以及常用的Linux命令。在这里我把这些培训的心得和细节内容,详细分享给大家,希望能帮到大家。

           以下内容不仅仅适用于即将毕业的同学,也适用于一些在校的学生(可以提前将相关知识储备起来),也适用于中途转行的朋友(中途转行进入软件测试行业)。

    2、要掌握的基础知识及技能概述

           从当前IT行业对测试人员普遍要求来看,一般需要了解软件测试的基本流程与基本概念,了解测试用例的编写;要了解基本的网络知识;要了解数据库的基本概念,掌握常用的SQL语句;要熟悉常用的Linux命令等。如果会使用常用的自动化测试工具(比如按键精灵、QTP、selenium、Jmeter等),能用Java和Python脚本语言编写自动化测试和接口测试的脚本,就更好了。在各大IT公司的岗位招聘说明中,基本上都是对这些知识和技能的要求。下面我们就来详细讲述一下这些基础知识和技能,帮助大家尽快掌握,以满足大部分IT企业的要求。

            这些基础知识和技能,都是笔试或者面试常考的点,大家都要掌握。

    3、软件测试的基本流程与基本概念

           这部分内容,是一个软件测试工程师必须要了解的内容,在进入到软件测试行业之前,要对这个行业有个初步的认识和理解。

    3.1、一个软件产品从无到有的完整流程

            一个全新的软件产品从开始萌芽到最终商用,大体上会经历市场调研、技术预研、竞品分析、产品规划、产品立项、需求导入(需求人员)、需求评审、UI效果图与视觉设计(UCD美工)、编码设计(开发人员)、测试用例编写(测试人员)、测试验证、bug修改、产品bug收敛、产品发布等多个阶段。

           产品交付给客户后,因为用户机器和系统环境的不同,在用户使用的过程中会陆续报出之前未曾暴露的bug,需要研发和测试人员及时地定位、修复这些问题。客户在项目竞标等初始阶段或者在使用过程中也会提出新的需求或定制需求,产品自身也会陆续加入新的需求,产品的版本会不断的向前演进,这样就进入了产品的后期维护与需求迭代的循环往复的过程。

           面试时,面试官可能会让你简单的描述一下产品从无到有的过程,谈谈你的认识和理解。

    3.2、软件测试工程师的职责与工作内容

           软件测试工程师需要根据产品的需求文档,编写测试用例,待开发人员将软件初步开发完毕后,测试人员根据之前编写的测试用例,对软件进行功能验证与测试,同时在测试过程中不断的丰富和完善测试用例。测试人员将测试过程中发现的问题,在bug记录系统中以bug单的形式反馈给开发人员。开发人员修改bug后,测试人员再对bug进行验证。软件测试人员是产品质量的把关者,是软件不断改进和优化的推动者,在软件产品研发过程中担任着很重要的角色。

    3.3、测试的分类

           我们需要了解一下测试的分类。测试可以分为白盒测试黑盒测试。白盒测试是指测试人员在不了解软件内部原理和机制的情况下进行的测试,给定一个输入,看能否得到期望的输出。白盒测试是指测试人员在了解软件内部原理和流程的情况下进行的有针对性的测试。

           测试还可以分为单元测试集成测试。单元测试是以模块为单位进行的单一模块的测试。集成测试是将软件的多个模块集成在一起,进行整个系统的相关业务和流程的测试。

           测试还可以分为压力测试性能测试。压力测试是对系统进行极限压力测试,比如多客户端同时并发操作以考验服务器的性能,再比如借助自动化测试工具对客户端某个功能进行长时间的拷机测试(长时间频繁执行某一操作,比如在IM聊天框中不断地发消息)。性能测试的一个基本指标是目标软件对系统内存和CPU的占用。一个优秀的软件需要持续地对内存和CPU占用进行优化。

           在测试的过程中,还有回归测试冒烟测试的概念。回归测试是指修改代码后,重新进行测试以确认修改没有引入新的问题,并且没有影响已有功能。冒烟测试是在版本转测试之前,先选择一部分基础的测试用例进行验证,确保全流程没有严重、阻塞性的问题。

           此外,还有稳定性测试兼容性测试易用性测试等。稳定性测试主要是监测软件长时间运行是否会出现异常,比如崩溃、死锁、内存泄漏等问题。兼容性测试则是测试软件在不同环境下的兼容性,比如:

    1)Web网页要在IE不同版本的浏览器(低版本IE浏览器一般不支持了)、Chrome浏览器、FireFox浏览器、360浏览器等上进行测试,看看Web页面显示是否正常。
    2)客户端软件要在XP、win7、win8、win10、win11等系统上进行测试,保证在各个系统上能正常的运行。
    3)视频会议软件对各个厂商的USB摄像头的兼容,保证操作不同厂商的摄像头时不会发声异常,保证能采集到清晰的图像。

    易用性测试主要是检查软件中是否存在不方便用户使用的问题,主要侧重软件的用户体验。比如操作太繁琐、功能掩藏的太深、界面展现不方便用户使用等。

           面试时,面试官可能会让你列举一些常见的测试类型分类,以考察对测试相关概念的认知与理解。

    3.4、测试用例的编写

           测试用例的编写,是根据软件需求文档中列出的功能,考虑各种可能的场景,给定一个输入,对应一个期望的输出。不仅要考虑正常的情况,也要各种异常的情况。比如以登录为例,输入正确的用户名和密码,期望结果是能正常登录到系统中,如果登录不上,就是软件功能有问题。输入正确的用户名和错误的密码,期望结果是不能登录的,如果能登录上,就是软件存在问题。

           有的公司的笔试题或面试题中出一项关于测试用例的题,让应聘者现场编写或者口述某个场景下的测试用例。回答时,既要考虑正常的场景,也要异常的场景。

    3.5、软件的产品形态

           服务器侧的产品形态比较单一,这里主要讲的是客户端软件的产品形态,比如Windows上的PC软件,也有苹果和安卓移动端的app软件,也有苹果MAC系统中的客户端,也有硬件形态的嵌入式终端,也要有web客户端,甚至还要有支持国产化系统的客户端软件

           这里还需要了解什么是B/S架构,什么是C/S架构。所谓C/S架构就是客户端(Client)/服务器(Server)模式,比如电脑端的QQ。所谓B/S架构就是,浏览器(Browser)/服务器(Server)模式,比如使用浏览器访问的的淘宝主页。

    4、基本的网络知识和常用的网络命令

           现在基本所有的软件系统都是基于网络的,有走局域网(私网)的,有走互联网(公网)的,不可避免的会出现很多与网络相关的问题,特别是软件部署到安全级别比较高的客户环境后会出各种复杂的网络问题。所以无论是软件开发人员,还是测试人员,亦或是运维人员,还是技术支持,都需要掌握一些常用的基础网络知识,以用于日常网络问题的排查。这一块的内容,一般是面试时必问的内容。

    4.1、基本的网络知识

           首先要了解OSI的7层分层TCP/IP的5层(或4层)分层,这是最基本的概念,也是笔试和面试经常问的问题。

           再就是要了解TCP建链时的三次握手的流程,即连接发起者给目标端发送一个SYN包,目标端收到这个SYN包后给发起端回一个ACK包,发起端收到这个ACK包后,再给目标端发送一个ACK包,这样就完成了3次握手建链的过程。这个过程使用WireShark抓包软件抓包看的最清楚。

           还要了解TCP的ACK确认机制丢包重传机制,比如客户端给服务器发送了一包数据,客户端会等待服务器回复的ACK确认包,如果长时间没有收到ACK包,客户端就会认为网络出问题了,会重新将之前发送的数据包重新发给服务器。正是因为这种确认机制,有效的保证了TCP的可靠性。

          要了解TCP和UDP的区别及应用场景。TCP是面向连接的,建立连接后才能进行数据的收发,是可靠的;而UDP是无连接的,无需建立连接,直接将数据丢给目标端,无法保证数据能被送到对端,所以是不可靠的。

           TCP和UDP分别用在什么场景下呢?比如在视频会议和视频监控系统中,会有大量且频繁的音视频数据的收发,这些音视频数据的收发一般要使用UDP,因为UDP可以保证很好的实时性,没有TCP那种繁杂的数据ACK机制(频繁的ACK会影响数据的收发的效率)。当然UDP是不可靠的,但这个场景中,实时性要求性比较高,最好不要有音视频的延时,即使因为UDP不可靠导致小部分数据的丢失,也是可以接收的。但一般情况下,TCP和UDP要结合在一起使用,一些关键的控制信令必须要保证传输的可靠性,所以这些控制信令的收发必须要使用TCP。

           我们还需要了解端口的概念,运行在一台电脑的众多软件,IP地址都是一样的,在建立网络连接及后续数据的收发,是如何区分的呢?其实都是通过端口号(一个介于0与65535之间的整数值)进行区分的,建立连接时需要使用到IP和端口。对于服务器而言,要接收客户端的连接请求,必须开启服务监听端口,客户端在连接时,就使用服务器的IP和监听端口与服务器建立连接。如果服务器登录不上,可以先看能否ping通服务器地址,如果能ping通,就要telnet服务器的监听端口,看服务器是否开启了监听端口。在服务器程序出现崩溃退出时,可能就没有开启监听端口了。

           此外,还要了解路由器和交换机的区别,可以自行搜索,这个地方就不再赘述了。

    4.2、常用的网络命令

    1)ping命令

           当软件出现网络问题时,比如登录不上,首先应该确认是否是所在电脑的网络或者远端服务器的网络出现问题了。最简单的就是ping命令,直接ping一下目标地址就好了。

    如果软件系统在交互的过程中数据出现延时或抖动,可以使用ping指令,加上一个-t的参数,比如ping 172.16.72.136 -t,查看连续的ping包,看网络是否存在明显的抖动或延迟,如下:

    2)ipconfig命令

            ipconfig命令主要用来查看网卡的配置信息,比如IP地址,子网掩码和默认网关等,如下所示:

    3)telnet命令

           在使用这个命令之前,需要在Windows系统中打开telnet服务,该服务在win7以上系统中默认是关闭的。打开telnet服务的入口是:控制面板-->程序与功能-->打开或关闭Windows功能:

    勾选“telnet客户端”,点击确定即可。

           一般我们会使用telnet命令,查看服务器的监听端口有没有开启,比如telnet 172.16.72.136 7800,其中172.16.72.136是服务器地址,7800是服务器的监听端口。如果端口没有开启,则会显示端口打开失败,如下所示:

    4)netstat命令

            netstat命令用来查看本机的网络连接与端口占用情况,如下:

    5)route相关命令

           route相关命令主要用来查看路由表信息,添加策略路由等。route print命令是将Windows系统中的路由表打印出来,如下图所示:

            route add命令可以往路由表中添加一条路由,如下:

    route add 172.16.0.0 mask 255.255.0.0  172.16.30.186(172.16.30.186为内网中的网关)

            一般在处理Windows系统中的多网卡问题时,会用到这些路由相关命令。比如系统中有两张网卡,一张是内网的网卡,一张是外网的网卡:

    Windows系统中只能设置一个默认网关,没设置默认网关的网卡,必须通过route add命令添加策略路由来控制ip的访问走向!

    6)traccert命令

           该命令可以追踪访问目标地址所经历的路径,如下所示:

    通过该命令,可以看出数据包是从那个网卡发出去的(看默认网关),也可以看出从哪个运营商线路(联通线路、移动线路、电信线路)访问到目标地址的!

           之前专门写过一篇关于基础网络知识的文章,里面讲解的比较详细,可以打开看看:

    详解常用的基础网络知识(面试常考内容)https://blog.csdn.net/chenlycly/article/details/124433936

    5、数据库与常用的SQL语句

           数据库是用来存储软件业务中的数据,任何大型软件都需要用数据库软件来存放数据的。常用的数据库有SQL Server、Oracle、MySQL、小型数据库sqlite等。其中SQL Server是微软出品的,Oracle是美国甲骨文公司收费的商业数据库,MySQL和sqlite数据库则是免费的,大家都可以免费使用的。

           大家可以安装一下MYSQL数据库,然后使用sqlyog可视化工具查看数据库,操练操练一些常用的SQL语句。

           这部分我们需要熟悉一些常用的SQL语句。Oracle、MySQL和sqlite这些数据库的语法大体上是差不多的,只是部分细节上会有所不同,我们只需要掌握通用的SQL语句即可。比如创建数据库文件(create database)、创建数据表(create table)、修改数据表(alter)、删除数据表(drop)、向数据表中插入数据(insert into)、修改表中的数据(update)、查询表中的满足给定条件的数据(select)、删除表中的数据(delete)等。这里注意要将对表结构的操作与对表中数据的操作区分开来。具体的SQL语句,大家自行学习一下,此处就不一一展开了!

           还有就是要了解一下数据库中的索引、视图、事务处理、存储过程、触发器等概念的使用。

    6、常用的Linux命令

           当前大部分IT公司的后台服务器中使用的操作系统都是Linux系统,Linux系统有多个版本,比如常用的RedHat红帽系统、Ubantu系统和CentOS等,其中CentOS是免费的,也是大多数公司所采用的Linux系统。RedHat公司已经宣布停止维护CentOS服务器操作系统,可以选择华为开源的欧拉系统阿里开源的龙蜥系统腾讯开源的TencentOS系统作为替代,这些系统也都是基于开源的Linux系统的。

           除了后台的服务器,很多嵌入式系统使用的也是Linux系统。所以Linux系统已经被IT公司广泛地采用,所以很多IT企业在招聘时都会将了解Linux及掌握Linux常用命令当成基本的要求。

           掌握常用的Linux命令,主要用于Linux系统的日常维护与软件问题的排查。下面简单的列举几个日常工作中常用的命令:(下面只列出了一小部分命令,后面会专门写一篇Linux常用命令的文章

    1)vi命令

           vi命令主要用来查看和修改文件内容,执行该命令后直接进入vi的命令模式。从命令模式进入编辑模式需要按i键或者a键,使用ESC键可以从编辑模式进入命令模式,具体为:

    i - 插入文本

    a - 追加文本

    命令模式可执行的操作:(按下shift键输入:号)

    :w保存文本

    :wq保存并退出

    :wq!保存并强制退出

    :q退出

    2)ls命令和ll命令

          ll命令主要用于罗列出当前目录中所有文件和文件夹的详细信息,比如文件的修改时间、读写权限、文件大小、所属用户等信息,类似于Windows中显示的详细信息,如下:

          ls命令仅罗列出当前目录中的文件名称,没有详细信息。平时我们常用ll命令查看文件的修改时间。

    3)文件和文件夹操作命令touch、mkdir、rm

           touch命令用于创建文件,mkdir用于创建文件夹,rm命令(-rf)用来删除文件或文件夹。

    4)chmod命令

           用于修改文件的可读可写可执行的权限。

    5)netstat命令

           netstat命令用来本机的网络连接及端口占用情况的。一般使用“netstat -anp|grep + 进程名”命令,列出进程的已建立的连接或者正在监听的端口信息。

    6)ps命令

          ps命令用来查看进程的相关信息。一般使用“ps -aux|grep + 进程名”命令,列出目标进程的相关信息。如果要强制杀掉某个进程,可以使用“kill -9 + 进程id”命令,要先使用“ps -aux|grep + 进程名”命令打印出目标进程的id,然后再调用kill命令。

    7)top命令

           top命令可以查看进程的CPU和内存占用情况,类似于windows下的任务管理器窗口,可以查看系统中各进程的资源占用情况,如下所示:

    这个命令在排查目标软件在CPU和内存占用率高的问题时比较好用。

    7)tcpdump命令

            tcpdump命令主要是用来在Linux系统上抓取网卡上的网络数据包,是个很强大很实用的命令。常用的命令格式为:tcpdump -i eth0 -s 0 -w 0515.pcap,其中-i用来指定抓哪张网卡的,可以是any,表示抓所有网卡的数据包;-s用来指定抓包文件的大小,一般设置为0,即不限制抓包文件的大小;-w用来指定抓包文件的名称。

           待抓包完成后,可以将抓包文件下载到Windows系统中,使用WireShark打开抓包文件进行数据包的分析。

    7、自动化测试工具的使用与自动化脚本的编写

           测试岗位其实分两大类,一类是功能测试,一类是开发测试。对于功能测试,主要人工测试,属于低层次的测试岗位。对于开发测试,需要使用自动化测试工具,需要编写测试脚本或代码。 开发测试也叫自动化测试,属于软件测试的高级岗位,掌握自动化测试技能的人,在招聘市场上会比较受欢迎。大型互联网公司比如阿里、腾讯、字节跳动、美团等,因为自身产品和业务的测试需要,也比较推崇自动化测试技术,推出了大量的自动化测试岗位。

           常用的自动化测试工具有按键精灵、QTP、LoadRunner、jemeter、selenium等。除了自动化测试工具,还需要编写自动化测试脚本,最常用的脚本语言是Python。有时也需要使用Java语言编写用于自动化接口测试的脚本。目前JavaPython在大型互联网公司已经被广泛的使用。

    8、做软件测试是否有前途?

           与开发岗位相比,软件测试岗位的门槛要低不少,但门槛低并不代表没有前途。刚毕业入门时的待遇可能要低一些,但随着工作年限的增长,技术和经验得到逐步的提升,个人价值也逐渐体现出来。如果技术水平能进阶到自动化测试(开发测试)的阶层,薪资待遇会得到快速的提升,月薪上几万也不再是遥不可及!互联网公司对自动化测试的需求量比较大,如果有机会能进入互联网公司,不仅能拓宽视野,个人能力也会得到很大的提升。

            另外,测试岗位也可以考虑转岗,比如可以转产品需求,也可以转系统运维。总之,软件测试岗位也有足够大的发展空间,只要你愿意努力,力求上进,总能拼出属于自己的大好未来。

    9、应聘途径的选择

           对于即将毕业的应届生,在工找工作方面都是新手,没什么经验,所以我们需要在应聘途径上给一些建议。应聘的途径主要有两个,一个是校园招聘,一个是招聘网站。

    9.1、通过校园招聘应聘

           还没毕业的同学,最好通过毕业前的校园招聘会来应聘,校园招聘会一般会在毕业的前一年的国庆后进行。校园招聘应聘软件测试岗位成功的几率要大很多,一是各大IT公司在校园招聘中投入了大量的招聘名额,二是校园招聘时各大公司对应届生的要求,相对走社会招聘的渠道,要低不少。

    9.2、通过招聘网站应聘

           地域比较热的或者学校比较好的,校园招聘会上来的公司比较多,提供的岗位也比较多,应聘上的几率比较大。但学校地域较偏或者登记差一点的学校,去招聘的公司比较少,岗位也就比较少。这些学校的学生一般会有两种选择,一种是拿着简历到好点的学校或者去外地比较热门的城市去参加其他学校的招聘会,但这种情况下竞争压力也比较大。很多同学则选择另一种方式,拿到毕业证后(毕业后),再到北上广深等大城市来找IT相关的工作,大城市IT公司比较多,机会也比较多。

           这个时候基本是通过51job、智联招聘和BOSS直聘这些招聘网站来投递简历。其实此时应届生的机会要少很多,因为稍微好点的公司基本上在年前的招聘会上就将应届生的名额招满了,已经基本没有应届生的招聘需求了。这些招聘网站上的职位大多数都是社会招聘的职位,对工作经验有一定的要求,不过部分岗位也考虑应届生,对应届生的要求会低一些。

    10、作为应届生,面对严峻的就业形势,该怎样应对?

           首先我们要事先有准备的学习并掌握上述基本知识与技能,以保证能相对顺利地通过IT公司的笔试和面试。其次就是要降低要求,降低对公司和薪资的要求,应该把能在IT行业立足放在首位。工资不是最重要的,应该把学习和增长经验放在首位。有了技术和经验之后,工资肯定会一步步涨上去的。

           再就是,以往我们不太建议刚毕业的应届生去外包公司,一是外包公司不太稳定,二是外包公司没有归属感。但在机会不多的情况下,外包公司是可以考虑的。特别是一些大型的外包公司,他们有着大量的合作资源,提供了大量的就业岗位,并且他们相对要正规一些,公司的业务也要稳定一些。

    11、最后

            以上就是我多年来的心得与经验的分享,希望能帮到打算进入IT软件测试行业的朋友们!

    展开全文
  • 2021年软件测试面试题大全

    万次阅读 多人点赞 2020-11-30 15:16:59
    补充:什么时候用系统测试,测试的每个阶段是什么,比如单元、集成、系统、公测,每个阶段需要什么技术,有什么要求 软件的安全性应从哪几个方面去测试? (1) 用户认证机制:如数据证书、智能卡、双重认证、安全...

    目录

     

    一、面试基础题

    简述测试流程:

    什么是软件测试?软件测试的目的与原则

    问:软件生存周期及其模型是什么?

    什么是软件质量?

    自动化测试脚本开发的主要步骤:

    目前主要的测试用例设计方法是什么?

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

    测试的策略有哪些?

    单元测试的策略有哪些?

    正交表测试用例设计方法的特点是什么?

    软件的安全性应从哪几个方面去测试?

    需求测试的注意事项有哪些?

    问:你在测试中发现了一个  bug ,但是开发经理认为这不是一个  bug ,你应该怎样解决。

    问:给你一个网站,你如何测试?

    问:一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别? ?

    软件的安全性应从哪几个方面 去测试?

    软件质量保证体系是什么 国家标准中与质量保证管理相关的几个标准是什么? ? 他们的编号和全称是什么? ?

    测试人员在软件开发过程中的任务是什么?

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

    黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点!

    什么是系统瓶颈?

    手机APP测试

    什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样?

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

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

     您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员 良好的人际关系的关键是什么?

    软件测试项目从什么时候开始?为什么?

    测试结束的标准是什么?

    您是否了解以往所工作的企业的软件开发过程?如果了解,请试述一个完整的开发过程需要完成哪些工作?分别由哪些不同的角色来完成这些工作?您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?

    请你回答一下性能测试有哪些指标,对一个登录功能做性能测试,有哪些指标,怎么测出可同时处理的最大请求数量

    什么是兼容型测试?兼容性测试侧重哪些方面?

    软件测试项目从什么时候开始,?为什么?

     

    二、测试实战面试题

    我现在有个程序,发现在Windows上运行的很慢,怎么判别是程序存在问题还是软硬件系统存在问题

    一个程序有n个变量采用边界值分析可以产生几个测试用例

    请设计一个关于ATM自动取款机的测试用例。

    如何测试一个 纸杯?

    我手上这支笔,请你根据这支笔设计测试用例

    测试手机开机键 

    如何回答登录功能怎么进行测试?

    如何回答京东购物车功能怎么进行测试?

    支付流程测试

    对于有系统大量并发访问,你会如何做测试,有什么建议

    请对这个系统做出测试用例:一个系统,多个摄像头,抓拍车牌,识别车牌,上传网上,网上展示

    请你说一说PC网络故障,以及如何排除障碍

    微信红包

    微信发朋友圈点赞

    如何对淘宝搜索框进行测试

    就linux下的CP命令设计测试用例。

    请问如果用户点击微博的关注图标但是app上面没有反应,应该怎么排查这个问题

    现有一个学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下:程序的输入文件由一些有80个字符的记录组成,如右图所示,所有记录分为3组:

     

    三、基础知识点

    什么是桩模块?什么是驱动模块?

    什么是扇入?什么是扇出?

    8020原则:在需求分析开始到集成测试阶段引入测试手段,能发现所有缺陷的80%,系统测试阶段发现16%,在运行维护阶段经过长时间大量运行软件后,能够发现4%。起源于经济学。

    什么是耦合?什么是内聚?

    缺陷严重程度:

    缺陷优先级:

    缺陷状态:

    简单的软件缺陷生命周期:

    复杂的软件缺陷生命周期:

    什么是在线用户数?什么是并发用户数?

    分布式软件架构分为:

    测试人员的能力:

    简述负载测试与压力测试的区别。

    软件缺陷管理工具有哪些

    弱网测试

     

    四、智力题


    一、面试基础题

    简述测试流程:

    • 1、阅读相关技术文档(如产品PRD、UI设计、产品流程图等)。
    • 2、参加需求评审会议。
    • 3、根据最终确定的需求文档编写测试计划。
    • 4、编写测试用例(等价类划分法、边界值分析法等)。
    • 5、用例评审(主要参与人员:开发、测试、产品、测试leader)。
    • 6、开发提交代码至SVN或者GIT ,配管搭建测试环境。
    • 7、执行测试用例,记录发现的问题。
    • 8、验证bug与回归测试。
    • 9、编写测试报告。
    • 10、产品上线。

    补充测试用例设计过程:
    
    根据需求得出测试需求
    
    设计测试方案,评审测试方案
    
    方案评审通过后,设计测试用例,再对测试用例进行评审

     

    什么是软件测试?软件测试的目的与原则

    使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。

    软件测试的目的:

    • 测试是程序的执行过程,目的在于发现错误。
    • 一个成功的测试用例在于发现至今未发现的错误。
    • 一个成功的测试是发现了至今未发现的错误的测试。
    • 确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明。
    • 确保产品满足性能和效率的要求。
    • 确保产品是健壮的和适应用户环境的。

     

    问:软件生存周期及其模型是什么?

    软件生存周期是软件开发全部过程、活动和任务的结构框架,是从可行性研究到需求分析、软件设计、编码、测试、软件发布维护的过程。在经历需求、分析、设计、实现、部署后,软件将被使用并进入维护阶段,直到最后由于缺少维护费用而逐渐消亡。这样的一个过程,称为"生命周期模型"(Life Cycle Model)。

     

    什么是软件质量?

    软件质量:软件产品的特性可以满足用户的功能、性能需求的能力。

     

    自动化测试脚本开发的主要步骤:

    1、通过某些方式定位到我们要执行的对象、目标( Target)

    2、对这个对象进行什么操作(command)

    3、通过操作对定位到的元素赋值(value)

    4、添加断言操作

     

    目前主要的测试用例设计方法是什么?

    白盒测试:

    • 逻辑覆盖
    • 循环覆盖
    • 基本路径覆盖

    黑盒测试:

    • 边界值分析法
    • 等价类划分
    • 错误猜测法
    • 因果图法
    • 状态图法
    • 测试大纲法
    • 随机测试场景法

     

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

    1)等价类划分划分

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

     

    2)边界值分析法

    边界值分析方法是对等价类划分方法的补充。测试工作经验告诉我,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部。因此针对各种边界情况设(面试题目:什么样的工作环境适合你&#from一个常见的软件测试面试题来自end#lt;结束)计测试用例,可以查出更多的错误。

     

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

     

    3)错误推测法

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

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

     

    4)因果图方法

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

     

    5)正交表分析法

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

     

    6)场景分析方法

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

     

    测试的策略有哪些?

    黑盒/白盒/灰盒,静态/动态,手工/自动,冒烟测试,回归测试,公测(Beta测试的策略)

    补充:公测是什么?还有没有其他的测试策略?测试策略和测试方法以及测试类型有什么区别?

    按测试 策略分类:
      1、静态与动态测试
      2、黑盒与白盒测试
      3、手工和自动测试
      4、冒烟测试
      5、回归测试;
      按测试阶段分类:单元测试、集成测试、系统测试;
      其他常见测试方法:1、功能测试 2、性能测试 3、压力测试 4、负载测试 5、易用性测试 6、安装测试 7、界面测试 8、配置测试 9、文档测试 10、兼容性测试 11、安全性测12、恢复测试

    α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha 测试不能由程序员或测试员完成。

    β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在测试现场,Beta 测试不能由程序员或测试员完成。

    回归测试(对软件的新版本测试时,重复执行上一个版本测试时的用例,是为了验证缺陷是否真正修复,确认修复后是否影响其它功能);

    冒烟测试:对新版本测试之前,先验证下软件的基本功能是否实现,是否具备可测性。

     

    单元测试的策略有哪些?

    逻辑覆盖、循环覆盖、同行评审、桌前检查、代码走查、代码评审、景泰数据流分析

     

    正交表测试用例设计方法的特点是什么?

    答:用最少的实验覆盖最多的操作,测试用例设计很少,效率高,但是很复杂;对于基本的验证功能,以及二次集成引起的缺陷,一般都能找出来;但是更深的缺陷,更复杂的缺陷,还是无能为力的;具体的环境下,正交表一般都很难做的。大多数,只在系统测试的时候使用此方法。

    补充:什么时候用系统测试,测试的每个阶段是什么,比如单元、集成、系统、公测,每个阶段需要什么技术,有什么要求

     

    软件的安全性应从哪几个方面去测试?

    • (1) 用户认证机制:如数据证书、智能卡、双重认证、安全电子交易协议
    • (2) 加密机制
    • (3) 安全防护策略:如安全日志、入侵检测、隔离防护、漏洞扫描
    • (4) 数据备份与恢复手段:存储设备、存储优化、存储保护、存储管理
    • (5) 防病毒系统

    软件安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。

    用户认证安全的测试要考虑问题:

      • 明确区分系统中不同用户权限
      • 系统中会不会出现用户冲突
      • 系统会不会因用户的权限的改变造成混乱
      • 用户登陆密码是否是可见、可复制
      • 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)
      • 用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统
      • 系统网络安全的测试要考虑问题
      • 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上
      • 模拟非授权攻击,看防护系统是否坚固
      • 采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,
      • 现在最常用的是 NBSI 系列和 IPhacker IP )
      • 采用各种木马检查工具检查系统木马情况
      • 采用各种防外挂工具检查系统各组程序的外挂漏洞

    数据库安全考虑问题:

      • 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)
      • 系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这
      • 个系统的功能实现有了障碍)
      • 系统数据可管理性
      • 系统数据的独立性
      • 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)

     

    α测试是由一个用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环

    境下进行的受控测试,Alpha 测试不能由程序员或测试员完成。

    β测试是软件的多个用户在一个或多个用户的实际使用环境下进行的测试。开发者通常不在

    测试现场,Beta 测试不能由程序员或测试员完成。

    需求测试的注意事项有哪些?

    •        是否使用了公司的模板
    •   文档内容是否符合规范
    •   所有的需求是分级是否清析适当?
    •   所有的需求是否具有一致性
    •   需求是否可行(即,该需求组合有解决方案)
    •   需求可否用己知的约束来实现
    •   需求是否足够(即,可以把它送到一个规范的开发组织,并有一个生产出所需要产品的合理的可能性)
    •   所有的其它需求是交叉引用是否正确
    •   用户描述是否清楚
    •   是否用客户的语言来描述需求
    •   每个需求描述是否清楚没有岐义,可以移交给一个独立的组去实现时也能理解
    •   是否所有的需求都是可验证的
    •   是否每条需求都具有独立性,即使发生了变化也不会影响其它需求
    •   性能指标是否明确
    •   非功能性需求是否得到充分表现
    •   是否完整列出适用的标准或协议
    •   标准和协议之间是否存在冲突

    问:你在测试中发现了一个  bug ,但是开发经理认为这不是一个  bug ,你应该怎样解决。

    1. 将问题提交到缺陷管理库里面进行备案。
    2. 要获取判断的依据和标准:     根据需求说明书、产品说明、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;     如果没有文档依据,可以根据类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;   根据用户的一般使用习惯,来确认是否是缺陷;
    3. 与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;
    4. 合理的论述,向测试经理说明自己的判断的理由,注意客观、严谨,不参杂个人情绪。
    5. 等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。

     

     

    问:给你一个网站,你如何测试?

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

    2、制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:

         功能性测试;界面测试;性能测试;数据库测试;安全性测试;兼容性测试

    3、设计测试用例:

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

         链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回等。提交功能的测试。

         多媒体元素是否可以正确加载和显示。多语言支持是否能够正确显示选择的语言等。

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

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

     

    问:一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别? ?

    300 个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。线程之间可能发生干扰,而产生一些异常。300 个用户在一个客户端上,需要更大的带宽。IP 地址的问题,可能需要使用 IP Spoof 来绕过服务器对于单一 IP 地址最大连接数的限制。所有用户在一个客户端上,不必考虑分布式管理的问题;而用户分布在不同的客户端上,需要考虑使用控制器来整体调配不同客户机上的用户。同时,还需要给予相应的权限配置和防火墙设置。

    你工作中遇到最具价值的bug,就是重大bug咯,例如app性能测试测哪些,那你就看一看性能测试的视频咯

     

    软件的安全性应从哪几个方面 去测试?

    软件安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。

    用户认证安全的测试要考虑问题:

    • 明确区分系统中不同用户权限
    • 系统中会不会出现用户冲突
    • 系统会不会因用户的权限的改变造成混乱
    • 用户登陆密码是否是可见、可复制
    • 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)
    • 用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入系统
    • 系统网络安全的测试要考虑问题
    • 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上
    • 模拟非授权攻击,看防护系统是否坚固
    • 采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客攻击工具攻击试一下,
    • 现在最常用的是 NBSI 系列和 IPhacker IP )
    • 采用各种木马检查工具检查系统木马情况
    • 采用各种防外挂工具检查系统各组程序的外挂漏洞

    数据库安全考虑问题:

    • 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)
    • 系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据的不完整,对于这个系统的功能实现有了障碍)
    • 系统数据可管理性
    • 系统数据的独立性
    • 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)

     

     

    软件质量保证体系是什么 国家标准中与质量保证管理相关的几个标准是什么? ? 他们的编号和全称是什么? ?

    SQA 由一套软件工程过程和方法组成,以保证(软件的)质量。SQA 贯穿整个软件开发过程,(它)应包括需求文档评审、代码控制、代码评审、变更管理、配置管理、版本管理和软件测试。

     

    测试人员在软件开发过程中的任务是什么?

    1、寻找 Bug;

    2、避免软件开发过程中的缺陷;

    3、衡量软件的品质;

    4、关注用户的需求。

    总的目标是:确保软件的质量。

     

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

    一条 Bug 记录最基本应包含:编号、Bug 所属模块、Bug 描述、Bug 级别、发现日期、发现人、修改日期、修改人、修改方法、回归结果等等;

    要有效的发现 Bug 需参考需求以及详细设计等前期文档设计出高效的测试用例,然后严格执行测试用例,对发现的问题要充分确认

    肯定,然后再向外发布如此才能提高提交 Bug 的质量。

     

     

    黑盒测试和白盒测试是软件测试的两种基本方法,请分别说明各自的优点和缺点!

    黑盒测试的优点有:

           比较简单,不需要了解程序内部的代码及实现;与软件的内部实现无关;从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;在做软件自动化测试时较为方便。

    黑盒测试的缺点有:

           不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的 30%;自动化测试的复用性较低。

    白盒测试的优点有:

         帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。

    白盒测试的缺点有:

           程序运行会有很多不同的路径,不可能测试所有的运行路径;测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;系统庞大时,测试开销会非常大。

     

     

    什么是系统瓶颈?

    参考答案:

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

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

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

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

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

     

    手机APP测试

    :主要包括功能、性能测试、稳定性、兼容性、用户测试。

     

    性能测试:CPU占用/内存占用 /耗电测试 /流量消耗测试 /安装包大小 /加载时间测试 /核心功能相应时间 (①启动时间检测:检测App在终端上首次启动时间。 ②内存、CPU耗用检测:检测App在终端上运行时不同时段占用内存、CPU情况。 ③流量耗用检测:检测App在终端上运行时的网络流量消耗情况。 ④电池温度检测:检测App在终端上运行时,对终端的电池温度等性能指标的影响情况 )

     

    兼容性测试:屏幕分辨率 /网络状态,状态切换 /android版本 /安装卸载升级等 /权限设置 /与其他APP兼容性 (①安装卸载测试:测试App在指定终端上是否可正常安装、正常卸载,准确定位错误原因。 ②遍历测试:自动识别App可执行的功能,在一定时间内遍历App的不同功能界面,通过截图记录操作路径 并输出日志、定位异常现象。 ③运行稳定性测试:类似Monkey的随机性压力测试,测试App运行期的稳定性。 ④UI适配测试:测试App的UI与目标终端的屏幕是否适配,记录是否存在渲染失败、错位、黑边框、黑白屏等现象。)

     

    稳定性测试包括:服务器异常时稳定性 /外部事件影响(电话,短信等) /内存是否有溢出或者泄漏 /多线程问题 。

     

     

     

    什么是并发?在lordrunner中,如何进行并发的测试?集合点失败了会怎么样?

    参考答案:

    在同一时间点,支持多个不同的操作。

    LoadRunner中提供IP伪装,集合点,配合虚拟用户的设计,以及在多台电脑上设置,可以比较好的模拟真实的并发。

    集合点,即是多个用户在某个时刻,某个特定的环境下同时进行虚拟用户的操作的。集合点失败,则集合点的才操作就会取消,测试就不能进行。

     

     

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

    答案:(供参考,本答案主要是瀑布模型的做法)

           项目经理通过和客户的交流,完成需求文档,由开发人员和测试人员共同完成需求文档的评审,评审的内容包括:需求描述不清楚的地方和可能有明显冲突或者无法实现的功能的地方。项目经理通过综合开发人员,测试人员以及客户的意见,完成项目计划。然后 SQA 进入项目,开始进行统计和跟踪开发人员根据需求文档完成需求分析文档,测试人员进行评审,评审的主要内容包括是否有遗漏或者双方理解不同的地方。测试人员完成测试计划文档,测试计划包括的内容上面有描述。测试人员根据修改好的需求分析文档开始写测试用例,同时开发人员完成概要设计文档,详细设计文档。此两份文档成为测试人员撰写测试用例的补充材料。测试用例完成后,测试和开发需要进行评审。测试人员搭建环境开发人员提交第一个版本,可能存在未完成功能,需要说明。测试人员进行测试,发现 BUG后提交给 BugZilla。开发提交第二个版本,包括 Bug Fix 以及增加了部分功能,测试人员进行测试。重复上面的工作,一般是 3-4 个版本后 BUG 数量减少,达到出货的要求。如果有客户反馈的问题,需要测试人员协助重现并重新测试。

     

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

    在传统的 BugZilla 中,BUG 描述应该包括以下的信息和 BUG 产生对应的软件版本和模块开发的接口人员BUG 的优先级BUG 的严重程度BUG 可能属于的模块,如果不能确认,可以用开发人员来判断BUG 标题,需要清晰的描述现象BUG 描述,需要尽量给出重新 Bug 的步骤BUG 附件中能给出相关的日志和截图。高质量的 BUG 记录就是指很容易理解的 BUG 记录,所以,对于描述的要求高,能提供的信息多且准确,很好的帮助开发人员定位,因此提交高质量的软件缺陷记录需要注意对 BUG 记录的描述质量多且准确。

     

     您认为在测试人员同开发人员的沟通过程中,如何提高沟通的效率和改善沟通的效果?维持测试人员同开发团队中其他成员 良好的人际关系的关键是什么?

           尽量面对面的沟通,其次是能直接通过电话沟通,如果只能通过 Email 等非及时沟通工具的话,强调必须对特性的理解深刻以及能表达清楚。运用一些测试管理工具如 TestDirector 进行管理也是较有效的方法,同时要注意在TestDirector 中对 BUG 有准确的描述。在团队中建立测试人员与开发人员良好沟通中注意以下几点:一真诚二是团队精神三是在专业上有共同语言四是要对事不对人,工作至上当然也可以通过直接指出一些小问题,而不是进入 BUG Tracking System 来增加对方的好感。

     

    软件测试项目从什么时候开始?为什么?

          软件测试应该在需求分析阶段就介入,因为测试的对象不仅仅是程序编码,应该对软件开发过程中产生的所有产品都测试,并且软件缺陷存在放大趋势.缺陷发现的越晚,修复它所花费的成本就越大.

     

    测试结束的标准是什么?

           从微观上来说,在测试计划中定义,比如系统在一定性能下平稳运行 72 小时,目前 BugTracking System 中,本版本中没有一般严重的 BUG,普通 BUG 的数量在 3 以下,BUG 修复率 90%以上等等参数,然后由开发经理,测试经理,项目经理共同签字认同版本 Release。如果说宏观的,则是当这个软件彻底的消失以后,测试就结束了。

     

    您是否了解以往所工作的企业的软件开发过程?如果了解,请试述一个完整的开发过程需要完成哪些工作?分别由哪些不同的角色来完成这些工作?您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?

    开发过程---需求调研(需求人员)、需求分析(需求人员)、概要设计(设计人员)、详细设计(设计人员)、编码(开发人员)测试过程---需求评审、系统测试设计、概要设计评审、集成测试设计、详细设计评审、单元测试设计、测试执行测试工作的整个过程都做过,擅长做测试设计过程决定质量,软件的过程改进正是为了提高软件的质量,将过往的种种经验和教训积累起来。

    补充

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

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

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

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

    测试计划写作完成后,如果没有经过评审,直接发送给测试团队,测试计划内容的可能不准确或遗漏测试内容,或者软件需求变更引起测试范围的增减,而测试计划的内容没有及时更新,误导测试执行人员。分别创建测试计划与测试详细规格、测试用例,应把详细的测试技术指标包含到独立创建的测试详细规格文档,把用于指导测试小组执行测试过程的测试用例放到独立创建的测试用例文档或测试用例管理数据库中。测试计划和测试详细规格、测试用例之间是战略和战术的关系,测试计划主要从宏观上规划测试活动的范围、方法和资源配置,而测试详细规格、测试用例是完成测试任务的具体战术。

     

    请你回答一下性能测试有哪些指标,对一个登录功能做性能测试,有哪些指标,怎么测出可同时处理的最大请求数量

    参考回答:

    性能测试常用指标:

    从外部看,主要有

    1、吞吐量:每秒钟系统能够处理的请求数,任务数

    2、响应时间:服务处理一个请求或一个任务的耗时

    3、错误率:一批请求中结果出错的请求所占比例

    从服务器的角度看,性能测试关注CPU,内存,服务器负载,网络,磁盘IO

    对登录功能做性能测试

    单用户登陆的响应界面是否符合预期

    单用户登陆时后台请求数量是否过多

    高并发场景下用户登录的响应界面是否符合预期

    高并发场景下服务端的监控指标是否符合预期

    高集合点并发场景下是否存在资源死锁和不合理的资源等待

    长时间大量用户连续登录和登出,服务器端是否存在内存泄漏

    怎么测出可同时处理的最大请求数量

    可以采用性能测试工具(WeTest服务器性能),该工具是腾讯wetest团队出品,使用起来很简单方便,但测试功能相当强大,能提供10w+以上的并发量,定位性能拐点,测出服务器模型最大并发

     

    什么是兼容型测试?兼容性测试侧重哪些方面?

    兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了

    兼容和配置测试的区别在于,做配置测试通常不是在Clean OS下做测试,而兼容测试多是在Clean OS环境下做的。

    补充:做兼容测试的具体步骤:在列好的软硬件环境清单做冒烟测试,还是每一步都测试。测出不兼容,怎么和开发沟通,开发面对这些不兼容需要做什么。如果修复成本很高,怎么和产品经理沟通。和谁确认表单

     

     

    软件测试项目从什么时候开始,?为什么?

    软件测试应该在需求分析阶段就介入,因为测试的对象不仅仅是程序编码,应该对软件开发

    过程中产生的所有产品都测试,并且软件缺陷存在放大趋势.缺陷发现的越晚,修复它所花费

    的成本就越大.

     

     

    二、测试实战面试题

     

    我现在有个程序,发现在Windows上运行的很慢,怎么判别是程序存在问题还是软硬件系统存在问题

    1、检查系统是否有中毒的特征

    2、检查软件/硬件的配置是否符合软件的推荐标准

    3、确认当前的系统是否独立,即没有对外提供什么消耗CPU资源的服务

    4、如果是C/S或者B/S结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成

    5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对CPU/内存的访问情况

    补充:每一步该怎么实现,需要用到什么技术

     

    一个程序有n个变量采用边界值分析可以产生几个测试用例

    4n+1

     

    请设计一个关于ATM自动取款机的测试用例。

    1)功能

    a)ATM所识别卡的类型;

    b)密码验证(身份登陆、是否为掩码、输入错误密码时是否提示,连续三次错误吞卡等);

    c)取款功能:

    i、金额多少的限制,单次最大最小提取金额、每天最大提取金额等);

    Ii、取款币种的不同,如人民币、美元、欧元等。

    d)是否提示客户操作完成后,打印相关操作信息;

    e)查询功能是否正常;

    f)转账功能是否正常;

    g)是否提示客户操作完成后,取回客户卡;

     

    2)性能

    a)是否有自动吞卡:非法客户\密码错误客户\规定时间内未完成相关操作功能的客户。(如果有,有无报警功能(保密报警))

    b)平均无故障时间,平均故障修复时间,输入密码后验证时间,出钞票时间,查询余额等待时间。

     

    3)易用性

    a)ATM各个操作功能(硬件)是否正常、易懂;

    b)ATM的界面显示是否友好;

    c)ATM是否支持英文操作;

    d)ATM是否存在异常(断电、黑客入侵)有自动保护(报警)功能;

     

    如何测试一个 纸杯?

    功能度:用水杯装水看漏不漏;水能不能被喝到

    安全性:杯子有没有毒或细菌

    可靠性:杯子从不同高度落下的损坏程度

    可移植性:杯子在不同的地方、温度等环境下是否都可以正常使用

    兼容性:杯子是否能够容纳果汁、白水、酒精、汽油等

    易用性:杯子是否烫手、是否有防滑措施、是否方便饮用

    用户文档:使用手册是否对杯子的用法、限制、使用条件等有详细描述

    疲劳测试:将杯子盛上水(案例一)放 24 小时检查泄漏时间和情况;盛上汽油(案例二)

    放 24 小时检查泄漏时间和情况等

    压力测试:用根针并在针上面不断加重量,看压强多大时会穿透

     

     

     

    我手上这支笔,请你根据这支笔设计测试用例

       首先我要测它的外观、颜色是否符合要求、所占的空间是多大、是否环保、接下来测它的质量、这支笔是否能够写字流畅、写出的自得颜色是否符合要求、能使用多长时间等

     

     

    测试手机开机键 

    功能测试:按下开机键,屏幕能否亮起

    性能测试:按下开机键,屏幕能否在规定时间内亮起

    压力测试:连续多次按下开机键,观察屏幕是否能一直亮起,到多久时间失灵

    健壮性测试:给定一个中了病毒的手机或者是淘汰许久的老机子,安歇开机键观察屏幕能否亮起

    可靠性测试:连续按下开机键有限次数,比如1万次,记录屏幕未亮起的次数

    可用性测试:开机键按下费不费力,开机键的形状设计是否贴合手指,开机键的位置设计是否方便

     

     

    如何回答登录功能怎么进行测试?

     

    首先,进行界面测试。

    查看界面上的所有元素是否齐全;

    没有输入内容时,是否有相应的提示语;

    验证码是否能够显示;

    移动鼠标,【登陆】按钮默认不能点击;

    【忘记密码】是否有个小问号“?”(其他都有);

     

    第二,进行功能测试。

    输入正确的用户名、密码、验证码,点【登陆】能登陆;

    输入正确的用户名、错误的密码、正确的验证码,提示用户名或密码错误;

    输入错误的用户名、正确的验证码,提示用户名或密码错误;

    输入正确的用户名、密码,错误的验证码,提示验证码错误;

    输入不符合规则的手机号或者邮箱应该提示错误;

    页面长时间不登陆和操作,验证码会不会过期;

    点【记住密码】,登录后退出,再次登陆是不是可以不输入密码;

    点【忘记密码】能够跳转到密码设置页面(至于是什么不用管,就是能不能跳转)

    只点击验证码图案,验证码能不能刷新;

    页面刷新,验证码图案能不能刷新;

    输入栏是否设置快速删除按钮;

    用户名和密码是否大小写敏感;

    用户名和密码前后有空格的处理;

    登陆成功,是否有记住密码功能;

    登陆失败后,不能记录密码的功能;

    新用户第一次登陆成功,是否有修改密码提示;

    用户登录过程中log中是否有个人信息明文打印;

    是否支持第三方登陆;

    刷新页面时是否会刷新验证码;

    输入密码的时候,大写键盘开启的时候要有提示信息  ;

    不同级别的用户,比如管理员用户和普通用户,登录系统后的权限是否正确;

     

    第三、业务安全测试。

    有没有登陆错误次数的限制;

    每次登陆错误之后有没有限制再次登陆的时间间隔;

    是否支持一个账号多地登陆;

    不同机型登陆,异地登陆是否有提醒  ;

    不登录的情况下,在浏览器中直接输入登录后的URL地址,验证是否会重新定向到用户登录界面;

     

    第四、兼容性测试。

    在相同浏览器的不同版本上打开登录页面,效果是否一致;在不同浏览器上打开登录页面,效果是否一致;在不同操作系统的不同浏览器打开登录页面,效果是否一致;在不同的屏幕分辨率下打开登录页面,效果是否一致;

     

    第五、代码安全性测试。

    用户输入登录信息登陆时,个人信息是不是会显示在浏览器地址栏;

    用户登陆的时候,通过抓包工具抓数据,密码是否加密;

    查看页面源代码,验证码是否直接显示在代码中;

    密码在后台储存时是否加密;

    是否可以使用登录的API发送登录请求,并绕开验证码校验;

    用户名和密码的输入框中分别输入典型的“SQL注入攻击”字符串,验证系统的返回页面;

    用户名和密码的输入框中分别输入典型的“XSS跨站脚本攻击”字符串,验证系统行为是否被篡改;

     

    第六、页面性能测试。

    单用户登录的响应时间是否小于3秒;

    通过工具向登录页发起大量请求,查看页面响应时间的变化;

    通过工具对登陆功能进行并发测试;通过工具向登录页发起大量请求,查看页面何时崩溃;

    通过工具向登录页发起大量请求,查看页面崩溃后有没有良好的提示信息;

    通过工具向登录页发起大量请求,查看页面崩溃后多长时间能够恢复服务;

    弱网,不同网速时登陆的时间,网络切换和网络延迟时登陆界面是否正常;

     

    最后、易用性测试。

    页面是否美观;

    功能是否都可以使用;

    页面速度快不快;

    页面元素加载是否耗费网络流量;

    能不能第三方登陆;

    为什么不使用手机验证码登陆;

    输入框能否可以以Tab键切换。

     

     

    如何回答京东购物车功能怎么进行测试?

     

    1.功能测试

    a)、未登录时:

    将商品加入购物车,页面跳转到登录页面,登录成功后购物车数量增加。

    b)、登录后:

    所有链接是否跳转正确;

    商品是否可以成功加入购物车;

    没有限购要求的商品,添加数量能不能超过库存数;

    购物车商品总数是否有限制;

    商品总数统计是否正确;

    全选功能是否可用;

    删除功能是否可用;

    删除功能是否有提示;

    价格总计是否正确;

    商品文字太长时是否显示完整;

    购物车中下架的商品是否有标识,是否还能支付;

    新加入购物车商品排序(添加购物车中存在的店铺的商品和购物车中不存在的店铺的商品);

    是否支持快TAB、ENTER等快捷键;

    商品删除后商品总数是否减少;

    收藏功能是否可用;

    账号退出后,购物车添加的内容是否还在;

    购物车结算功能是否可用。

    限购商品按照规则购买完成后,还能不能再次添加购物车并购买;

    2.兼容性测试

    BS架构:不同浏览器测试,比如:IE,火狐,谷歌,360这些。

    APP:在主流的不同类型,不同分辨率,不同操作系统的手机上测试,华为,vivo,oppo等

    3.用户体验测试

    删除商品是否有提示;

    是否支持快捷键功能;

    是否有回到顶部的功能;

    商品过多时结算按钮是否可以浮动显示;

    购物车有多个商品时,能不能只对单个商品结算;

    界面布局、排版是否合理;

    文字是否显示清晰;

    不同卖家的商品是否区分明显。

    4.性能测试

    打开购物车页面要多长时间

     

     

    支付流程测试

    功能测试。

    用等价类和边界值,判断支付的金额;

    如果没有登陆能否支付,支付成功后是否可以正常跳转;

    支付方式是否支持扫码支付,第三方平台支付(支付包,云网等),语音支付,指纹支付;

    支付时是否需要身份验证,支付后有无手机短信提示,是否可以找他人代付;

    用边界值法有无支付额度限制,余额不足时有无提示,支付时是否是动态加密支付;

    待支付状态:订单是否可以正常支付;是否可以取消;有相同订单是否可以支付两次;

    是否可以扫码支付,输入错误的密码会怎样显示,有无错误次数限制;

    若支持扫码支付,二维码是否支持支付包和微信扫码,若两人同时扫描怎么处理;

    有无最小支付金额限制,无意义的支付金额0,重复支付如何处理;

    如果支付包含优惠金额,该怎么处理优惠额度;

     

    性能测试 

    弱网,无网时是否可以支付;

    退款到账时间,耗电量的多少;

    带负载情况下的响应时间和吞吐率,在某个时间段内同时访问系统的用户数量 ;

     

    压力测试

    多人同时付款;

    界面测试;

    支付界面有无错别字,排版是否合理,颜色搭配是否合理;

     

    兼容性测试

    是否可以跨平台,不同电脑机型下显示有无区别;

    安全性测试;

    若支付不成功是否原路退款,若支付成功,有无支付信息提示;

    用fiddler抓包尝试修改价格,对订单金额有无效验;

    直接输入需要权限的页面地址可用访问;

     

    接口测试

    第三方平台支付 

     

     

     

    对于有系统大量并发访问,你会如何做测试,有什么建议

    参考回答:

    如何做高并发系统的测试,一般而言,整体的测试策略是:先针对部分系统进行性能测试及压力测试,得到各部分的峰值处理性能,再模拟整体流程测试,重点测试整体业务流程以及业务预期负荷,着重测试以下几点:

    1、不同省份,不同运营商CDN节点性能,可采用典型压力测试方案

    2、核心机房BGP网络带宽,此部分重点在于测试各运行商的BGP网络可靠性,实际速率,一般采用smokeping,lxChariot等工具

    3、各类硬件设备性能,一般采用专业的网络设备测试工具

    4、各类服务器并发性能,分布式处理能力,可采用压力测试方案工具

    5、业务系统性能,采用业务系统压力测试方案

    6、数据库处理性能,这部分需要结合业务系统进行测试,以获取核心业务场景下的数据库的TPS/QPS,

    7、如果有支付功能,需要进行支付渠道接口及分流测试,此部分相对而言可能是最大的瓶颈所在,此外还涉及备份方案,容灾方案,业务降级方案的测试。

     

    请对这个系统做出测试用例:一个系统,多个摄像头,抓拍车牌,识别车牌,上传网上,网上展示

    参考回答:

    功能:

    1.每个摄像头都能抓拍车牌;

    2.每个摄像头抓拍到的车牌能正常交给系统处理;

    3.系统能够正确识别车牌;

    4.系统能够将识别出的车牌上传;

    5.上传至网络的车牌能够正常展示出来;

    一、功能测试

    1.使用正常的车牌,保持车牌静止,检查每个摄像头是否能抓拍车牌;

    2.使用类似非车牌的写有字的纸板,检查每个摄像头是否抓拍;

    3.使用正常的车牌,保持车牌较高速移动,检查每个摄像头是否能抓拍车牌;

    4.在多种情况下检查每个摄像头抓拍到的车牌能否正常交给系统处理,如临时断电、断网后能否正常将数据交给系统;

    5.使用抓拍到的正常的车牌,交由系统处理,检查系统能否识别车牌;

    6.使用非车牌的其他图片,交由系统处理,检查系统能否识别;

    7.在多种情况下检查系统能否将正常识别出的车牌进行上传,如临时断电、断网后未上传数据是否能继续上传;

    8.构造非车牌的其他内容的数据,检查系统能否将异常内容进行上传;

    9.检查上传至网络的车牌能否正常展示出来;

    10.上传非车牌的其他内容的数据,检查能否正常显示出来。

    二、性能测试

    1.同时向一个摄像头展示多个静止的车牌,检查摄像头能否抓拍到多个车牌;

    2.同时向一个摄像头展示多个较高速运动的车牌,检查摄像头能否抓拍到多个车牌;

    3.抓拍后,检查系统识别车牌的时间是否在需求要求的时间内;

    4.模拟大量抓拍照片同时交由系统处理,检查一定压力下系统能否正常识别车牌;

    5.模拟大量车牌同时上传,检查一定压力下能否上传成功。

    三、安全性测试

    1.检查是否能够通过给车牌加装饰物等方法,使摄像头无法抓拍或抓拍后系统无法正常识别车牌。

     

     

    请你说一说PC网络故障,以及如何排除障碍

    参考回答:

    (1)首先是排除接触故障,即确保你的网线是可以正常使用的。然后禁用网卡后再启用,排除偶然故障。打开网络和共享中心窗口,单击窗口左上侧“更改适配器设置”右击其中的“本地连接“或”无线网络连接”,单击快捷菜单中的“禁用”命令,即可禁用所选网络。接下来重启网络,只需右击后单击启用即可。

    (2)使用ipconfig查看计算机的上网参数

    1、单击“开始|所有程序|附件|命令提示符“,打开命令提示符窗口

    2、输入ipconfig,按Enter确认,可以看到机器的配置信息,输入ipconfig/all,可以看到IP地址和网卡物理地址等相关网络详细信息。

    (3)使用ping命令测试网络的连通性,定位故障范围

    在命令提示符窗口中输入”ping 127.0.0.1“,数据显示本机分别发送和接受了4个数据包,丢包率为零,可以判断本机网络协议工作正常,如显示”请求超时“,则表明本机网卡的安装或TCP/IP协议有问题,接下来就应该检查网卡和TCP/IP协议,卸载后重装即可。

    (4)ping本机IP

    在确认127.0.0.1地址能被ping通的情况下,继续使用ping命令测试本机的IP地址能否被ping通,如不能,说明本机的网卡驱动程序不正确,或者网卡与网线之间连接有故障,也有可能是本地的路由表面收到了破坏,此时应检查本机网卡的状态是否为已连接,网络参数是否设置正确,如果正确可是不能ping通,就应该重新安装网卡驱动程序。丢失率为零,可以判断网卡安装配置没有问题,工作正常。

    (5)ping网关

    网关地址能被ping通的话,表明本机网络连接以及正常,如果命令不成功,可能是网关设备自身存在问题,也可能是本机上网参数设置有误,检查网络参数。

     

     

    微信红包

    功能

    1.在红包钱数,和红包个数的输入框中只能输入数字

    2.红包里最多和最少可以输入的钱数  200  0.01

    3.拼手气红包最多可以发多少个红包  100

    3.1超过最大拼手气红包的个数是否有提醒

    4.当红包钱数超过最大范围是不是有对应的提示

    5.当发送的红包个数超过最大范围是不是有提示

    6.当余额不足时,红包发送失败

    7.在红包描述里是否可以输入汉字,英文,符号,表情,纯数字,汉字英语符号,

    7.1是否可以输入它们的混合搭配

    8.输入红包钱数是不是只能输入数字

    9.红包描述里许多能有多少个字符   10个

    10.红包描述,金额,红包个数框里是否支持复制粘贴操作

    12.红包描述里的表情可以删除

    13.发送的红包别人是否可以领取

    13.1发的红包自己可不可以领取   2人

    14. 24小时内没有领取的红包是否可以退回到原来的账户

    14.1  超过24小时没有领取的红包,是否还可以领取

    15.用户是否可以多次抢一个红包

    16.发红包的人是否还可以抢红包   多人

    17.红包的金额里的小数位数是否有限制

    18.可以按返回键,取消发红包

    19. 断网时,无法抢红包

    20.可不可以自己选择支付方式

    21.余额不足时,会不会自动匹配支付方式

    22.在发红包界面能否看到以前的收发红包的记录

    23.红包记录里的信息与实际收发红包记录是否匹配

    24.支付时可以密码支付也可以指纹支付

    25.如果直接输入小数点,那么小数点之前应该有个0

    26.支付成功后,退回聊天界面

    27.发红包金额和收到的红包金额应该匹配

    28.是否可以连续多次发红包

    29.输入钱数为0,"塞钱进红包"置灰

     

    性能

    1.弱网时抢红包,发红包时间

    2.不同网速时抢红包,发红包的时间

    3.发红包和收红包成功后的跳转时间

    4.收发红包的耗电量

    5.退款到账的时间

     

    兼容

    1.苹果,安卓是否都可以发送红包

    2.电脑端可以抢微信红包

     

    界面

    1.发红包界面没有错别字

    2.抢完红包界面没有错别字

    3.发红包和收红包界面排版合理,

    4.发红包和收到红包界面颜色搭配合理

     

    安全

    1.对方微信号异地登录,是否会有提醒   2人

    2.红包被领取以后,发送红包人的金额会减少,收红包金额会增加

    3.发送红包失败,余额和银行卡里的钱数不会少

    4.红包发送成功,是否会收到微信支付的通知

     

    易用性(有点重复)

    1.红包描述,可以通过语音输入

    2.可以指纹支付也可以密码支付

     

     

    微信发朋友圈点赞

    参考回答:

    功能测试:

    点赞某条朋友圈,验证是否成功

    接口测试:

    点赞朋友圈,验证朋友能否收到提示信息

    性能测试

    点赞朋友圈,是否在规定时间显示结果,是否在规定时间在朋友手机上进行提示

    兼容性测试

    在不同的终端比如ipad,手机上点赞朋友圈,验证是否成功

     

     

    如何对淘宝搜索框进行测试

    参考回答:

    一, 功能测试

    1. 输入关键字,查看: 返回结果是否准确,返回的文本长度需限制

    1.1输入可查到结果的正常关键字、词、语句,检索到的内容、链接正确性;

    1.2输入不可查到结果的关键字、词、语句;

    1.3输入一些特殊的内容,如空、特殊符、标点符、极限值等,可引入等价类划分的方法等;

    2. 结果显示:标题,卖家,销售量,单行/多行,是否有图片

    3. 结果排序:价格 销量 评价 综合

    4.返回结果庞大时,限制第一页的现实量,需支持翻页

    5. 多选项搜索:关键字 品牌 产地 价格区间 是否天猫 是否全国购

    6. 是否支持模糊搜索,支持通配符的查询

    7, 网速慢的情况下的搜索

    8. 搜索结果为空的情况

    9. 未登录情况和登录情况下的搜索(登录情况下 存储用户搜索的关键字/搜索习惯)

    二.性能测试:

    1压力测试:在不同发用户数压力下的表现(评价指标如响应时间等)

    2负载测试:看极限能承载多大的用户量同时正常使用

    3稳定性测试:常规压力下能保持多久持续稳定运行

    4内存测试:有无内存泄漏现象

    5大数据量测试:如模拟从庞大的海量数据中搜索结果、或搜索出海量的结果后列示出来,看表现如何等等。

    三. 易用性:交互界面的设计是否便于、易于使用

    1依据不同的查询结果会有相关的人性化提示,查不到时告知?查到时统计条数并告知?有疑似输入条件错误时提示可能正确的输入项等等处理;

    2查询出的结果罗列有序,如按点击率或其他排序规则,确保每次查询出的结果位置按规则列示方便定位,显示字体、字号、色彩便于识别等等;

    3标题查询、全文检索、模糊查询、容错查询、多关键字组织查询(空格间格开)等实用的检索方式是否正常?

    4输入搜索条件的控件风格设计、位置摆放是否醒目便于使用者注意到,有否快照等快捷查看方式等人性化设计?

    四. 兼容性

    1WINDOWS/LINUX/UNIX等各类操作系统下及各版本条件下的应用

    2IE/FIREFOX/GOOGLE/360/QQ等各类浏览器下及各版本条件下、各种显示分辨率条件下的应用

    3SQL/ORACLE/DB2/MYSQL等各类数据库存储情况下的兼容性测试

    4简体中文、繁体中文、英文等各类语种软件平台下的兼容性测试

    5IPHONE/IPAD、安卓等各类移动应用平台下的兼容性测试

    6与各相关的监控程序的兼容性测试,如输入法、杀毒、监控、防火墙等工具同时使用

    五. 安全性

    1被删除、加密、授权的数据,不允许被SQL注入等攻击方式查出来的,是否有安全控制设计;

    2录入一些数据库查询的保留字符,如单引号、%等等,造成查询SQL拼接出的语句产生漏洞,如可以查出所有数据等等,这方面要有一些黑客攻击的思想并引入一些工具和技术,如爬网等。

    3通过白盒测试技术,检查一下在程序设计上是否存在安全方面的隐患;

    4对涉及国家安全、法律禁止的内容是否进行了相关的过滤和控制;

     

     

     

     

    就linux下的CP命令设计测试用例。

    功能

     

    拷贝的文件

    1)大小:0k, 1k, 10k, 100k, 1000k…

    2)类型:二进制文件、文本文件、mp3、avi、压缩文件…

     

    文件源目录

    1)文件中包含各种类型的文件

    2)目录深度为0,1,2,3…

     

    文件目标目录

    1)目标目录中存在与源文件同名同类型的文件

    2)目标目录中存在与源文件同名不同类型的文件

    3)目标目录中存在与源文件不同名同类型的文件

    4)目标目录中存在与源文件不同名不同类型的文件

     

    异常

     

    参数异常

    1)包含特殊字符

    2)参数长度超过限制

    3)源目录不存在

    4)目标目录不存在

     

    文件异常

    1)文件没有拷贝权限

    2)非法的文件格式和内容

     

    存储介质异常

    1)存储介质由损坏

    2)拷贝前存储介质已满

    3)拷贝中存储介质存满

     

    执行过程异常

    1)拷贝过程中删除源文件

    2)拷贝过程中删除目标文件

     

    性能

    1)拷贝大文件

    2)拷贝源目录中存在大量小文件

    3)跨文件系统拷贝

    4)跨存储介质拷贝

    5)并发执行拷贝

     

    关注性能点:拷贝完成时间,CPU,内存,磁盘IO

     

     

     

    请问如果用户点击微博的关注图标但是app上面没有反应,应该怎么排查这个问题

    • 是否手机出现故障,是否手机缓存过多造成内存不够用
    • 是否手机网络连接不稳定(弱网/无网),若是,有无网络差提示
    • 是否手机内存溢出(关注人数达上限否)
    • 是否是版本问题或者是安装包问题(更新系统,重新安装安装包)

     

    现有一个学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下:程序的输入文件由一些有80个字符的记录组成,如右图所示,所有记录分为3组:

    标题:这一组只有一个记录,其内容为输出成绩报告的名字。

    试卷各题标准答案记录:每个记录均在第80个字符处标以数字"2"。该组的第一个记录的第1至第3个字符为题目编号(取值为1一999)。第10至第59个字符给出第1至第50题的答案(每个合法字符表示一个答案)。该组的第2,第3……个记录相应为第51至第100,第101至第150,…题的答案。

     

    每个学生的答卷描述:该组中每个记录的第80个字符均为数字"3"。每个学生的答卷在若干个记录中给出。如甲的首记录第1至第9字符给出学生姓名及学号,第10至第59字符列出的是甲所做的第1至第50题的答案。若试题数超过50,则第2,第3……纪录分别给出他的第51至第100,第101至第150……题的解答。然后是学生乙的答卷记录。

    学生人数不超过200,试题数不超过999。

    程序的输出有4个报告:

        a)按学号排列的成绩单,列出每个学生的成绩、名次。

        b)按学生成绩排序的成绩单。

        c)平均分数及标准偏差的报告。

        d)试题分析报告。按试题号排序,列出各题学生答对的百分比。

    分别考虑输入条件和输出条件,以及边界条件。给出右表所示的输入条件及相应的测试用例。

     

     

     

    三、基础知识点

    什么是桩模块?什么是驱动模块?

    桩模块:被测模块调用模块

    驱动模块 调用被测模块

     

    什么是扇入?什么是扇出?

    扇入:被调次数,扇出:调其它模块数目

     

    8020原则:在需求分析开始到集成测试阶段引入测试手段,能发现所有缺陷的80%,系统测试阶段发现16%,在运行维护阶段经过长时间大量运行软件后,能够发现4%。起源于经济学。

     

    什么是耦合?什么是内聚

    耦合:对一个软件结构内各个模块之间互连程度的度量。

    内聚:一个模块内各个元素彼此结合的紧密程度。强内聚,松耦合。

     

    缺陷严重程度

    致命(Fatal)、严重(Critical)、一般(Major)、较小(Minor)。

     

    缺陷优先级

    立即解决P1、高优先级P2、正常排队P3、低优先级P4。

     

    缺陷状态

    打开(open)、修正(fixed)、重新打开(reopen)、关闭(closed)、重复(Duplicate)、推迟(Deferred)、保留(On hold)、不修复(wontfix)。

     

    简单的软件缺陷生命周期:

    发现(new)-打开-修复-关闭。

     

    复杂的软件缺陷生命周期:

    新建-打开-Bug审查(设计需要修改/延期/关闭)-关闭。

       新建-打开-是否清楚,可再现(不能再现缺少信息返回到打开状态)-修正-关闭。

     

    什么是在线用户数?什么是并发用户数

    在线用户数:

    用户同时在一定时间段的在线数量

    并发用户数:

    某一时刻同时向服务器发送请求的用户数

     

     

    分布式软件架构分为

    B/S架构(浏览器、web版)       C/S架构:客户端(先进行安装)

     

    测试人员的能力

    搭建环境的能力(配置JDK、数据库、Tomcat/Apace、程序放相应路径下、检查配置是否成功‚数据库管理和设置ƒ程序设计C++④测试方法论⑤工具的使用能力(QC\QTP\LR\Bugfree)

     

    简述负载测试与压力测试的区别。

    参考答案:

     

    压力测试(Stress Testing)

    压力测试的主要任务就是获取系统正确运行的极限,检查系统在瞬间峰值负荷下正确执行的能力。例如,对服务器做压力测试时就可以增加并发操作的用户数量;或者不停地向服务器发送请求;或一次性向服务器发送特别大的数据等。看看服务器保持正常运行所能达到的最大状态。人们通常使用测试工具来完成压力测试,如模拟上万个用户从终端同时登录,这是压力测试中常常使用的方法。

     

    负载测试(Volume Testing)

    用于检查系统在使用大量数据的时候正确工作的能力,即检验系统的能力最高能达到什么程度。例如,对于信息检索系统,让它使用频率达到最大;对于多个终端的分时系统,让它所有的终端都开动。在使整个系统的全部资源达到“满负荷”的情形下,测试系统的承受能力。

     

    软件缺陷管理工具有哪些

    答:   QC ALM BugFree jira Mantis 禅道

     

    弱网测试

     

     

     

    四、智力题

    一,5只猫 五分钟捉5只老鼠 请问100分钟捉100只老鼠需要多少只猫?

    答案:5只

    二,圆桌,两个人,轮流放硬币,不能重叠,半径为1,某一方不能放下去,则为输。问先手赢 后手赢

    答案:先手赢,圆桌对称,先手先放,后手都可以找对称位置,除了圆心

    三,3升的杯子一个,5升的杯子一个,杯子不规则形状 问怎么得到4升的水 水无限多

    答案:略

    四,晚上有四个人过桥,一次只能过两个人,但是只有一只手电筒,四个人过桥时间分别是1,2,5,8,求最短过桥时间

    答案:甲乙,甲回,丙丁,乙回,甲乙,15分钟

    五,有十张扑克牌,每次可以只出一张,也可以只出两张,要出完有多少种出法

    答案:89 F(9)=N F(8)=P F(10)=F(8)+F(9) F(1)=1 F(2)=2

    六,井盖为什么是圆的

    答案:用料少,受压均匀,成本低

    七,两个盲人各买了一白一黑两双袜子,不小心弄混了,问他们自己怎么分成刚好每人一白一黑

    答案:袜子是连在一起的

    八, 烧一根不均匀的绳子,从头烧到尾总共需要1个小时,问如何用烧绳子的方法来确定15分钟?

    答案:烧两根,一根点两头,一根点一头,烧完,剩下的把另一投点了,烧完,看重合点

    九,海盗分金,五人,过半同意,否则喂鱼,问1方案?

    答案:45,5反对,4喂鱼,所3(100,0,0),故2(98,0,1,1),故1(97,0,1,2,0)

    十,岔路口,通往1,2,两人,一人必说谎,一人永真话,怎么去1

    答案:问一人,另一人会回答那条路去1,回答答案必假

    十一,果冻,有黄色、绿色、红色三种,闭眼抓同种颜色两个,抓取多少个,可确定有两个同色果冻?

    答案:根据抽屉原理,4个

    十二,下水道为什么是圆的

    答案:方便人员进出,井盖不容易掉落,不易如棱角磨损节约材料,保护车辆 和行人的安全

    十三,一共100个球,两人轮流拿,每人每次最多拿5个,最后一个拿的人赢;如果我先拿,怎么拿一定会赢?

    答案:每次拿的球总数控制为6;第一次拿4个;

    十四,有120g面粉,现有一个天平和一个2g的砝码以及一个7g的砝码,最少称几次可以将面粉分为70g与50g

    答案:4次,第一次120g=111g+9g  第二次111g=93g+18g  第三次93g=57g+36g  第四次50g=57g-7g  70g=7g+36g+18g+9g

    十五,扔鸡蛋不碎问题(腾讯校招面试题)?

    答案:14次

    十六,智力题:一千瓶中有一瓶毒药 十只小白鼠找出这瓶毒药

    答案:2^10=1024,小白鼠编号1-10,瓶子编号1-1000,把瓶子的编号转变为二进制数,第几位1,就给第几个小白鼠喝

     

     

     

    第二篇测试面试总结---->测试面试二

    参考资料:

     

    https://www.nowcoder.com/ta/review-test

    https://zhaiyujia.blog.csdn.net/article/details/81604085

    https://blog.csdn.net/weixin_30363263/article/details/80110247?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242

    https://my.oschina.net/u/4296112/blog/3569084

    https://bbs.huaweicloud.com/blogs/172015

    https://zhuanlan.zhihu.com/p/122493284

    https://blog.csdn.net/weixin_44264744/article/details/104948526?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-3.control#%E4%B8%89%EF%BC%8C%E6%8E%A5%E5%8F%A3%E6%B5%8B%E8%AF%95Jmeter%2CFiddler

     

    展开全文
  • 什么软件测试?

    万次阅读 2018-03-21 22:07:47
    什么软件测试?What is software testing?软件测试是在测试中识别软件产品和服务的准确性和质量的过程。显然,它的诞生是为了验证产品是否满足客户的特定先决条件、需求和需求。在一天的工作结束前,确定特定的最终...
  • 软件工程】软件测试报告——软件测试说明书

    千次阅读 多人点赞 2021-04-23 16:47:39
    文章目录1 引言1.1 编写目的1.2 背景1.3 术语和缩略词1.4 参考资料2 ...  该软件的名称为Asking,与之类似的软件有知乎、微博等软件,Asking软件的测试环境为浏览器。 1.3 术语和缩略词 无 1.4 参考资料 [1]窦万峰.
  • 创建守护进程为什么要fork两次

    千次阅读 2017-06-19 17:12:27
    1、守护进程的概念与特点 2、创建守护进程 3、创建守护进程为什么需要fork两次
  • 在电脑上安装博途软件电脑运行较为顺畅,笔记本电脑需要怎样的配置?最佳答案请参考西门子官方资料《安装STEP7(TIAPortal)V13的必要条件什么》条目ID:50204569,文献编写日期:2014年9月2日链接:...
  • WinForm 创建窗口句柄时出错

    千次阅读 2020-07-04 17:10:44
    问题的具体描述:根据条件设置移除和加入不同的控件,当前控件不满足条件时,将控件移除,然后加入新的控件。 代码如下: if (this.Panel.Controls.Contains(this.R_Parameter)) { this.Panel.Controls.Remove...
  • 在Mac M1使用的过程中经常出现一些问题,如自己的硬盘插在Mac M1电脑上不能用、苹果电脑到底要不要清理、如果能在上面安装Windows的软件就好了、PDF文档怎么总是...,今天小编就为大家带来了几款mac M1装机必备软件...
  • 软件测试笔试面试题目完全汇总

    万次阅读 多人点赞 2019-03-06 13:29:37
    1、软件测试的流程 2、web测试和APP测试的区别 仅仅从功能测试的层面上来讲的话,在流程和功能测试上是没有区别的。那么区别在哪里呢? 由于载体不一样,所以系统测试和一些细节可能会不一样。 那么我们就要先...
  • 问:软件测试的原则? 答:https://blog.csdn.net/weixin_30363263/article/details/102986878 问:你在测试中发现了一个 bug ,但是开发经理认为这不是一个 bug ,你应该怎样解决。 1、将问题提交到缺陷...
  • 设计模式-创建软件设计模式(一)

    千次阅读 2017-07-13 14:30:57
    主要介绍下面的三个设计模式: ...简单工厂模式简单工厂模式的特点是仅仅有一个具体的创建者类,并且此类中包含一个静态的工厂方法factory().首先定义一个接口 public interface food { abstract String getInsurInfo
  • 嵌入式软件研发就是在一定硬件条件下的系统化设计和软件研发。主要使用的语言是C/C++、Ada。 嵌入式系统是一个控制程序存储在ROM中的嵌入式处理器控制板。事实上,所有带有数字接口的设备,如手表、微波
  • 作为一个测试工程师,每一次面试,可能都是我们晋升的...编写软件测试计划得重要目的就是使测试过程能够发现更多的软件缺陷,因此软件测试计划的价值取决于它对帮助管理测试项目,并且找出软件潜在的缺陷。因此,软件
  • 软件测试面试题(含答案)

    万次阅读 多人点赞 2021-03-01 15:15:38
    软件测试面试题(含答案)
  • 软件测试基础知识 + 面试理论(超详细)

    万次阅读 多人点赞 2021-02-25 10:47:13
    2、你认为测试人员需要具备哪些素质3、你为什么能够做测试这一行4、测试的目的是什么?5、测试分为哪几个阶段?6、单元测试的测试对象、目的、测试依据、测试方法?7、怎样看待加班问题8、结合你以前的学习和工作经验,...
  • 浅谈软件开发的四大要素

    万次阅读 2021-11-04 18:49:21
    这学期在上《软件质量保证与测试》这门课,对于软件测试前的前导课,软件开发的过程有所感悟,在此记录一下; 对于软件开发的过程,不可谓不熟悉,真的是爱恨交织,第一次自己头铁当队长做服创,也没有学长学姐带着...
  • 软件工程复习重点

    万次阅读 多人点赞 2016-07-06 21:19:52
    定义:软件是程序、数据及开发、使用和维护程序所需要的所有文档 特点:软件是一个逻辑的而不是物理的产品 2. 软件危机的表现形式 1) 软件的开发成本和开发进度的估计常常很不准确 2) 用户对“已完成”软件系统不...
  • 禅道:项目管理软件 测试人员一般用来跟踪缺陷的生命周期 常用的缺陷管理工具:禅道,jira、 bugzilla、QC等 登录地址:ip地址/zentao(在cmd命令行下面ipconfig获取ip地址) 本机:127.0.0.1/localhost 1:禅道管理与...
  • 软件缺陷与错误划分严重性和优先级的通用原则: 1.表示软件缺陷所造成的危害和恶劣程度。 2.优先级表示修复缺陷的重要程度和次序。 严重性: 1.严重:系统崩溃、数据丢失、数据毁坏 2.较严重:操作性错误、结果...
  • 适合 Ubuntu的8款最佳录屏软件

    万次阅读 多人点赞 2021-01-06 16:21:33
    此外,更改分辨率、比特率和 fps 需要每次都通过命令行运行。所以 这里是一个汇编的8款最佳录屏软件。 1. GNOME录屏软件 Ubuntu 附带的屏幕录像机,当您点击 Ctrl+Shift+Alt+R 时触发。它会自动开始录制整个屏幕。当...
  • 软件测试缺陷详解

    千次阅读 2022-02-22 16:11:41
    软件测试缺陷详解
  • 工厂模式(创建对象的最佳方式)

    千次阅读 2021-07-14 10:01:02
    在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 工厂模式具体包括了简单工厂、工厂方法、抽象工厂,它们是按照从简单到复杂的顺序排列的,属于设计...
  • 1.下面哪项不属于软件工程方法学的要素(B) A、方法 B、模型 C、工具 D、过程 (知识点)软件工程三要素:方法、工具、过程 2.面向对象方法学具有(D)个要点。 A、1 B、2 C、3 D、4 (知识点)面向对象要点:对象...
  • Xmind是一款非常专业的思维导图软件,收费好几百元,不过还是很多用户,因为目前用的最多,也简单易用。XMind界面友好、功能优秀、可用性极强,从而数百万人选择了它,XMind不仅可以绘制思维导图,还能绘制鱼骨图、...
  • 软件中断只有在操作系统中才有这一说,它是对硬件中断的一种克隆,在SYSBIOS中它的优先级是低于硬件中断高于任务线程的,其最多可以有32个优先级,只要系统的资源允许,理论上可以创建无穷多个软件中断,而硬件中断...
  • 软件工程测试题

    千次阅读 多人点赞 2020-07-07 10:48:57
    初识软件工程 软件工程方法是( )。 为了获得高质量软件而实施的一系列活动 为开发软件提供技术上的解决方法 为支持软件开发、维护、管理而研制的计算机程序系统 为了理解问题和确定需求而采取的一些技术和...
  • 架构师不仅仅是团队中的角色,更是一种思维方式,就算你是程序员,每天也会做很多设计决定,这其中有些颇具架构意义,任何人一旦做出了影响软件系统结构的决定,实际上已经充当了临时的架构师,而无论你是什么角色,...
  • 软考软件设计师考试总结(2018上半年)

    万次阅读 多人点赞 2018-05-28 01:29:26
    前段时间一直进行着软件编码的工作,应当是时候告一段落了。理论推动实践,实践反过来推动理论的理解。 与物质和意识的关系一样。 * 世界是物质的,物质决定意识; * 意识反过来影响物质,也就是物质的主观...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 385,730
精华内容 154,292
关键字:

创建软件需要什么条件