当前位置: 首页 > article >正文

软件测试笔试面试汇总(二)(附答案)

题目列表

    • 1. 试述软件的概念和特点?软件复用的含义?构件包括哪些?
    • 2. 软件生存周期及其模型是什么?
    • 3. 什么是软件测试(谈谈对软测理解)?软件测试的目的与原则
    • 4. 净室软件工程的策略是什么?
    • 5. 软件配置管理的作用?软件配置包括什么?
    • 6. 目前主要的测试用例设计方法是什么?
    • 7. 软件的安全性应从哪几个方面去测试?
    • 8. 什么是测试用例 什么是测试脚本 两者的关系是什么?
    • 9. 简述什么是静态测试、动态测试、黑盒测试、白盒测试、α 测试、β 测试
    • 10. 软件测试分为几个阶段 各阶段的测试策略和要求是什么?
    • 11. 面向对象的测试用例设计有几种方法?如何实现?
    • 12. 在软件测试各个阶段通常完成什么工作?各个阶段的结果文件是什么?

1. 试述软件的概念和特点?软件复用的含义?构件包括哪些?

  1. 软件是计算机系统中与硬件相互依存的一部分,它是包括程序、文档的完整集合。
  2. 软件复用(Software Reuse)是将已有软件的各种有关知识用于建立新的软件 ,以缩减软件开发和维护的花费。软件复用是提高软件生产力和质量的一种重要技术。早期的软件复用主要是代码级复用,被复用的知识专指程序,后来扩大到包括领域知识、开发经验、设计决定、体系结构、需求、设计、代码和文档等一切有关方面。
  3. 可以被复用的软件成分一般称作可复用构件

2. 软件生存周期及其模型是什么?

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

3. 什么是软件测试(谈谈对软测理解)?软件测试的目的与原则

使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否 满足规定的需求或弄清预期结果与实际结果之间的差别。
– 软件测试的目的:
测试是程序的执行过程,目的在于发现错误
一个成功的测试用例在于发现至今未发现的错误
一个成功的测试是发现了至今未发现的错误的测试
确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能 都有明确的书面说明。
确保产品满足性能和效率的要求
确保产品是健壮的和适应用户环境的
– 软件测试的原则:
软件测试应尽早执行,并贯穿于整个软件生命周期
软件测试应追溯需求
测试应由第三方来构造
必须彻底检查每个测试结果
严格执行测试计划,排除测试的随意性
妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性 往往要靠测试文档。

4. 净室软件工程的策略是什么?

  1. 增量计划。开发一个采用增量策略的项目计划,建立每个增量的功能、它的项 目大小、以及净室开发进度表。必须特别小心以保证通过认证的增量将被定时 集成。
  2. 需求收集。使用类似于在第 11 章引入的技术,为每个增量开发一个客户级需 求的更详细的描述。
  3. 盒结构规约。使用一个运用盒结构的规约方法[HEV93]来描述功能规约。遵 从操作分析原则,盒结构”在每一个精化级别上分离和分开行为、数据及过程 的创造性定义”。
  4. 形式化设计。使用盒结构方法,净室设计是规约的自然的无缝的扩展。虽然, 在两个活动间可进行清楚的区分,但是,规约(称为”黑盒”)是被递进地求精 (在一个增量内)以成为类似于体系结构的和过程的设计
    (分别称为”状态盒” 和”清晰盒”)。
  5. 正确性验证。净室小组对设计及代码进行一系列严格的正确性验证活动。验证 从最高层次的盒结构(规约)开始,然后移向设计细节和代码。正确性验证的第
    一层次通过应用一组”正确性问题”[LIN88]来进行,如果这没有证明规约 是正确的,则使用更形式化的(数过学的)验证方法。
  6. 代码生成、检查和验证。以某种专门语言表示的盒结构规约被转换为合适的程 序设计语言。然后,使用标准的走查或检查技术(第 8 章)来保证代码和盒结构 的语义相符性,以及代码的语法正确性。然后,对源代码进行正确性验证。
  7. 统计性测试计划。分析软件的项目级使用情况,计划和设计一组执行用途的” 概率分布”的测试用例(25.4 节)。如图 25-1 所示,这个净室活动是和规约、 验证及代码生成并行进行的。
  8. 统计性使用测试。记住,对计算机软件进行彻底测试是不可能的,因此,总需 要设计有限数量的测试用例。统计性使用技术[POO88]执行一系列由特定对 象的所有用户的所有可能的程序执行的统计样本
    (上面提到的概率分布)所导出 的测试。认证。一旦完成验证、检查和使用测试 (并且所有错误被修正),则开 始进行增量集成前的认证工作。

