一、填空题
- 软件从“出生”到“消亡”的过程称为___。
- 早期的线性开发模型称为_______开发模型。
- 引入风险分析的开发模型为_______开发模型。
- ISO 9126-1991标准提出的质量模型包括_______和________和________和______和_______和_______6大特性。
- 按照缺陷的严重程度可以将缺陷划分为_______和_____和______和________。
- 验证软件单元是否符合软件需求与设计的测试称为_______。
- 对程序的逻辑结构、路径与运行过程进行的测试称为_____。
- 有一种测试模型,测试与开发并行进行,这种测试模型称为______模型。
- 软件生命周期
- 瀑布
- 螺旋
- 可靠性 可移植性 可使用性 效率 可维护性 功能性
- 严重 一般 次要 建议
- 单元测试
- 白盒测试
- W
- 等价类划分就是将输入数据按照输入需求划分为若干个子集,这些子集称为___。
- 等价类划分法可将输入数据划分为________和_______。
- _____通常作为等价类划分法的补充。
- 因果图中的______关系要求程序有一个输入和一个输出,输出与输入保持一致。
- 因果图的多个输入之间的约束包括___和_____和____和___四种。
- 决策表通常由___和_____和____和___四部分组成。
- 等价类
- 有效等价类 无效等价类
- 边界值法
- 恒等
- 异、或 、唯一、要求
- 条件桩、条件项、动作桩、动作项
- 语句覆盖的目的是测试程序中的代码是否被执行,它只测试代码中的_____。
- ____的作用是使真假分支均被执行。
- _______是指判定语句中的每个条件都要取真假值各一次。
- 对于判定语句if(a>1 AND c<1),测试时要保证a>1、c<1两个条件取“真”、“假”值至少一次,同时,判定语句if(a>1 AND c<1)取“真”、“假”也至少出现一次,这使用了_______覆盖方法。
- ________要求判定语句中所有条件取值的可能组合都至少出现一次。
- 在插桩法中,插入到程序中的代码称为_____。
- 执行语句
- 判定覆盖
- 条件覆盖
- 判定-条件
- 条件覆盖
- 探针
1、吞吐量是指_______内系统能够完成的工作量。
2、TPS是指系统________能够处理的事务和交易的数量。
3、_____确定在满足系统性能指标的情况下,系统所能够承受的最大负载量。
4、点击率是指用户每秒向Web服务器提交的______请求数。
5、________通常与数据库、系统资源有关,用于规划将来需求增长时,对数据库和系统资源的优化。
6、LoadRunner工具主要由Vugen、Controller、Analysis三部分组成。
- 单位时间
- 每秒钟
- 负责测试
- HTTP
- 容量测试
1、安全测试是以发现_______为目标。
2、SQL注入攻击的Web应用程序处于______,因此大多防火墙不会进行拦截。
3、利用XSS攻击的恶意代码一般包括_____和________。
- 安全隐患
- 应用层
- HTML、JavaScript
1、软件执行自动化测试的前提条件是_____和_____和________
2、自动化测试层次分为______和________和________
3、自动化测试技术有_______和_______和_______
4、单元测试主要测试的是_______和_______
5、测试脚本分为_______和__________和__________
6、Selenium的三个核心组件是Selenium IDE、Selenium Grid、Selenium RC
7、列举常见的Web页面元素的定位方式_______和__________和__________
- 项目需求变化不频繁、项目周期长、测试化脚本可复用性强
- UI测试、接口测试、单元测试
- 录制与回放、脚本测试、数据驱动测试
- 功能函数、类
- 线性脚本、结构化脚本、共享脚本
- class、xpath、link text
1、移动App使用最多的操作系统为_______和______。
2、移动App的专项测试包括_____(写出任意三个即可)等。
3、Appium的测试对象包括_______和__________和__________
- IOS 、 Andriod
- 安装测试、卸载测试、升级测试、弱网测试、耗电量测试
- 移动原生应用、移动Web应用、混合应用
二、判断题
1.现在比较流行的软件开发模型为螺旋模型。(×)
2.软件缺陷都存在于程序代码中。(×)
3.软件测试H模型融入了探索测试。(×)
4.软件测试要投入尽可能多的精力以达到 100% 的覆盖率。(×)
5.有效等价类可以捕获程序中的缺陷,而无效等价类不能捕获缺陷。(×)
6.如果程序要求输人值是一个有限区间的值,可以划分为1 个有效等价类(取值范围)和 1个无效等价类(取值范围之外 )。(×)
7.使用边界值方法测试时,只取边界 2 个值即可完成边界测试。(×)
8.因果图考虑了程序输入、输出之间的各种组合情况。(√)
9.决策表法是由因果图演变而来的。(√)
10.正交实验设计法比较适合复杂的大型项目。(√)
11.语句覆盖无法考虑分支组合情况。(√)
12.并发数量增大可能会导致系统响应变慢。(√)
13.压力测试是给系统加压直至系统崩溃,以此来确定系统最大负载能力。(√)
14.安全测试贯穿于软件的整个生命周期。(√)
15.安全测试以违反权限与能力的约束为判断依据。(√)
16.对XXS漏洞,最核心的防御措施就是对用户的输入进行检查和过滤。(√)
17.自动化测试层次分为UI测试、接口测试、单元测试。
18.自动化测试技术有录制与回放、脚本测试、数据驱动测试。
19.列举常见的 Web页面元素的定位方式:class、xpath、link text。
20.软件在升级或者功能发生改变之后不需要进行回归测试,只需要测试改变的部分即可(×)
21.自动化测试可以达到 100% 覆盖率。(×)
22.软件在升级或者功能发生改变之后不需要进行回归测试,只需要测试改变的部分即可(×)
23.自动化测试可以达到 100% 覆盖率。(×)
24.移动 App 的切换测试包括删除进程、锁屏、后台切换。(√)
25.Appium使用的是HTTP协议。(×)
26.Monkey测试中的所有事件都是随机的,不带任何主观性。(√)
三、单选题
1、下列选项中,哪一项不是软件开发模型。( )
A、V模型
B、快速模型
C、螺旋模型
D、敏捷模型
2、下列选项中,哪一项不是影响软件质量的因素。( )
A、需求模糊
B、缺乏规范的文档指导
C、使用新技术
D、开发人员技术有限
3、下列哪一项不是软件缺陷产生的的原因。( )
A、需求不明确
B、测试用例设计不好
C、软件结构复杂
D、项目周期短
4、关于软件缺陷,下列说法中错误的是。( )
A、软件缺陷是软件中(包括程序和文档)存在的影响软件正常运行的问题、错误、隐藏的功能缺失或多出。
B、按照缺陷的优先级不同可以将缺陷划分为立即解决、高优先级、正常排队、低优先级。
C、缺陷报告有统一的模板,该模板是IEEE729-1983制定。
D、每个缺陷都有一个唯一的编号,这是缺陷的标识。
5、关于软件测试,下列说法中错误的是。( )
A、在早期的软件开发中,测试就等同于调试。
B、软件测试是使用人工或自动手段来运行或测定某个系统的过程。
C、软件测试的目的在于检验它是否满足规定的需求或是弄清楚预期结果与实际结果之间的差异。
D、软件测试与软件开发是两个独立、分离的过程。
6、下列哪一项不是软件测试的原则。( )
A、测试应基于客户需求
B、测试越晚进行越好
C、穷尽测试是不可以的
D、软件测试遵循GoodEnough原则
1、下列选项中,哪一项不是因果图输入与输入之间的关系。( )
A、恒等
B、或
C、要求
D、唯一
2、下列选项中,哪一项是因果图输出之间的约束关系。( )
A、异
B、或
C、强制
D、要求
3、下列选项中,哪一项不是正交实验法的关键因素。( )
A、指标
B、因子
C、因子状态
D、正交表
1、下列选项中,哪一项不属于逻辑覆盖。( )
A、语句覆盖
B、条件覆盖
C、判定覆盖
D、判定-语句覆盖
2、关于逻辑覆盖,下列说法中错误的是。( )
A、语句覆盖的语句不包括空行、注释、空行等。
B、相比于语句覆盖,判定覆盖考虑到了每个判定语句的取值情况。
C、条件覆盖考虑到了每个逻辑条件的取值的所有组合情况。
D、在逻辑覆盖中,条件组合覆盖是覆盖率最大的测试方法。
3、关于插桩法,下列说法中错误的是。( )
A、插桩法就是往被测试程序中插入测试代码以达到测试目的的方法。
B、插桩法可分为目标代码插桩和源代码插桩。
C、源代码插桩的程序需要经过编译、链接过程,但桩代码不参与编译、链接过程。
D、目标代码插桩是往二进制程序中插桩代码。
1、关于性能测试,下列说法中错误的是。( )
A、软件响应慢属于性能问题。
B、性能测试就是通过性能测试工具模拟正常、峰值及异常负载状态下对系统的各项性能指标进行测试的活动。
C、性能测试可以发现软件系统的性能瓶颈。
D、性能测试是以验证功能实现完整为目的。
2、下列选项中,哪一项不是性能测试指标。( )
A、响应时间
B、TPS
C、DPH
D、吞吐量
3、下列选项中,哪一项是瞬间将系统压力加载到最大的性能测试。( )
A、压力测试
B、负载测试
C、并发测试
D、峰值测试
4、关于性能测试流程,下列说法中错误的是。( )
A、性能测试比较特殊,它并不遵循一般测试流程。
B、性能测试需求分析中,测试人员首先要明确测试目标。
C、在制定性能测试计划时,一个非常重要的任务就是设计场景。
D、性能测试通常需要对测试过程执行监控。
5、关于LoadRunner与JMeter,下列说法中错误的是。( )
A、LoadRunner是收费的,JMeter是开源的。
B、LoadRunner广泛支持业界标准协议。
C、JMeter使用监听器记录服务器的响应。
D、JMeterJMeter报表较少,其测试报告不如LoadRunner详尽。
1、关于安全测试,下列说法中错误的是。( )
A、安全测试主要是验证产品符合安全需求定义和产品质量标准。
B、风险分析也属于安全测试的一种。
C、安全缺陷与功能、性能缺陷不同,安全缺陷可以完全避免。
D、安全测试要尽早测试、经常测试。
2、下列选项中,哪一项不属于安全测试。( )
A、静态分析
B、漏洞扫描
C、渗透测试
D、集成测试
3、下列选项中,哪一项是跨站脚本攻击漏洞。( )
A、XSS
B、CSRF
C、SQL
D、Buffer Overflow
4、关于跨站请求伪造,下列说法中错误的是。( )
A、它是一种针对Web应用程序的攻击方式。
B、跨站请求伪造通常发生在用户访问网站未退出的情况下。
C、跨站请求伪造取用户信息伪装成用户执行恶意活动。
D、防范跨站请求伪造攻击的主要思路就是加强后台对用户及用户请求的验证,而不能仅限于cookie的识别。
5、下列选项中,哪一项是抓包工具。( )
A、AppScan
B、Fiddler
C、Nmap
D、Metasploit
1、下列选项中,哪一项是不正确的。( )
A、单元测试主要测试的是函数功能、接口。
B、在单元测试中主要使用的是白盒测试方法。
C、接口测试中使用白盒测试和黑盒测试结合的方式进行测试。
D、UI测试在测试中不能修改界面布局进行测试。
解析:参见本章案例讲解,可以通过Appium修改UI布局进行测试
2、下列选项中,哪一项不是自动化测试的缺点。( )
A、自动化测试对测试团队的技术有更高的要求。
B、自动化测试对于迭代较快的产品来说时间成本花费高。
C、自动化测试具有一致性和重复性的特点。
D、自动化测试脚本需要开发且错误的测试用例浪费资源和时间投入。
3、下列哪一项不属于脚本测试技术。( )
A、线性测试。
B、结构化测试脚本。
C、回归测试脚本。
D、共享脚本。
4、关于持续集成的说法错误的是。( )
A、使用持续测试的方式进行测试,需要搭建好持续继承的环境,测试人员需要和开发人员沟通协作。
B、持续集成方式有利于提高项目的开发进度和测试效率。
C、持续集成可以完全实现自动化测试不需要人工处理。
D、使用容器技术进行持续集成可以方便项目的部署。
5、下列选项中适合自动化测试的是。( )
A、需求不确定且变化频繁的项目。
B、产品设计完成后测试过程不够准确。
C、项目开发周期长而且重复测试部分较多。
D、项目开发周期短,测试比较单一。
6、下列关于自动化测试描述正确的是( )
A、自动化测试能够很好的进行回归测试从而缩短回归测试时间。
B、自动化测试脚本不需要维护,每次测试完成后进行下一次测试需要重新编写测试用例。
C、自动化测试只需要熟练掌握自动化测试工具就可以。
D、自动化测试中测试人员仅仅测试负责的模块,不需要考虑其他干扰因素。
1、关于移动App,下列说法中错误的是。( )
A、移动App使用的网络可能会从WiFi瞬间切换到4G。
B、移动App满足了用户对移动生活、工作的强烈需求。
C、移动App无法接受键盘鼠标输入。
D、移动App屏幕窄小,显示信息有限。
2、下列选项中,哪一项不属于移动App的UI测试。( )
A、图片测试
B、安装测试
C、文字测试
D、颜色测试
3、下列工具中,哪一项不是移动App自动化测试工具。( )
A、Appium
B、Monkey
C、UI Automator
D、Jemeter
四、简答题
1. 简述软件缺陷的处理流程
软件缺陷处理流程为:提交→分配→确认→处理→复测→关闭,具体如下图所示:
图1-1 软件缺陷处理流程
(1)提交:测试人员发现缺陷之后,将缺陷提交给测试组长。
(2)分配:测试组长接收到测试组员提交的缺陷之后,将其移交给开发人员。
(3)确认:开发人员接收到移交的缺陷之后,会与团队甚至测试人员一起商议,确定该缺陷是否是一个缺陷。
(4)拒绝:如果经过商议之后,缺陷不是一个真正的缺陷则拒绝处理,关闭缺陷。如果经过商议之后,确定其是一个真正的缺陷,则可以根据缺陷的严重程度或优先级等立即处理或延期处理。
(5)处理:开发人员修改缺陷。
(6)复测:开发人员修改好缺陷之后,测试人员重新进行测试(回归测试),检测缺陷是否确实已经修改。如果未被正确修改,则重新提交缺陷。
(7)关闭:测试人员进行回归测试之后,如果缺陷已经被正确修改,则将缺陷关闭,整个缺陷处理完成。
2. 软件测试的六个基本原则
(1)测试应基于客户需求
(2)测试要尽早进行
(3)穷尽测试是不可能的
(4)遵循GoodEnough原则(投入和产出适当权衡)
(5)测试缺陷要符合“二八”定理(软件80%缺陷集中在20%模块中)
(6)避免缺陷免疫(避免反复使用测试用例)
3. 请简述等价类划分法原则
(1)如果程序要求输入值是一个有限区间的值,则可以将输入数据划分为一个有效等价类和两个无效等价类,有效等价类为指定的取值区间,两个无效等价类分别为有限区间两边的值。
(2)如果程序要求输入的值是一个“必须成立”的情况,则可以将输入数据划分为一个有效等价类和一个无效等价类。
(3)如果程序要求输入数据是一组可能的值,或者要求输入值必须符合某个条件,则可以将输入数据划分一个有效等价类和一个无效等价类。
(4)如果在某一个等价类中,每个输入数据在程序中的处理方式都不相同,则应将该等价类划分成更小的等价类,并建立等价表。
4.LoadRunner组成部分及其作用
(1)VuGen
LoadRunner是通过多个虚拟用户在系统中同时工作或访问系统的环境来进行性能测试的,虚拟用户进行的操作通常被记录在虚拟用户脚本中,而VuGen就是用于创建虚拟用户脚本的工具,因此它也称为虚拟用户脚本生成器。
在创建脚本时,VuGen会生成多个函数用于记录虚拟用户所执行的操作,并将这些函数插入到VuGen编辑器生成基本的虚拟用户脚本,这个创建脚本的过程也叫作录制脚本。
(2)Controller
Controller用于创建和控制LoadRunner场景,场景负责定义每次测试中发生的事件,包括模拟的用户数、用户执行的操作以及测试要监控的性能指标等。
(3)Analysis
Analysis是LoadRunner的数据分析工具,它可以收集性能测试中的各种数据,对其进行分析并生成图表和报告供测试人员查看。
5.常用的性能测试指标。
(1)响应时间
响应时间(Response Time)是指系统对用户请求作出响应所需要的时间。
(2)吞吐量
吞吐量(Throughput)是指单位时间内系统能够完成的工作量,它衡量的是软件系统服务器的处理能力。
(3)并发用户数
并发用户数是指同一时间请求和访问的用户数量。
(4)TPS
TPS是指系统每秒钟能够处理的事务和交易的数量,它是衡量系统处理能力的重要指标。
(5)点击率
点击率是指用户每秒向Web服务器提交的HTTP请求数,这个指标是Web应用特有的一个性能指标。
(6)资源利用率
资源利用率是指软件对系统资源的使用情况,包括CPU利用率、内存利用率、磁盘利用率等。
6.常见的性能测试种类。
(1)负载测试
负载测试是指逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统所能够承受的最大负载量。
(2)压力测试
压力测试也叫强度测试,它是指逐步给系统增加压力,测试系统的性能变化,使系统某些资源达到饱和或系统崩溃,从而确定系统所能承受的最大压力。
(3)峰值测试
性能测试中还有一种压力测试叫作峰值测试,它是指瞬间(不是逐步加压)将系统压力加载到最大,使测试软件系统在极限压力下的运行情况。
(4)配置测试
配置测试是指调整软件系统的软硬件环境,测试各种环境对系统性能的影响,从而找到系统各项资源的最优分配原则。
(5)可靠性测试
可靠性测试是指给系统加载一定的业务压力,使其持续运行一段时间(如7*24h),测试系统在这种条件下是否能够稳定运行。
(6)容量测试
容量测试是指在一定的软硬件及网络环境下,测试系统所能支持的最大用户数、最大存储量等。
7. XSS攻击概念及流程
原理:主要源于Web应用程序对用户输入检查和过滤不足。攻击者可以利用XSS漏洞把恶意代码(HTML代码或javascript脚本)注入到网站中,当有用户浏览该网站时,这些恶意代码就会被执行,从而达到攻击的目的。
流程:攻击者通过E-mail向用户发送一个包含恶意代码的网站home.com,用户点击链接后,浏览器会在用户毫不知情的情况下执行链接中包含的恶意代码,将用户与home.com交互的cookie和session等信息发送给攻击者,攻击者拿到这些数据之后,就会伪装成用户与真正的网站进行会话,从事非法活动
8. 自动化测试技术
自动化测试技术可分为录制与回放技术,使用录制回放工具可以将操作过程录制下来通过回放观察是否存在问题;脚本测试可分为线性脚本、结构化脚本、共享脚本,;数据驱动测试分为关键字驱动测试、行为驱动测试,
9. 持续集成测试概念
在持续集成中,开发人员会频繁的向主干提交代码,新提交的代码首先经过编译和自动化测试验证,最后合并到主干
10. 自动化测试实施策略
(1)单元测试 在开发中对每个功能模块(函数,类方法)进行测试
(2)接口测试 对数据传输 数据库性能等进行测试
(3)Ui测试 以用户体验为主
11.移动App与传统软件测试的区别。
(1)页面布局不同
对于传统软件,计算机设备屏幕比较大,可以同时显示很多信息,用户在使用时对所有信息一览无余,页面布局比较灵活,但是对于移动App,移动设备屏幕小,显示的信息有限,在测试时需要考虑布局是否合理。
(2)使用场合不同
传统软件使用地点比较固定,网络信号也比较稳定,而移动App使用场合不固定,网络信号也不稳定,测试需要考虑弱网情况下App的使用情况。
(3)输入方法不同
传统软件大多使用键盘和鼠标进行输入,移动App的输入方法比较多,除了键盘和鼠标之外,还包括触屏、电容笔、语音等,移动App测试时要测试多种输入方法是否都能正常使用。
(4)操作方式不同
传统软件使用鼠标操作,点击精确,而移动App大多是触屏操作,点击时误差较大,且不支持“鼠标”悬停事件。