软件测试面试题 - 测试理论

1. 为什么要在一个团队中展开测试工作

在团队中开展软件测试工作,是因为没有经过测试的软件很难在发布之前知道该软件的质量,就好比ISO质量认证一样,测试同样也需要质量的保证,这个时候就需要在团队中开展软件测试的工作。
软件质量的好坏直接影响消费者的利益,所以优秀的软件一定要经过测试后,才能上市。在测试的过程发现软件中存在的问题,及时让开发人员得知并修改问题,在即将发布时,从测试报告中得出软件的质量情况。

2. 您是否了解以往所工作的企业的软件测试过程?如果了解,请试述在这个过程中都有哪 些工作要做?分别由哪些不同的角色来完成这些工作?

制定测试计划:

需求阶段评审阶段 -> PM沟通,建立测试用例,交付测试用例

接受测试阶段(提测)-> accept测试报告,bug list

回归测试阶段->回归测试报告,bug list, 补充测试用例,跟踪别人提的bug, 插入API 测试,自动化测试

release测试总结

release 上线后跟踪用户反馈问题,分析添加用例

3. 您是否了解以往所工作的企业的软件开发过程?如果了解,请试述一个完整的开发过程需要完成哪些工作?分别由哪些不同的角色来完成这些工作?(对于软件测试部分,可以简述)

客户提出需求->PM出需求文档->开发测试阅读需求文档,提出问题;svn建立release 分支,->开发分析需求,开发进入开发阶段,发现需求问题跟PM沟通->基本功能开发完成后交付测试人员测试->测试过程中operation更新环境->回归测试完成后上beta测试->部署产品

4.您在以往的测试工作中都曾经具体从事过哪些工作?其中最擅长哪部分工作?

手工测试(Web, Android, iOS);负责测试环境的搭建更新部署;

团队管理: 负责产品测试流程管理;跟其他部门协调沟通;

自动化测试: Web平台 selenium, robotframework 自动化测试; iOS平台 UIAutomation, XCTest, robotframework 自动化测试; Android 平台的selenium, robotframework 自动化测试;

负责搭建jenkins持续集成环境

API 测试:soapui, json, https

性能测试:jmeter

安全性测试:

5. .您所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联 系(如功能测试、性能测试……)

易用性测试:界面的友好性,操作方便性等。

功能测试:功能测试又是黑盒测试,测试人员把被测软件当做一个黑盒子,我们不需要知道这个程序是怎么运行的,只需要检查软件能否正常实现用户需求中提出的各种功能。

性能测试:是检查软件是否满足了客户需求中的性能,如CPU利用率、响应时间等

负载测试:在标准的用户环境下运行软件,并且增大对软件的负荷,如:增大用户访问量,延长访问时间、增加并发量。从而查看这个软件所能承受的最大负荷。

压力测试:在标准的用户环境下运行软件,并且不断增大对软件的负荷,查看软件是否会崩溃。

负载测试和压力测试都是性能测试的一种。

接口测试:

安全性测试:系统是否存在安全隐患和漏洞。

 

6.请试着比较一下黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系。

黑盒测试:就是把软件看成一个无法打开的黑盒子,测试人员不用知道软件内部是如何实现的,只需要查看他的功能是否满足客户需求中所提出的功能。

白盒测试:就是把软件看成一个打开的盒子,测试人员可以知道其内部的代码结构,可以根据代码结构来检查这个软件是否运行正常。

单元测试:是测试软件最小的模块,由开发人员编写一段代码来检测最小的模块是否有问题。

集成测试:是把已经进行单元测试后的模块集合在一起进行测试,主要是测试一些模块间的接口是否有问题。

系统测试:是把软件当成一个完整的系统来进行测试,查看在不同的操作系统,硬件,软件平台上运行是否正常。

验收测试:是测试人员对软件进行测试,查看这个软件能否提交给客户进行测试。

 

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

