【软件测试简答题】

2023-11-05

软件测试简答题

1.根据G.Mayers的观点,软件测试的目的是什么?
软件测试是:
(1)为了发现错误而执行程序的过程。
(2)一个好的用例能够发现至今尚未发现的错误的测试。
(3)一个成功的测试是发现至今尚未发现的错误的测试。

2.简述软件测试的任务、目的与类型。
参考答案:
(1)软件测试是一个为了寻找软件错误而运行程序的过程。
(2)目的就是为了发现软件中的错误。一个好的测试用例是指很可能找到迄 今为止尚未发现的错误的用例。一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。
(3)软件测试主要分为白盒测试和黑盒测试两大类。

3.单元测试有哪些内容?

  1. 模块接口测试
    对通过被测模块的数据流进行测试。为此,对模块接口,包括参数表、调用子模块的参数、全程数据、文件输入/输出操作都必须检查。
  2. 局部数据结构测试:
    设计测试用例检查数据类型说明、初始化、缺省值等方面的问题,还要查清全程数据对模块的影响。
  3. 路径测试:
    选择适当的测试用例,对模块中重要的执行路径进行测试。对基本执行路径和循环进行测试可以发现大量路径错误。
  4. 错误处理测试
    :检查模块的错误处理功能是否包含有错误或缺陷。例如,是否拒绝不合理的输入;出错的描述是否难以理解、是否对错误定位有误、是否出错原因报告有误、是否对错误条件的处理不正确;在对错误处理之前错误条件是否已经引起系统的干预等。
  5. 边界测试:
    要特别注意数据流、控制流中刚好等于、大于或小于确定的比较值时出错的可能性。对这些地方要仔细地选择测试用例,认真加以测试。
  6. 此外,
    如果对模块运行时间有要求的话,还要专门进行关键路径测试,以确定最坏情况下和平均意义下影响模块运行时间的因素。这类信息对进行性能评价是十分有用的。

单元测试的主要内容:单元模块内和模块之间的功能测试、容错测试、边界测试、约束测试、界面测试、重要的执行路径测试,单元内的业务流程和数据流程等。

单元测试有哪些内容?测试中采用什么方法?
单元测试主要针对模块的以下五个基本特征进行测试:
(1)模块接口
(2)局部数据结构
(3)重要的执行路径
(4)错误处理
(5)边界条件
测试的方法是为被测试模块编写驱动模块和桩模块来实现被测试单元的可运行。通过驱动模块来模拟被测试模块的上级调用模块,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结构并输出。桩模块则用来代替被测试模块所调用的模块。它的作用是返回被测模块所需的信息。

4.单元测试中采用什么方法?
测试的方法是为被测试模块编写驱动模块桩模块来实现被测试单元的可运行。
通过驱动模块来模拟被测试模块的上级调用模块,以上级模块调用被测模块的格式驱动被测模块,接收被测模块的测试结构并输出。
桩模块则用来代替被测试模块所调用的模块。它的作用是返回被测模块所需的信息。

5.软件测试要经过哪些步骤?这些测试与软件开发各阶段之间有什么关系?
请添加图片描述

6.软件测试包括哪些步骤?说明这些步骤的测试对象是什么?

参考答案:
(1)单元测试,目的是代码达到模块说明书的要求
(2)集成测试,目的是将经过单元测试的模块逐步组装成具有良好一致性的
完整的程序
(3)确认测试,目的是确认程序系统是否满足软件需求规格说明书的要求
(4)系统测试,目的是检查能否与系统的其余部分协调运行,并且完成SRS对他的要求。

7.什么是白盒测试法?有哪些覆盖标准试对他们的检错能力进行比较?

参考答案:
白盒法测试法把测试对象看作一个打开的盒子,测试人员须了解程序内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。
白盒法有下列几种覆盖标准: 语句覆盖:设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。
判定覆盖:设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。
条件覆盖:设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。
判定/条件覆盖:设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断中的每个条件的可能取值至少执行一次。
条件组合覆盖:设计足够的测试用例,运行被测程序,使得每个判断的所有可能的条件取值组合至少执行一次。
路径覆盖:设计足够的测试用例,覆盖程序中所有可能的路径。
从上到下的覆盖标准其检错能力也从弱到强,其中条件组合发现错误的能力较强,凡满足其标准的测试用例,也必然满足前四种覆盖标准。在实际的逻辑测试中,一般以条件组合覆盖为主设计测试用例,然后再补充部分用例来达到路径覆盖的测试标准。

