- 软件测试基础
一、填空题
- 软件的生命周期
- 螺旋模型
- 功能性、可使用性、可移植性
- 严重、建议
- 单元测试
- 白盒测试
- W模型
二、判断题
- 错
- 错
- 对
- 错
- 错
三、单选题
- A
- C
- B
- C
- D
- B
四、简答题
- 请简述软件缺陷的处理流程。
答:软件缺陷的处理流程可以分为7个环节。
(1)提交:测试人员发现缺陷之后,将缺陷提交给测试组长。
(2)分配:测试组长接收到测试人员提交的缺陷之后,将其移交给开发人员。
(3)确认:开发人员接收到移交的缺陷之后,会与团队甚至测试人员一起商议,确定该缺陷是否是一个缺陷。
(4)拒绝:如果经过商议之后,发现的缺陷不是一个真正的缺陷,则拒绝处理此缺陷,对其进行关闭处理。如果经过商议之后,确定其是一个真正的缺陷,则可以根据缺陷的严重程度或优先级等立即处理或延期处理。
(5)处理:开发人员修改缺陷。
(6)复测:开发人员修改好缺陷之后,测试人员重新进行测试(复测),检测缺陷是否已经修改。如果未被正确修改,则重新提交缺陷。
(7)关闭:测试人员重新测试之后,如果缺陷已经被正确修改,则将缺陷关闭,整个缺陷处理完成。
2. 请简述软件测试的基本流程。
答:软件测试的基本流程具体如下.
(1)分析测试需求
(2)制定测试计划
(3)设计测试用例
(4)执行测试
(5)编写测试报告
- 黑盒测试方法
一、填空题
- 等价类
- 边界值分析法
- 恒等
- 异、或、唯一、要求
- 条件桩、条件项、动作桩、动作项
- 基本流、备选流
二、判断题
- 错
- 错
- 错
- 对
- 对
- 对
三、单选题
- A
- C
- D
四、简答题
- 请简述等价类划分法的原则。
答:等价类划分的原则具体如下。
(1)如果程序要求输入值是一个有限区间的值,则可以将输入数据划分为一个有效等价类和两个无效等价类,有效等价类为指定的取值区间,两个无效等价类分别为有限区间两边的值。
(2)如果程序要求输入的值是一个“必须成立”的情况,则可以将输入数据划分为一个有效等价类和一个无效等价类。
(3)如果程序要求输入数据是一组可能的值,或者要求输入值必须符合某个条件,则可以将输入数据划分一个有效等价类和一个无效等价类。
(4)如果在某一个等价类中,每个输入数据在程序中的处理方式都不相同,则应将该等价类划分成更小的等价类,并建立等价表。
- 请简述决策表条件项的合并规则。
答:在实际测试中,条件桩通常很多,而且每个条件桩都有真、假两个条件项,有n个条件桩的决策表就会有2n条件规则,有些规则的取值对结果并无影响,这个问题就称为无关条件项,无关条件项使用“-”表示,忽略无关条件项,可以将这两条规则进行合并。合并之后的无关条件项(-)包含其他条件项取值,因此具有相同动作的规则还可进一步合并。
- 请简述正交实验设计法测试用例设计步骤。
答:使用正交实验设计法设计测试用例时,可以按照以下3个步骤进行。
(1)提取因子,构造因子-状态表。分析软件的需求规格说明得到影响软件功能的因子,确定因子可以有哪些取值,即确定因子的状态。
(2)加权筛选,简化因子-状态表。软件的因子及因子的状态会有很多,每个因子及其状态对软件的作用也大不相同,如果把这些因子及状态都划分到因子-状态表中,最后生成的测试用例会相当庞大,从而影响软件测试的效率。因此需要根据因子及状态的重要程度进行加权筛选,选出重要的因子与状态,简化因子-状态表。
(3)构建正交表,设计测试用例。正交表的表示形式为Ln(tc),其中L表示正交表,n为正交表的行数,正交表的每一行可以设计一个测试用例,因此行数n也表示可以设计的测试用例的数目。c表示正交实验的因子数目,即正交表的列数,因此正交表是一个n行c列的表。t称为水平数,表示每个因子能够取得的最大值,即因子有多少个状态。
- 白盒测试方法
一、填空题
- 执行语句
- 判定覆盖
- 条件覆盖
- 判定-条件覆盖
- 条件组合覆盖
- 探针
二、判断题
- 对
- 错
- 错
- 对
- 对
三、单选题
- D
- C
- C
- D
四、简答题
- 请简述基本路径法设计测试用例的步骤。
答:使用基本路径法设计测试用例,主要包括4个步骤。
(1)画出流程图:首先需要分析被测程序的源代码,并画出程序的流程图。
(2)画出控制流图:控制流图是描述程序控制流的一种图示方法。控制流图可以由程序流程图转化而来。如果测试的源程序代码简洁,也可以直接通过分析源程序代码画出控制流图。在画程序的控制流图时,使用圆圈表示一条或多条无分支的语句,使用箭头表示控制流方向。
(3)计算程序的圈复杂度:圈复杂度用来衡量一个模块判定结构的复杂程度。通过计算程序的圈复杂度可以得到程序基本的独立路径数目,从而确定测试用例的数目。
(4)设计测试用例:根据计算出的程序圈复杂度导出基本可执行路径集合,从而设计测试用例的输入数据和预期结果。
- 请简述逻辑覆盖法的几种方法及它们之间的区别。
答:(1)语句覆盖
语句覆盖是最常见的覆盖方式,语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的执行语句,这里的执行语句不包括头文件、注释、空行等。语句覆盖在多分支的程序中,只能覆盖某一条路径,使得该路径中的每一个语句至少被执行一次,但不会考虑各种分支组合情况。
(2)判定覆盖
判定覆盖又称为分支覆盖,其原则是设计足够多的测试用例,在测试过程中保证每个判定至少有一次为真值,有一次为假值。判定覆盖的作用是使真假分支均被执行,虽然判定覆盖比语句覆盖测试能力强,但仍然具有和语句覆盖一样的单一性。判定覆盖语句一般是由多个逻辑条件组成,如果仅仅判断测试程序执行的最终结果而忽略每个条件的取值,必然会遗漏部分测试路径,因此,判定覆盖也属于弱覆盖。
(3)判定-条件覆盖
判定-条件覆盖要求设计足够多的测试用例,使得判定语句中所有条件的可能取值至少出现一次,同时,所有判定语句的可能结果也至少出现一次,它弥补了判定覆盖和条件覆盖的不足之处。相比于条件覆盖、判定覆盖,判定-条件覆盖弥补了两者的不足之处,但是由于判定-条件覆盖没有考虑判定语句与条件判断的组合情况,其覆盖范围并没有比条件覆盖扩展,因此判定-条件覆盖在仍旧存在遗漏测试的情况。
(4)条件组合覆盖
条件组合指的是设计足够多的测试用例,使判定语句中每个条件的所有可能至少出现一次,并且每个判定语句本身的判定结果也至少出现一次。它与判定-条件覆盖的差别是,条件组合覆盖不是简单地要求每个条件都出现真与假两种结果,而是要求让这些结果的所有可能组合都至少出现一次。
- 请简述目标代码插桩的3种执行模式。
答:目标代码插桩具有以下3种执行模式。
(1)即时模式:原始的二进制或可执行文件没有被修改或执行,将修改部分的二进制代码生成文件副本存储在新的内存区域中,在测试时仅执行修改部分的目标代码。
(2)解释模式:在解释模式中目标代码被视为数据,测试人员插入的测试代码作为目标代码指令的解释语言,每当执行一条目标代码指令,程序就会在测试代码中查找并执行相应的替代指令,测试通过替代指令的执行信息就可以获取程序的运行信息。
(3)探测模式:探测模式使用新指令覆盖旧指令进行测试,这种模式在某些体系结构(如x86体系结构)中比较适用。
- 接口测试
一、填空题
- 预期结果
- 客户端
- JSON
- HTTP
二、判断题
- 错
- 对
- 对
- 错
- 对
- 错
三、单选题
- C
- D
- A
- B
- C
四、简答题
- 请简述实现接口测试的方式。
答:实现接口测试的方式有两种,分别是通过工具实现和通过代码实现。常用的接口测试工具有Postman、JMeter等,测试人员使用Java、Python等语言编写代码也可以实现接口测试,在使用Java语言编写接口测试的代码时,通常需要结合HttpClient技术;在使用Python语言编写接口测试的代码时,通常需要结合Request框架。虽然通过代码实现接口测试的方式能够让测试人员与开发人员使用相同的技术栈,更好的对接测试流程,但是这种方式要求测试人员具备一定的编程能力,对于编程能力弱的测试人员而言难度较大。
- 请简述接口测试的流程。
答:在工作中,测试人员需要按照公司制定的流程开展接口测试,通常,接口测试的流程包括分析接口测试需求、解析与评审接口文档、编写接口测试计划、设计与评审接口测试用例、搭建接口测试环境、编写接口测试脚本、执行接口测试用例、管理与跟踪接口缺陷、整理测试报告。在时间充裕并且公司条件允许的情况下,有时还会进行接口自动化持续集成测试。
- 性能测试
一、填空题
- 单位时间
- 每秒钟
- 错误率
- 线程
- 取样器
- 监听器
- HTTP请求默认值
- 断言
- 关联
- 定时器
二、判断题
- 错
- 错
- 错
- 对
- 错
- 对
- 对
- 错
- 错
- 对
- 对
三、单选题
- C
- A
- D
- D
- C
- B
- A
- D
- A
四、简答题
- 请简述性能测试的概念及其主要目的。
答:性能测试是通过性能测试工具模拟正常、峰值及异常负载状态下对系统各项性能指标进行监控的一种测试类型。性能测试能够验证软件系统是否达到了用户期望的性能需求,同时也可以发现系统中可能存在的性能瓶颈及缺陷,从而优化系统的性能。
性能测试的目的主要有以下4方面。
(1)验证系统性能是否满足预期的性能需求,包括系统的执行效率、稳定性、可靠性、安全性等。
(2)分析软件系统在各种负载水平下的运行状态,提高性能调整效率。
(3)识别系统缺陷,寻找系统中可能存在的性能问题,定位系统瓶颈并解决问题。
(4)系统调优,通过重复的、长时间的测试,找出系统中存在的隐含问题,改善并优化系统的性能。
- 请简述什么是基准测试。
答:从狭义上讲,基准测试是指单用户测试,测试环境确定后,使用单个用户对业务模型中的重要业务做多次单独的测试,观察并记录各项性能指标的变化。从狭义上讲,基准测试是指单用户测试,测试环境确定后,使用单个用户对业务模型中的重要业务做多次单独的测试,观察并记录各项性能指标的变化。
- 请简述JMeter中断言的作用。
答:断言用于验证响应结果是否正确,即用一个预设的结果(值、表达式、时间长短等)与实际结果进行匹配,匹配成功就是断言成功,匹配失败就是断言失败。
- 请简述JMeter中后置处理器的作用。
答:后置处理器用于对响应数据进行关联处理,所谓关联就是请求之间有依赖关系,比如一个请求需要另一个请求的响应数据作为参数,则需要先获取另一个请求的响应数据,对其响应数据进行处理,再将响应数据作为参数发送本次请求。获取一个请求的响应数据就需要用到后置处理器。
- 请简述JMeter中线程组的分类及其作用。
答:JMeter中的线程组主要有setUp线程组、tearDown线程组、线程组,这3个线程组的作用分别如下。
(1)setUp线程组:一种特殊类型的线程组,用于执行测试前的初始化操作。
(2)tearDown线程组:一种特殊类型的线程组,用于执行测试结束之后的回收工作。
(3)线程组:普通线程组,一个线程组可以表示一个虚拟用户组,线程组中可以设置线程数量,每一个线程都可以模拟一个虚拟用户。
- Web自动化测试
一、填空题
- 录制与回放技术
- UI测试
- 共享脚本
- TestCase
- assert
- Fixture、初始化
二、判断题
- 对
- 错
- 错
- 错
- 对
- 错
三、单选题
- D
- C
- C
- A
- C
- A
- B
四、简答题
- 请简述自动化测试需要满足的条件。
答:使用自动化测试需要满足以下3个条件。
(1)项目需求变动不频繁
(2)项目进度压力不大,时间不紧迫
(3)多种浏览器或平台上可以重复运行相同的测试脚本
- 请简述自动化测试的优缺点。
答:自动化测试的优点如下。
(1)提高回归测试效率
(2)提高测试人员利用率
(3)提高测试精确度
(4)提高测试的便捷性
自动化测试的优点如下。
(1)不能提高测试的有效性
(2)发现的缺陷比人工测试少且不容易发现新的缺陷
- App测试
一、填空题
- Android
- 交互性测试
- 原生应用
- 图形测试
- 网络多样性
- 获取元素的text值
- drag_and_drop()
二、判断题
- 对
- 错
- 对
- 错
- 对
- 错
三、单选题
- C
- B
- D
- C
- C
四、简答题
- 请简述App测试与PC端软件测试的区别。
答:App与PC端软件测试的区别主要有如下4点。
(1)页面布局不同
(2)使用场合不同
(3)输入方法不同
(4)操作方式不同
- 请简述App专项测试要点。
答:App专项测试要点主要有以下6点。
(1)安装测试
(2)卸载测试
(3)升级测试
(4)交互性测试
(5)弱网测试
(6)耗电量测试
- 请简述App性能测试要点。
答:App性能测试要点主要有以下4点。
(1)边界测试:在各种边界压力下,如电量不足、存储空间不足、网络不稳定时,测试App是否能正确响应和正常运行。
(2)压力测试:对App不断实加压力,如不断增加负载、不断增大数据吞吐量等以确定App的服务瓶颈,获得App能提供的最大服务级别,确定App性能是否满足用户需求。
(3)响应能力测试:响应能力测试实质上也是一种压力测试,在一定条件下App是否可以正确响应,响应时间是否超过了客户需求。
(4)耗能测试:测试App运行时对移动设备的资源占用情况,包括内存、CPU消耗,App长期运行时耗电量、耗流量情况,验证App对资源的消耗量是否满足用户需求。