a. 了解产品项目需求

b. 了解产品进度计划安排情况


8.您所熟悉的测试用例设计方法都有哪些?请分别以具体的例子来说明这些方法在测试 用例设计工作中的应用。

等价类:

等价类划分法是把所有可能输入的数据,即程序的输入域划分为若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。方法是一种重要的、常用的黑盒测试用例设计方法。

边界值:

边界值划分法是等价类法的补充,边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。

错误推算法: 基于经验和直觉,找出程序中你认为可能出现的错误,有针对性地设计测试用例。

因果图法:

因果图是一种常见的黑盒测试方法,它与边界值分析和等价类方法相比的优势在与其考虑的输入数据的组合情况。 在因果图中,将输入作为因(Cause),将输出或操作作为果(Effect),故称为因果图。

https://www.cnblogs.com/yangyangchunchun/p/8991364.html

针对需求规格,将原因和影响分为2组4类:输入与输出、输入与输入。

输入与输出的关系主要有:恒等、非、与、或

恒等:若输入条件发生,则一定会产生对应的输出,若输入条件不发生,则一定不会产生对应的输出

非:若输入条件发生,则一定不会产生对应的输出,若输入条件不发生,一定会产生对应的输出

 

与:多个输入条件,只有所有输入条件发生时,才会产生对应的输出

或:在多个输入条件中,只要有一个发生,则会产生对应输出。

 

输入与输入之间同样存在异、或、唯一、要求等4种关系

异(所有输入条件中至多有一个发生,可以一个条件条件也不发生)

或(所有输入条件至少有一个输入条件发生,也可以多个条件共存)

唯一(所有输入条件有且只有一个发生)

要求(所有输入条件中只要有一个条件发生,其他的输入也会发生)

 3、因果图设计测试用例步骤?

一、根据需求确定原因(输入)和结果(输出)

二、根据需求中输入与输出的关系 ,输入与输入之间的关系,画出因果图

三、画出判定表,根据因果图,得到最终的最终判定表

四、根据判定表得到用例规则,在结合等价类和边界值用例设计方法细化测试用例

5、因果图设计测试用例示例?

第一步:根据需求找出输入(原因)和输出(结果)

输入(原因):第一列是A(C1) 第一列是B(C2)第二列是数字(C3)

中间结点:第一列为A或者B(C12)

输出(果):输出M(E1),修改文件(E2),输出L(E3)

 第二步:把相同类型的原因放在一起,类似原因的中间节点连好线,对应的结果放在对面。方便连线

 

 第三步:根据因果图输入与输出的关系画出判断表,根据因果图的输入与输入的关系去掉表里的不符合的规则

 

第四个:根据判定表抽取测试规则,编写测试用例,用等价类划分和边界值对测试用例进行细化和补充

判定表驱动法:https://blog.csdn.net/jffhy2017/article/details/55512675

1. 判定表:是分析和表达多逻辑条件下执行不同操作的工具。

判定表是由条件桩、动作桩、条件项、动作项四部分组成的表格

 

1)条件桩:列出了所有条件,通常认为列出条件的次序无关紧要

2)动作桩:列出所有可能的操作,这些操作的排列顺序没有约束

3)条件项:列出了所有条件的取值组合,在所有可能情况下的真假值

4)动作项:列出在条件项的各种取值情况下应该采取的动作。

2. 规则:任何一个条件组合的特定取值及其他相应要执行的操作称为规则。在判定表中贯穿条件项和动作项的一列就是一条规则。

3. 判定表的化简:合并判定表中两条或多条具有相同动作,并且其条件项之间存在着极为相似关系的规则这一过程。

4. 判定表使用场景:如果程序中多个条件决定一个动作,并且每个条件的取值只有两种,且条件和动作之间的逻辑关系明确

5. 优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并且可以避免遗漏。

6. 判定表的建立步骤:

1)列出所有的条件和动作