8.什么是黑盒测试法?采用黑盒技术测试用例有哪几种方法?这些方法各有什么特点?

参考答案:

黑盒测试法把被测试对象看成是一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。
采用黑盒技术测试用例的方法有: ①等价类的划分、②边界值分析、
③错误推测,④因果图。
(1)等价类的划分:是将输入数据按有效的或无效的(也称合理的或不合理的)划分成若干个等价类,测试每个等价类的代表值就等于对该类其他值的测试。这样就把漫无边迹的随机测试改为有针对性的等价类测试,用少量有代表性的例子代替大量测试目的相同的例子,能有效地提高测试效率。但这个方法的缺点是没有注意选择某些高效的、能够发现更多错误的测试用例。
(2)边界值分析法:是将测试边界情况作为重点目标,选取正好等于、刚刚大于和刚刚小于边界值的测试数据。(边界情况是指输入等价类和输入等价类边界上的情况。)这种方法可以查出更多的错误,因为在程序中往往在处理边界情况时易发生错误。
(3)错误推测法:是在测试程序时,人们根据经验或直觉推测程序中可能存在的错误,从而有针对性地编写检查这些错误的测试用例。
(4)因果图:能够有效地检测输入条件的各种组合可能会引起的错误。它的基本原理是通过画因果图,把用自然语言描述的功能说明转换为判定表,最后为判定表的每一列设计一个测试用例。

这几种方法都不能提供一组完整的测试用例,在实际测试中应把各种方法结合起来使用。
综合策略:就是联合使用上述几种测试方法,尽可能多地发现程序中的错误。

9.调试的目的是什么?调试有哪些技术手段?

调试则是在进行了成功的测试之后才开始的工作。
调试的目的是确定错误的原因和位置,并改正错误,因此调试也称为纠错(Debug)。
调试的技术手段有简单的调试方法、归纳法、演绎法和回溯法等。

10.由小到大写出各种软件测试之策略。
在这里插入图片描述

11.软件测试准则有哪些?
1.所有测试都应该能追溯到用户需求。

2.应该远在测试开始之前就制定出测试计划。

3.把Pareto原理应用到软件测试中。

4.应该从“小规模”测试开始,并逐步进行“大规模”测试。

5.穷举测试是不可能的。

6.为了达到最佳的测试效果,应该由独立的第三方从事测试工作。

一、软件测试基本原则
1、所有测试的标准都是建立在用户需求之上的,测试的目的在于发现系统是否满足规定的需求。
2、尽早的和不断的测试,越早进行测试,缺陷的修复成本就会越低。
3、程序员应避免检查自己的程序,由第三方进行测试更客观有效。
4、穷举测试是不可能的。
5、充分注意测试中的群集现象,一段程序中一发现的错误数越多,其中存在的错误概率越大,因此对发现错误较多的程序段,应进行更深入的测试。
6、设计测试用例时应包括合理输入和不合理输入,以及各种边界条件、特殊情况下要制造极端状态和意外状态。
7、注意回归测试的关联系,往往修改一个错误会引起更多错误。
8、测试应从“小规模”开始,逐步转向“大规模”。
9、测试用例式设计出来,不是写出来的,应根据测试的目的,采用相应的方法设计测试用例,从而提高测试的效率,更多的发现错误,提高程序的可靠性。
10、重视并妥善保存一切测试过程文档(测试计划,测试用例,测试报告等)

12.简述静态测试方法和动态测试方法

静态测试
是指不需要运行程序代码而进行的测试,例如测试产品说明书,对此进行检查和审阅。静态方法不运行被测试程序本身,仅通过分析或检查源程序的方法、结果、过程、接口等来检查程序的正确性。静态方法通过程序静态特性的分析,找出欠缺和可疑之处。例如,不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归,未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例的选取提供指导。

动态测试
是指通过运行被测程序,检查运行结果与预期结果的差异,并分析允许效率和健壮性等性能。这种方法由3部分组成:编写测试用例、执行程序、分析程序输入的结果

例如:执行程序,验证软件的正确性就是动态测试的一个过程

13.什么是集成测试?非渐增式测试与渐增式测试有什么区别?渐增式测试如何组装模块?

集成测试,也叫组装测试或联合测试。在单元测试的基础上,将所有模块按照设计要求(如根据结构图)组装成为子系统或系统,进行集成测试。