5. 软件配置管理的作用?软件配置包括什么?

  1. 软件配置管理作为软件开发过程的必要环节和软件开发管理的基础,贯穿整个 软件生命周期,同时对软件开发过程的宏观管理即项目管理也有重要的支持作 用。一个软件开发组织真正有效的实施软件配置管理,将会使软件开发过程有
    更好的可预测性,使系统具有可重复性,大大提高软件组织的竞争力。
  2. 软件配置包括如下内容:
  3. 配置项识别
  4. 工作空间管理
  5. 版本控制
  6. 变更控制
  7. 状态报告
  8. 配置审计

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

如下:

  1. 白盒测试:
  2. 逻辑覆盖
  3. 循环覆盖
  4. 基本路径覆盖
  5. 黑盒测试:
  6. 边界值分析法
  7. 等价类划分
  8. 错误猜测法
  9. 因果图法
  10. 状态图法
  11. 测试大纲法
  12. 随机测试
  13. 场景法

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

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

  1. 用户认证安全的测试要考虑问题:
  2. 明确区分系统中不同用户权限
  3. 系统中会不会出现用户冲突
  4. 系统会不会因用户的权限的改变造成混乱
  5. 用户登陆密码是否是可见、可复制
  6. 是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系 统)
  7. 用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不 通过输入口令进入系统
  8. 系统网络安全的测试要考虑问题
  9. 测试采取的防护措施是否正确装配好,有关系统的补丁是否打上
  10. 模拟非授权攻击,看防护系统是否坚固
  11. 采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的黑客 攻击工具攻击试一下,现在最常用的是 NBSI 系列和 IPhacker IP )
  12. 采用各种木马检查工具检查系统木马情况
  13. 采用各种防外挂工具检查系统各组程序的外挂漏洞
  14. 数据库安全考虑问题:
  15. 系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网 站就没有太高要求)
  16. 系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在 数据的不完整,对于这个系统的功能实现有了障碍)
  17. 系统数据可管理性
  18. 系统数据的独立性
  19. 系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是 否可以完整)

8. 什么是测试用例 什么是测试脚本 两者的关系是什么?

答案如下:

  1. 为实施测试而向被测试系统提供的输入数据、操作或各种环境设 置以及期望结果的一个特定的集合。
  2. 测试脚本是为了进行自动化测试而编写的脚本。
  3. 测试脚本的编写必须对应相应的测试用例,

9. 简述什么是静态测试、动态测试、黑盒测试、白盒测试、α 测试、β 测试

  1. 静态测试是不运行程序本身而寻找程序代码中可能存在的错误或 评估程序代码的过程。
  2. 动态测试是实际运行被测程序,输入相应的测试实例,检查运行 结果与预期结果的差异,判定执行结果是否符合要求,从而检验 程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性 等性能。
  3. 黑盒测试一般用来确认软件功能的正确性和可操作性,目的是检测 软件的各个功能是否能得以实现,把被测试的程序当作一个黑盒, 不考虑其内部结构,在知道该程序的输入和输出之间的关系或程序 功能的情况下,依靠软件规格说明书来确定测试用例和推断测试结 果的正确性。
  4. 白盒测试根据软件内部的逻辑结构分析来进行测试,是基于代码的 测试,测试人员通过阅读程序代码或者通过使用开发工具中的单 步调试来判断软件的质量,一般黑盒测试由项目经理在程序员开 发中来实现。
  5. α 测试是由一个用户在开发环境下进行的测试,也可以是公司内 部的用户在模拟实际操作环境下进行的受控测试, Alpha 测试不 能由程序员或测试员完成。
  6. β 测试是软件的多个用户在一个或多个用户的实际使用环境下进 行的测试。开发者通常不在测试现场,Beta 测试不能由程序员或 测试员完成。

10. 软件测试分为几个阶段 各阶段的测试策略和要求是什么?