2)确定规则的个数(假如有n个条件,每个条件有2个取值(0、1),就可以产生2的n次方种规则)

3)填写判定表

4)化简判定表

 

正交表计法:

https://www.cnblogs.com/gisen_6/p/3708169.html

正交试验设计(Orthogonal experimental design)是研究多因素多水平的一种设计方法,它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整 可比”的特点,正交试验设计是一种基于正交表的、高效率、快速、经济的试验。

什么是因素(Factor):在一项试验中,凡欲考察的变量称为因素(变量)

什么是水平(位级)(Level):在试验范围内,因素被考察的值称为水平(变量的取值)

 

 

正交表的构成:

行数(Runs):正交表中的行的个数,即试验的次数。

因素数(Factors):正交表中列的个数。

水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到数“水平数-1”或从1到“水平数”

正交表的表示形式: L行数(水平数因素数)

 

 

正交表:

各列中出现的最大数字相同的正交表称为相同水平正交表。如L4(23)、L8(27)、L12(211)等各列中最大数字为2,称为两水平正交表;L9(34)、L27(313)等各列中最大数字为3,称为3水平正交表。凡是标准表,水平数都相等,且水平数只能取素数或素数幂。因此有7水平、9水平的标准表,没有6水平,8水平的标准表。

例如L9(34),它表示需做9次实验,最多可观察4个因素,每个因素均为3水平。

混合正交表:

一个正交表中也可以各列的水平数不相等,我们称它为混合型正交表,如L8(4×24),即:L8(41×24)此表的5列中,有1列为4水平,4列为2水平。再如L16(44×23),L16(4×212)等都混合水平正交表。

 

 

正交表的两个特点

正交表必须满足这两个特点,有一条不满足,就不是正交表。

1)每列中不同数字出现的次数相等。例 如,在两水平正交表中,任何一列都有数码“1”与“2”,且任何一列中它们出现的次数是相等的;在三水平正交表中,任何一列都有“1”、“2”、“3”, 且在任一列的出现数均相等。这一特点表明每个因素的每个水平与其它因素的每个水平参与试验的几率是完全相同的,从而保证了在各个水平中最大限度地排除了其 它因素水平的干扰,能有效地比较试验结果并找出最优的试验条件。

2)在任意两列其横向组成的数字对中,每种数字对出现的次数相等。例 如,在两水平正交表中,任何两列(同一横行内)有序对子共有4种:(1,1)、(1,2)、(2,1)、(2,2)。每种对数出现次数相等。在三水平情况 下,任何两列(同一横行内)有序对共有9种,1.1、1.2、1.3、2.1、2.2、2.3、3.1、3.2、3.3,且每对出现数也均相等。这个特点 保证了试验点均匀地分散在因素与水平的完全组合之中,因此具有很强的代表性。

以上两点充分的体现了正交表的两大优越性,即“均匀分散性,整齐可比”。通俗的说,每个因素的每个水平与另一个因素各水平各碰一次,这就是正交性。

混合正交表选择正交表的时候需满足:水平数>=max(水平1,水平2...),因素数>=(因素1+因素2+因素3+…)

 

混合正交表选择正交表的示例:

image

我们分析一下:

1、被测项目中一共有四个被测对象(4个因素),每个被测对象的状态(水平数)都不一样。其中,A、C水平数均为3,B的水平数为4,D的水平数为2。

2、选择正交表:

本题,水平数>=max(3,4,2)=4,因素数>=4,查询附录中的正交表,只有L16(45)的行数最少,行数取最少的一个,比较适合。

3、最后选中正交表公式:L16(45)

另外,当水平数和因素数的具体值确定时,正确的行数(试验次数)的计算方法是:

试验次数(行数)=∑(每列水平数-1)+1

如:L18(36 *61)=(3-1)*6+(6-1)*1+1=18;L8(27)=(2-1)*7+1=8

 

 