非渐增式测试与渐增式测试区别

  1. 渐增式可以较早地发现模块界面之间的错误,非渐增式则要到最后将所有模块连接起来时才能发现此类错误。
  2. 非渐增式需要较多的人工
  3. 渐增式有利于排错。如果模块界面间有错,如果用非渐增式,这类错误到最后联合测试时才能发现,此时很难判断错误发生在哪一部分,但如果用渐增式,这类错误就较容易定位,它通常与最新加上去的模块有关。
  4. 渐增式比较彻底。
  5. 渐增式需要较多的机器时间。
  6. 非渐增式方式,开始时允许几个测试人员并行工作,对大型系统来说,是很有意义的。

14.什么是确认测试?该阶段有哪些工作?

确认测试又称为有效性测试,他的任务是检查软件的功能与性能是否与需求规格说明书中确定的未来指标相符合。

确认测试阶段有两项工作,①进行确认测试 ②软件配置审查。

确认测试一般是在模拟环境中运用黑盒测试方法,由专门的测试人员和用户参加的测试。
软件配置审查的任务是检查软件的所有文档资料的完整性正确性。如果发现遗漏和错误,应该补充和改正,同时要编排目录,为以后的软件维护工作奠定基础

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【软件测试简答题】 的相关文章

  • 使用 pip3 安装 mysqlclient 时遇到问题

    我正在尝试使用 Django 设置 python 3 6 环境 安装说明说我应该安装 mysqlclient 才能连接到 mySQL 我明白了 dennis django sudo H pip3 install mysqlclient Co
  • 清除表中的所有行将身份规范重置为零并且不影响外键?

    我们已经创建了数据库框架以及所有关系和依赖关系 但表内部只是虚拟数据 我们需要删除这些虚拟数据 并开始添加正确的数据 我们怎样才能清除所有内容并将主键 IsIdentity 是 保留为零 并且不影响外部表关系结构 多谢 您可以采取以下步骤
  • SQLite同时读写

    我读过很多主题 但无法找到问题的答案 是否可以同时读写 我有后台线程更新一些数据 UI 需要存储在数据库中的一小部分数据 所以在UI线程中执行SELECT操作 但当更新正在进行时它会阻塞 结果 UI 冻结了几秒钟 有人在写入时成功从数据库读
  • 需要有关使用 PHP 在 mysql 数据库中插入逗号分隔数据的帮助

    数据库表中已有的演示数据 INSERT INTO csvtbl ID SKU Product Name Model Make Year From Year To VALUES 1 C2AZ 3B584 AR Power Steering P
  • 自动将所有mysql表转储到单独的文件中?

    我想将每个 mysql 表转储到单独的文件中 手册指出其语法是 mysqldump options db name tbl name 这表明您事先知道表名称 我现在可以设置知道每个表名称的脚本 但是假设我在路上添加了一个新表并且忘记更新转储
  • PHP 5 的 SQLite 编译设置是什么?

    SQLite 3 7 附带了新的预写日志记录 WAL http www sqlite org wal html并且有很多设置可以被配置 http www sqlite org compile html 但是 似乎没有任何方法可以改变任何事情
  • 在mysql中搜索“SanF”时获取旧金山的记录

    当我搜索 SanF 时获得 San Francisco 记录 SELECT FROM table WHERE col LIKE san Works SELECT FROM table WHERE col LIKE san F Works S
  • MySQL 触发器和 SUM()

    我有两张桌子 学生桌和家庭桌 在学生中 我有列 st venue 和total venue 家里我有收入 Total Revenue 是学生 st 收入与家庭收入之和 其中 family id student student id stud
  • 选择MySql表数据放入数组中

    我尝试从 mysql 捕获数据并将它们全部放入数组中 认为 users table id name code 1 gorge 2132 2 flix ksd02 3 jasmen skaod2 sql mysql query select
  • 更改Docker容器中的mysql密码

    我如何更改 docker 容器中的 root 密码 因为一旦我停止 mysql 服务 容器就会自动停止 我应该停止 mysql 容器并部署一个新容器吗 您可以使用正在运行的容器更改它docker exec session https doc
  • ejabberd 16.06 + mysql 5.5.50,消息历史记录不保存

    我使用ejabberd 16 06 mysql 5 5 50 消息历史记录没有保存 我的 ejabberd yml MySQL server odbc type mysql odbc server freldo odbc port 3306
  • 如何将 php Web 应用程序转换为桌面应用程序并保留数据库 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我们有一个用 PHP 开发的 Web 应用程序 但大多数客户并没有一直连接到互联网 那么 有没有办法将应用程序转换为桌面应用程序 以便
  • 数据库字段的标准长度列表

    我正在设计一个数据库表并问自己这个问题 名字字段应该有多长 有人有最常见字段 例如名字 姓氏和电子邮件地址 的合理长度列表吗 我刚刚查询了我的数据库 其中包含美国数百万客户 最大值名长度是 46 我选择 50 当然 其中只有 500 个超过
  • 基本表创建 fpdf

    我找不到使用 fpdf 制作表格并从 mysql 数据库获取数据的合适教程 我只是想知道如何创建一个 我在网上尝试示例时遇到了很多错误 例如 我有 名字 中间名 姓氏 年龄 和 电子邮件 列 如何使用 fpdf 创建表格并回显数据库中的条目
  • Laravel Sum 列数据库 Eloquent

    尝试获取我的一个表中 int 字段的总和应该非常容易 不幸的是 事实并非如此 因为无论我使用 Laravel MySQL 还是 Excel 我都会得到不同的结果 Laravel 5 4 给了我20506 Table sum field na
  • 如何查看Pocketsphinx词典中是否存在该单词?

    我只是想看看字典文件中是否存在字符串 字典文件位于问题底部 我想检查语音识别器是否可以识别单词 例如 识别器将无法识别字符串ahdfojakdlfafiop 因为字典中没有定义 所以 我可以检查某个单词是否在 pocktsphinx 词典中
  • Oracle 数据库 12c 尝试连​​接时出错:网络适配器无法建立连接

    我第一次安装Oracle数据库12c 我正确地遵循了所有步骤并将其安装在 Windows 7 64 位上 但是当我单击 SQL Developer 并尝试创建新连接时 我输入了用户名和密码等信息 最后单击 测试 按钮 我得到了这个错误消息
  • 数据表 - 服务器端处理 - 数据库列合并

    我目前正在使用 DataTables 1 10 5 服务器端处理功能 http www datatables net examples data sources server side html http www datatables ne
  • 如何在Sequelize中从主模型同一级别的包含模型返回结果?

    这是我在项目中完成的代码和结果 我想获得包含模型的结果与主模型相同的结果 下面的代码是我所做的 序列化查询 User findAll include model Position attributes POSITION NAME then
  • 让 Prometheus 发送 SQL 查询

    我正在尝试使用普罗米修斯 https prometheus io 监视我的 MySQL 数据库 但似乎找不到添加 SQL 查询的区域 例如 我想运行一个返回值的 SQL 查询 然后将该值添加到图表中 发送警报 有没有办法让 Promethe