【注】软件测试策略是指:在一定的软件测试标准、测试规范的指导下,依据测试项目的特定环境约束而规定的软件测试的原则、方式、方法的集合。

  1. 软件测试按阶段划分可以分为单元测试、集成测试、系统测试和 < 验收测试>(不一定有)几个阶段

  2. 单元测试测试策略:
    – 自顶向下的单元测试策略
    方法:先对最顶层的基本单元进行测试,把所有调用的单 元做成桩模块。然后再对第二层的基本单元进行测试,使 用上面已测试的单元做驱动模块。依此类推直到测试完所 有基本单元。
    优点:在集成测试前提供早期的集成途径。在执行上和详细设计的顺序一致。不需要开发驱动模块。
    缺点:随着测试的进行,测试过程越来越复杂,开发和维护成本增加。
    总结:比孤立单元测试的成本高很多,不是单元测试的一 个好的选择。
    – 自底向上的单元测试策略
    方法:先对最底层的基本单元进行测试,模拟调用该单元 的单元做驱动模块。然后再对上面一层进行测试,用下面 已被测试过的单元做桩模块。依此类推,直到测试完所有 单元。
    优点:在集成测试前提供系统早期的集成途径。不需要开 发桩模块。
    缺点:随着测试的进行,测试过程越来越复杂。
    总结:比较合理的单元测试策略,但测试周期较长。
    – 孤立单元测试策略
    方法:不考虑每个单元与其它单元之间的关系,为每个单 元设计桩模块或驱动模块。每个模块进行独立的单元测试。
    优点:简单、容易操作,可达到高的结构覆盖率。
    缺点:不提供一种系统早期的集成途径。 总结:最好的单元测试策略。

  3. 集成测试的测试策略:
    – 大爆炸集成
    优点:可以迅速完成集成测试;并且只要极少数的驱动和 桩模块;用例也是最少的;简单;资源利用率高
    缺点:一次试运行成功的可能性不大,问题定位和修改比 较困难,许多接口错误很容易躲过测试。 适应于一个维护型项目或被测试系统较小
    – 自顶向下集成
    优点:较早地验证了主要控制和判断点;按深度优先可以 首先实现和验证一个完整的软件功能;功能较早证实,带 来信心;只需一个驱动,减少驱动器开发的费用;支持故 障隔离。
    缺点:柱的开发量大;底层验证被推迟;底层组件测试不 充分。
    适应于产品控制结构比较清晰和稳定;高层接口变化较小 底层接口未定义或经常可能被修改;产口控制组件具有较大的技术风险,需要尽早被验证;希望尽早能看到产品的 系统功能行为。
    – 自底向上集成
    优点:对底层组件行为较早验证;工作最初可以并行集成 比自顶向下效率高;减少了桩的工作量;支持故障隔离。
    缺点:驱动的开发工作量大;对高层的验证被推迟,设计 上的错误不能被及时发现。 适应于底层接口比较稳定;高层接口变化比较频繁;底层组件较早被完成。
    – 三明治集成
    优点:集合了自顶向下和自底向上两种策略的优点
    缺点:中间层测试不充分 适应于大部分软件开发项目
    – 基干集成
    优点:具有三明治集成的优点,更适合于大型复杂项目的 集成。
    缺点:必须对系统的结构和相互依存性进行仔细的分析; 驱动和桩开发量大;局部采用了大爆炸的策略,有些接口 可能测试不充分。 嵌入式系统中常用
    – 分层集成 适应于有明显层次关系的系统
    – 基于功能的集成
    优点:优先验证关键功能的正确性;减少驱动的开发;进度要快。
    缺点:对接口测试不充分;有较大的冗余测试。
    – 基于消息的集成
    优点:优先验证关键消息的正确性;减少驱动的开发;进度要快。
    缺点:对接口测试不充分;有较大的冗余测试。
    – 基于风险的集成
    优点:最具有风险的组件最早进地验证,有助于系统的快 速稳定。 缺点:需要对各组件的风险有一个清晰的分析。
    – 基于进度的集成
    优点:具有较高的并行度;能够有效缩短项目的开发进度。
    缺点:桩和驱动工作量较大;有些接口测试不充分;有些测试重复和浪费。

  4. 系统测试的测试策略:
    数据和数据库完整性测试
    功能测试
    用户界面测试
    性能评测
    负载测试
    强度测试
    容量测试
    安全性和访问控制测试
    故障转移和恢复测试
    配置测试
    安装测试
    加密测试
    可用性测试
    版本验证测试
    文档测试