如何查找正交表:

1、Technical Support (support.sas.com)

http://support.sas.com/techsup/technote/ts723_Designs.txt

2、查Dr. Genichi Taguchi设计的正交表

http://www.york.ac.uk/depts/maths/tables/orthogonal.htm

3、数理统计、试验设计等方面的书及附录中

 

用正交表设计测试用例

设计测试用例的步骤:

1、有哪些因素(变量)

2、每个因素有哪几个水平(变量的取值)

3、选择一个合适的正交表

4、把变量的值映射到表中

5、把每一行的各因素水平的组合作为一个测试用例

6、加上你认为可疑且没有在表中出现的用例组合

 

如何选择正交表

1、考虑因素(变量)的个数

2、考虑因素水平(变量的取值)的个数

3、考虑正交表的行数

4、取行数最少的一个

 

 

设计测试用例时的三种情况:

1、因素数(变量)、水平数(变量值)相符

水平数(变量的取值)相同、因素数(变量)刚好符合某一正交表,则直接套用正交表,得到用例。

例子:

对某人进行查询,假设查询某个人时有三个查询条件:

根据“姓名”进行查询

根据“身份证号码”查询

根据“手机号码”查询

考虑查询条件要么不填写,要么填写,此时可用正交表进行设计

① 因素数和水平数

有三个因素:姓名、身份证号、手机号码。每个因素有两个水平:

姓名:填、不填

身份证号:填、不填

手机号码:填、不填

② 选择正交表

表中的因素数>=3

表中至少有三个因素的水平数>=2

行数取最少的一个

结果:L4(2^3)

clip_image001

③ 变量映射

姓名:1→填写,2→不填写;

身份证号:1→填写,2→不填写;

手机号码:1→填写,2→不填写;

④ 用L4(2^3)设计的测试用例

测试用例如下:

1:填写姓名、填写身份证号、填写手机号

2:填写姓名、不填身份证号、不填手机号

3:不填姓名、填写身份证号、不填手机号

4:不填姓名、不填身份证号、填写手机号

⑤增补测试用例

5:不填姓名、不填身份证号、不填手机号

测试用例减少数:8→5

 

2、因素数不相同

水平数(变量的取值)与某正交表相同,但因素数(变量)却不相同,则取因素数最接近但略大于实际值的正交表表,套用之后,最后一列因素去掉即可。

例子:

兼容性测试:

操作系统:2000、XP、2003

浏览器:IE6.0、IE7.0、TT

杀毒软件:卡巴、金山、诺顿

如果全部进行测试的话,3^3=27个组合,需要进行27次测试。

① 因素数和水平数

有三个因素:

操作系统、浏览器、杀毒软件

每个因素有三个水平。

② 选择正交表

表中的因素数>=3

表中至少有三个因素的水平数>=3

行数取最少的一个

结果:L9(3^4),如下图:

clip_image003

③ 变量映射

操作系统:1→2000,2→XP,3→2003

浏览器:1→IE6.0,2→IE7.0,3→TT

杀毒软件:1→卡巴,2→金山,3→诺顿

clip_image004

④用L9(3^4)设计的测试用例

测试用例如下:

2000、IE6.0、卡巴

2000、IE7.0、诺顿

2000、TT、金山

XP、IE6.0、诺顿

XP、IE7.0、金山

XP、TT、卡巴

2003、IE6.0、金山

2003、IE7.0、卡巴

2003、TT、诺顿

⑤增补测试用例

由于目前IE6.0、XP、卡巴的使用量很高,故增添以下测试用例:

XP、IE6.0、金山

XP、IE6.0、卡巴

2003、IE6.0、卡巴

测试用例减少数:27→12

 

3、水平数不相同

因素(变量)与某正交表相同,但水平数(变量的取值)不相同。

例子:

假设有一个系统有5个独立的变量(A,B,C,D,E)。变量A和B都有两个取值(A1 、A2和B1、B2)。变量C和D都有三个可能的取值(C1、C2、C3和D1、D2、D3)。变量E有六个可能的取值(E1、E2、E3、E4、E5、E6)。

① 因素数和水平数

有五个因素(变量):

A、B、C、D和E

两个因素有两个水平(变量的取值)、两个因素有三个水平,一个因素有六个水平:

A:A1、A2

B:B1、B2

C:C1、C2、C3

D:D1、D2、D3

E:E1、E2、E3、E4、E5、E6

② 选择正交表

表中的因素数(变量)>=5

表中至少有二个因素的水平数(变量的取值)>=2

至少有另外二个因素的水平数>=3

还至少有另外一个因素的水平数>=6

行数取最少的一个:L49(7^8)或者L18(3^6 6^1))

结果:L18(3^6 6^1)(如下图)

clip_image006

③ 变量映射

A:1→A1、2→A2

B:1→B1、2→B2

C:1→C1、2→C2、3→C3

D:1→D1、2→D2、3→D3

E1、2→E2、3→E3、4→E4、5→E5、6→E6

clip_image008

④ 用L18(3^6 6^1)设计的测试用例

测试用例减少数:216→18

加上一些可疑的情况(设为n个)为18+n,它比原来也少多了。

功能图法:

http://www.51testing.com/html/80/403780-812565.html

 一个程序的功能说明通常由动态说明和静态说明组成。动态说明描述了输入数据的次序或转移的次序静态说明描述了输入条件与输出条件之间的对应关系。对于复杂的程序,由于存在大量的组合情况,因此,仅用静态说明组合的规格说明对于测试来说往往是不够的,必须用动态说明来补充功能说明。功能图方法是用功能图FD形式化地表示程序的功能说明,并机械地生成功能图的测试用例功能图模型由状态迁移图和逻辑功能模型构成状态迁移图用于表示输入数据序列以及相应的输出数据。在状态迁移图中,由输入数据和当前状态决定输出数据和后续状态。逻辑功能模型用于表示在状态中输入条件和输出条件之间的对应关系。逻辑功能模型只适合于描述静态说明,输出数据仅由输入数据决定。测试用例则是由测试中经过的一系列状态和在每个状态中必须依靠输入/输出数据满足的一对条件组成。功能图方法其实是一种黑盒白盒混合用例设计方法。

      功能图方法中,要用到逻辑覆盖和路径测试的概念和方法,其属白盒测试方法中的内容。逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计方法。该方法要求测试人员对程序的逻辑结构有清楚的了解。由于覆盖测试的目标不同,逻辑覆盖可分为:语句覆盖、判定覆盖、判定条件覆盖、条件组合覆盖及路径覆盖。下面我们指的逻辑覆盖和路径是功能或系统水平上的,以区别与白盒测试中的程序内部的。

1.功能图

      功能图由状态迁移图和布尔函数组成。状态迁移图用状态和迁移来描述。一个状态指出数据输入的位置(或时间),而迁移则指明状态的改变,同时要依靠判定表或因果图表示的逻辑功能。例:一个简化的自动出纳机ATM的功能图。

2.测试用例生成方法

      从功能图生成测试用例,得到的测试用例数是可接受的。问题的关键是如何从状态迁移图中选取测试用例,若用节点代替状态,用弧线代替迁移,则状态迁移图就可转化成一个程序的控制流程图形式。问题就转化为程序的路径测试问题(如白盒测试)问题了。

3.测试用例生成规则

      为了把状态迁移(测试路径)的测试用例与逻辑模型(局部测试用例)的测试用例组合起来,从功能图生成实用的测试用例,须定义下面的规则。在一个结构化的状态迁移(SST)中,定义三种形式的循环:顺序、选择和重复。但分辨一个状态迁移中的所有循环是有困难的。(其表示图形省略)。