随机推荐

  • Tip: built files are meant to be served over an HTTP server. Opening index.html over file:// won't

    vue cli项目打包报错 Tip built files are meant to be served over an HTTP server Opening index html over file won t work 报错原因 因为
  • cmake自动选择编译器脚本

    一 什么是cmake CMake 是一个跨平台的 开源的构建系统 BuildSystem CMake 可以通过 CMakeLists txt 文件来产生特定平台的标准的构建文件 例如 为 Unix 平台生成makefiles文件 使用GCC
  • Mac安装鸿蒙系统,搭建MAC系统下的Wi-Fi loT Hi3861鸿蒙开发环境

    前言 周二就收到了Wi Fi loT Hi3861的试用开发板 最近忙的一直没有时间开始研究 终于今天周六睡了一个大懒觉起来开始准备开发环境 因为harmonyos目前只能使用ubuntu进行编译 刷写固件需要windows环境 而我习惯在
  • C++选择题

    选择题 1 说明函数int method a floct 是友元函数应为 A A friend int method a a floctz B friend int method a floctz C int friend a floctz
  • 初识ES-安装kibana

    部署kibana kibana可以给我们提供一个elasticsearch的可视化界面 便于我们学习 部署 运行docker命令 部署kibana docker run d name kibana e ELASTICSEARCH HOSTS
  • PHP完整源码编译安装

    liunx安装步骤 第一步 去官网下载php源码包 pph官网地址 下载好之后上传到liunx 这里我的用的windows vm虚拟机 推荐一个好用的命令将本地文件上传到服务器 yum install lrzsz 先安装依赖 root lo
  • 虚拟机中,安装tensorflow时killed解决办法

    我在图形界面的虚拟Linux里的pycharm里 用pip命令安装clu时 要先安装tensorflow 第一次tensorflow下载成功了 存在了cache文件夹里 但其他包发生了冲突 连接失败 当解决完冲突 在此用pip安装时 到了收
  • 【webpack】配置React环境

    配置React打包环境 开始搭建 安装webpack 基础配置 开发环境 使用Typescript 使用React 代码规范 Prettier Eslint 总结 一个现代化的web应用 已经不是单纯地优html css javascrip
  • 查看linux 所有运行的应用和端口命令

    要查看 Linux 中所有运行的应用程序及其对应的端口 可以使用以下命令 1 使用 netstat 命令 已被弃用 建议使用 ss 命令 netstat tuln 这会显示当前系统上所有打开的网络连接和监听的端口 其中 t 表示显示 TCP
  • 自动标注软件AnyLabeling安装及使用教程

    自动标注软件AnyLabeling AnyLabeling自动标注软件介绍 AnyLabeling标注软件安装 anylabeling标注软件使用 AnyLabeling自动标注软件介绍 该工具作为一个具有Segment Anything和
  • JavaScript高级

    文章目录 今日内容 一 DOM简单学习 为了满足案例要求 1 功能 二 事件简单学习 三 BOM 1 概念 Browser Object Model 浏览器对象模型 2 组成 3 Window 窗口对象 案例2 轮播图 4 Location
  • c# - A study on the NativeWindow - encapsulate window handle and procedure

    NativeWindow gives you a way to way to intercept the window messages are you familiar with the Windows Message Pump Aslo
  • 【yolov7系列三】实战从0构建训练自己的数据集

    大家好 我是张大刀 上文中提到了yolov7的正负样本匹配策略 这里主要从0开始训练自己的数据集 如果大家需文中ppt使用 请关注公众号后台添加微信 领取 备注 ppt 首先大刀是在windows电脑端完成数据集的标注 linux ubun
  • 在 FPGA 上如何实现双线性插值的计算?

    作者 殷庆瑜 责编 胡巍巍 目录 一 概述 二 What 什么是双线性插值 二 Why 为什么需要双线性插值 三 How 怎么实现双线性插值 关键点1 像素点选择 关键点2 权重计算 升级1 通过查表减少计算量 升级2 通过数据锁存减少取数
  • cnpm下载、cnpm不存在处理、yarn安装

    1 cnpm全局安装 npm install g cnpm registry https registry npm taobao org 2 运行cnpm v 报错 不是内部环境 3 解决办法 在环境变量里添加路径 cmd中输入以下命令获取
  • 万用表怎么测量电池容量_家电维修必知:万用表测量及使用方法

    万用表怎么用 这是很多新手或是业余爱好者的一个小难题 有了万用表却不会使用 万用表是电工电器行业不可缺少的测量仪表 一般以测量电压 电流和电阻为主要目的 万用表按显示方式分为指针万用表和数字万用表 是一种多功能 多量程的测量仪表 也称三用表
  • c语言打开大于2G的文件,C语言操作大于2G的文件

    最近在做视频编解码时遇到使用fseek无法定位到一个大于2G的文件尾 由于自己功底不扎实 百思不得其解 请教大神后得知在VC平台下使用 fseeki64可以解决问题 然而自己傻乎乎的在获取文件指针位置的地方依旧使用的ftell 中途调试N久
  • (Java)leetcode-42 Trapping Rain Water(接雨水)

    题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图 计算按此排列的柱子 下雨之后能接多少雨水 上面是由数组 0 1 0 2 1 0 1 3 2 1 2 1 表示的高度图 在这种情况下 可以接 6 个单位的雨水 蓝色部分表示雨水
  • Servlet重要的API

    重要的API 重要的API config response响应 响应头的相关操作 响应输出流的操作 其它操作 request请求 请求头数据 Request乱码问题的解决方法 Java反射基础 重要的API config init 和ini
  • 【软件测试简答题】

    软件测试简答题 1 根据G Mayers的观点 软件测试的目的是什么 软件测试是 1 为了发现错误而执行程序的过程 2 一个好的用例能够发现至今尚未发现的错误的测试 3 一个成功的测试是发现至今尚未发现的错误的测试 2 简述软件测试的任务