11. 面向对象的测试用例设计有几种方法?如何实现?

要方法:
1、基于故障的测试
基于故障测试也可以用于组装测试,组装测试可以发现消息联系中”可能的故障”。“可能的故障”一般为意料之外的结果、错误地使用了操作/消息、不正确引用等。为了确定由操作(功能)引起的可能故障必须检查操作的行为。
这种方法除用于操作测试外,还可用于属性测试,用以确定其对于不同类型的对象行为是否赋予了正确的属性值。因为一个对象的”属性”是由其赋予属性的值定义的。
2、基于脚本的测试
基于脚本的测试主要关注用户需要做什么,而不是产品能做什么,即从用户任务(使用用例)中找出用户要做什么及去执行。
这种基于脚本的测试有助于在一个单元测试情况下检查多重系统。所以基于脚本测试用例测试比基于故障测试不仅更实际(接近用户),而且更复杂一点。
3、OO 类的随机测试
如果一个类有多个操作(功能),这些操作(功能)序列有多种排列。而这种不变化的操作序列可随机产生,用这种可随机排列的序列来检查不同类实例的生存史,就叫随机测试。
4.、类层次的分割测试
这种测试可以减少用完全相同的方式检查类测试用例的数目。这很像传统软件测试中的等价类划分测试。分割测试又可分三种。
– 基于状态的分割。按类操作是否改变类的状态来分割(归类)。
– 基于属性的分割。按类操作所用到的属性来分割(归类)。
–基于类型的分割。按完成的功能分割(归类)。
5、 由行为模型(状态、活动、顺序和合作图)导出的测试状态转换图(STD)可以用来帮助导出类的动态行为的测试序列,以及这些类与之合作的类的动态行为测试序列。

12. 在软件测试各个阶段通常完成什么工作?各个阶段的结果文件是什么?

包括什么内容?
案如下:
1、单元测试阶段。各独立单元模块在与系统地其他部分相隔离的情况下进行测试,单元测试针对每一个程序模块进行正确性校验,检查各个程序模块是否正确地实现了规定的功能。生成单元测试报告,提交缺陷报告。
2、集成测试阶段。集成测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。该阶段生成集成测试报告,提交缺陷报告。
3、系统测试阶段。将通过确认测试的软件,作为整个给予计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行全面的功能覆盖。该阶段需要提交测试总结和缺陷报告。


http://www.kler.cn/news/309815.html

相关文章:

  • 通信工程学习:什么是EPON以太网无源光网络
  • 大模型持续影响劳动力市场,普通人如何抢占风口?
  • Redis网络模型、通信协议、内存回收
  • 2023 hnust 湖科大 毕业实习 报告+实习鉴定表
  • Leetcode—合并两个有序数组
  • 二叉搜索树(Java实现)
  • fastjson2 解决long类型带L尾缀的value
  • 【web前端】数组array、集合set、字典map、对象object、字符串string常见方法合集
  • 文件操作
  • OrionX GPU算力池助力AI OCR场景应用
  • git 更换远程地址的方法
  • [产品管理-15]:NPDP新产品开发 - 13 - 产品创新流程 - 具体产品的创新流程:精益生产与敏捷开发
  • 传感技术是如何实现实时监测和控制的呢
  • Flume:大规模日志收集与数据传输的利器
  • JAVA_15
  • 兰花种类识别系统源码分享
  • 【渗透测试】——Upload靶场实战(1-5关)
  • 怎么使用nginx把80端口代理到想要的端口?
  • 中、美、德、日制造业理念差异
  • C++学习笔记(19)
  • vue3路由基本使用
  • 283. 移动零(快慢指针)
  • Linux权限理解【Shell的理解】【linux权限的概念、管理、切换】【粘滞位理解】
  • 零基础考过软考信息系统项目管理师经验分享
  • H5依赖安装
  • 一、(JS)JS中鼠标事件-mouseenter、mouseleave和mouseover、mouseout区别
  • 使用Redis实现用户关注博客的推模式
  • Go 交叉编译
  • Jenkins部署若依项目
  • 开源 AI 智能名片 S2B2C 商城小程序中的全渠道供应策略