4.从功能图生成测试用例的过程

      1)生成局部测试用例:在每个状态中,从因果图生成局部测试用例。局部测试用例由原因值(输入数据)组合与对应的结果值(输出数据或状态)构成

      2)测试路径生成:那个上面的规则生成从初始状态到最后状态的测试路径。

      3)测试用例合成:合成测试路径与功能图中每个状态中的局部测试用例。结果是初始状态到最后状态的一个状态序列,以及每个状态中输入数据与对应输出数据的组合。

5.测试用例的合成算法:

采用条件构造树

 

场景图法:

 

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

软件测试计划是指导测试过程的纲领性文件,包含了产品概述,测试策略,测试方法,

测试区域,测试配置,测试周期,测试资源,风险分析等内容;借助软件测试计划,参

与测试的项目成员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟

踪和控制测试进度,应对测试过程中的各种变更。

   测试计划和测试用例间是战略和战术的关系,测试计划主要从宏观上规划测试活动

的范围,方法和资源配置;而测试用例是完成测试任务的具体战术。

   测试计划中,最重要的是测试策略和测试方法。

 

测试计划工作的关键是

 

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

必须高度覆盖功能需求,测试方法必须切实可行,测试工具具有较高的实用性,便于使

用,生成的测试结果直观准确。

 

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

“5W”规则指:what,why,when,where,how;用例5w规则创建软件测试计划,可帮

助测试团队理解测试目的(why),明确测试范围和内容(what),确定测试开始和结

束日期(when),指出测试的方法和工具(what),给出测试文档和软件存放位置(where)

 

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

 

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

对需求的了解

 

11.您以往的工作中是否曾开展过测试用例的评审工作?如果有,请描述测试用例评审的过程和评审的内容。

1. 输入: 测试用例, 输出: 需求规格说明书

2. 输出: 问题记录清单, 测试用例评审报告

3. 参与人员: 项目经理,测试负责人, 测试人员, 需求分析人员,开发人员

4. 评审方式: 会议

5. 评审检查清单:

测试用例是否按照公司定义的模板进行编写的;

测试用例本身是否描述清楚,是否存在二义性;

测试用例内容是否正确,是否与需求目标一致;

测试用例期望结果是否确定的,唯一的;

操作步骤应与描述一致是否一致;

测试用例是否覆盖了所有的需求;

测试设计是否存在冗余性;

测试用例是否具有可执行性;

是否从用户层面来设计用户使用场景和业务流程的测试用例;

场景测试用例是否覆盖最复杂的业务流程;

用例设计是否覆盖了正面,反面用例;

对于系统自动生成的输出项,是否注明了生成规则;

测试用例应该包括对中间和后台数据的检查;

测试用例应有正确的名称,编号和执行的优先级别;

测试用例包含相关的配置信息:测试环境、数据、前置测试用例、用户授权等;

每个测试用例步骤应<=15 Step;
自动化测试脚本必须带有注释(注释应包括:目的、输入、期望结果等);

非功能测试需求或不可测试需求是否在用例中列出并说明?

 

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

Bug标题:

优先级,严重级别,是否QA blocked;

属于哪个功能模块;发现问题的测试环境版本信息(系统,浏览器,产品版本);

测试账号信息

测试执行步骤

期望结果/实际结果

其他关联信息,问题截图

 

提交高质量的缺陷报告:

bug 描述清晰,准确,简洁,不冗余

 

13. Bug 管理工具

DDTs, Testlink,

 

14. 你如何看待软件过程改进?

软件过程改进,就是在软件过程工程中为了更有效地达到优化软件过程的目的同施的改善或改变其软件过程的一系列活动。

 

15. 软件配置管理(SCM)

软件配置管理(SCM)是指通过执行版本控制、变更控制的规程,以及使用合适的配置管理软件,来保证所有配置项的完整性和可跟踪性。配置管理是对工作成果的一种有效保护。

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页