精华内容
下载资源
问答
  • 在软件工程中软件测试的目的是什么
    千次阅读
    2019-05-24 10:47:01

    作为软件测试人员,我们没有办法提高产品质量,因为我们不碰代码。
    能做的,不过就是尽量能多地发现软件产品中的缺陷,并对软件产品的质量水平做出尽可能准确的评估,进而保证产品质量,降低上线后的风险。

    软件测试工程师的职责,也就是软件测试的目的:
    1)软件测试是为了发现错误而执行程序的过程。
    2)测试是为了证明程序有错,而不是证明程序无错。(发现错误不是唯一目的)
    3)一个好的测试用例在于它发现至今未发现的错误。
    4)一个成功的测试是发现了至今未发现的错误的测试。

    测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征。可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,通过分析也能帮助我们设计出有针对性的检测方法,改善测试的有效性。

    更多相关内容
  • 随着软件工程化越来越被重视以及软件规模的不断扩大,软件分析、设计的作用越来越突出,而实践,越来越多的错误是刚开始的分析与设计阶段就已经存在,所以对于软件需求和设计阶段的测试就显得非常重要,这就是...

    一、软件测试的定义

    软件测试的经典定义是在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。因为软件是由文档、数据以及程序组成的,所以软件测试的对象也就不仅仅是程序本身,而是包括软件形成过程的文档、数据以及程序。
    随着软件工程化越来越被重视以及软件规模的不断扩大,软件分析、设计的作用越来越突出,而在实践中,越来越多的错误是在刚开始的分析与设计阶段就已经存在,所以对于软件需求和设计阶段的测试就显得非常重要,这就是测试概念的扩大化以及软件全生命周期测试的理念。

    二、软件质量

    软件质量有下面几个定义:

    1991年,ISO 9126中定义

    软件质量是软件满足规定的或潜在用户需求特性的总和

    1999年,ISO 14598定义

    软件质量是软件特性的总和,软件满足规定或潜在用户需求的能力。

    一般对质量的理解是一个实体的“属性”,“属性”好就是质量好,但是这不够全面,因为“属性”是内部特性,而内部特性好不代表一定能够完成好用户的任务,所以软件质量也是关于软件特性具备“能力”的体现。
    软件质量包括“内部质量”、“外部质量”、“使用质量”三个部分,也就是说,软件满足规定的或潜在的用户需求的能力要这三个方面去衡量。

    三、软件测试与质量保证的区别

    质量保证: 质量保证的工作是通过预防、检查和改进来保证软件质量。QA使用“全面质量管理”和“过程改进”的原理开展质量保证工作。所关注的是软件质量的管理与测量。虽然QA活动也有些测试活动,但所关注的主要是软件质量的检查与测量。
    软件测试: 测试和质量保证同样都是与软件的开发过程紧密相关,但不同的是其并不关心软件开发过程的活动,而是对过程的产物以及开发出的软件进行剖析。测试活动必须假设软件中存在潜在问题,测试中所有的操作都是为了找出更多的问题,而不仅仅是为了验证每一件事是正确的。对测试中发现的问题的分析、追踪与回归测试也是软件测试中的重要工作,所以说软件测试是保证其质量的重要一环。

    四、软件测试的目的

    在早期,软件定义指出软件测试的目的是寻找错误,并且尽可能找出更多的错误。后面,有人提出了以下几个目的:

    1.测试是程序的执行过程,目的在于发现错误

    2.一个好的测试用例在于能够发现至今为止未发现的错误

    3.一个成功的测试是发现了至今未发现的错误的测试

    4.也有人提出软件测试不仅仅是为了发现缺陷,更重要的是要通过对软件质量的度量以提高软件的质量。
    综上所述,软件测试的目的可以概括如下:软件测试是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。 同时,测试是以评价一个程序或者系统属性为目标的活动,测试是对软件质量的度量与评估,以验证软件的质量满足用户的需求的程度,为用户选择和接收软件提供有力依据。
    备注: 测试是为了证明软件是否可以使用,即是符合用户的需求的。

    五、软件测试的原则

    原则1: 所有的测试都应追溯到用户需求
    由于软件设计和开发的目的就是使用户完成预定的任务,并满足用户的需求,而软件测试所揭示的缺陷和错误使软件达不到用户的目标,满足不了用户的需求。
    原则2: 应该尽早地和不断地进行软件测试
    因为软件生命周期的各个阶段都有可能产生错误,所以不能把软件测试仅仅看作为软件开发活动中的一个独立阶段的工作,而应该将其贯穿于开发的各个阶段中。同时还应尽可能早的开始测试,只要测试在生命周期中进行得足够早,就能够提高被测软件的质量,这就是预防性测试的基本原则。
    原则3: 完全测试是不可能的,测试需要终止
    在有限的时间和资源条件下,找出所有的软件缺陷是不可能的,主要有三个方面的原因:

    1.输入量太大

    2.输出结果太多

    3.路径组合太多

    原则4: 测试不能显示软件潜在的缺陷
    也就是说测试只能证明软件中存在缺陷而不能证明软件中没有缺陷。
    原则5: 充分注意测试中的集群现象
    经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目或检错率成正比。根据这个规律,应对错误集群的程序段进行重点测试,以提高测试效益。
    原则6: 程序员应避免检查自己写的程序
    这有两个原因,一个是心理原因,一个是思维定式原因,一个使人不大愿意承认自己的错误以及思维定式导致难以发现自己的错误,因此为达到测试目的,应该避免这种情况出现。
    原则7: 尽量避免测试的随意性
    应该从工程的角度去理解软件测试,他是有组织、有计划、有步骤的活动

    附: 内容来自《软件评测师教程》

    展开全文
  • 软件工程软件测试报告——软件测试说明书

    千次阅读 多人点赞 2021-04-23 16:47:39
    文章目录1 引言1.1 编写目的1.2 背景1.3 术语和缩略词1.4 参考资料2 测试用例设计3 测试结果及分析3.1 测试环境3.2 测试用例执行3.3 结论及建议 1 引言 1.1 编写目的   编写本报告的目的是研究Asking软件的总体...

    【备注】本说明书由华中农业大学2018级计算机科学与技术专业的刘畅、刘铠铭、张清望、卢家伟四位同学共同完成。

    1 引言

    1.1 编写目的

      编写本报告的目的是研究Asking软件的总体需求、背景。对开发结果、开发评价进行分析,得出经验与教训,本文档的预期读者为软件开发者。

    1.2 背景

      该软件的名称为Asking,与之类似的软件有知乎、微博等软件,Asking软件的测试环境为浏览器。

    1.3 术语和缩略词

    1.4 参考资料

    [1]窦万峰.软件工程方法与实践(第三版).北京:机械工业出版社,2016

    [2]普莱斯曼.软件工程:实践者的研究方法(原书第8版).北京:机械工业出版社,2016

    [3] 辣鸡搬砖喵喵团队.Asking需求规格说明书.

    [4] 辣鸡搬砖喵喵团队.Asking软件概要设计说明书

    [5] 辣鸡搬砖喵喵团队.Asking软件详细设计说明书

    2 测试用例设计

    (1)登录操作

    表1 登录_第一组测试用例

    测试用例编号Asking_SignIn_001
    测试项目用户登录
    测试标题输入正确的用户名和与之对应的密码
    重要级别
    预置条件系统存在该用户
    输入用户名123@qq.com,密码123
    操作步骤1打开Asking应用;2输入用户名123@qq.com;3输入密码123
    预期输出密码输入时被隐藏,提示用户“登录成功”

    表2 登录_第二组测试用例

    测试用例编号Asking_SignIn_002
    测试项目用户登录
    测试标题输入错误的用户名或密码
    重要级别
    预置条件系统存在该用户
    输入用户名456@qq.com,密码123
    操作步骤1打开Asking应用;2输入用户名456@qq.com;3输入密码123
    预期输出提示用户“您输入的用户名或密码错误,请重新输入”

    表3 登录_第三组测试用例

    测试用例编号Asking_SignIn_003
    测试项目用户登录
    测试标题不输入密码
    重要级别
    预置条件系统存在该用户
    输入用户名789@qq.com
    操作步骤1打开Asking应用;2输入用户名789@qq.com
    预期输出提示用户“请输入密码”

    (2)创建问题操作

    表4 创建问题_第一组测试用例

    测试用例编号Asking_Create_001
    测试项目创建问题
    测试标题创建后在搜索栏搜索该问题
    重要级别
    预置条件用户成功登录
    输入标题“熊猫为什么这么聪明”,标签“生活”
    操作步骤1点击创建问题;2输入问题标签“熊猫为什么这么聪明”;③选择问题标签生活;④在搜索栏搜索这个问题
    预期输出1提示用户“问题创建成功”;2搜索栏下方出现该问题

    表5 创建问题_第二组测试用例

    测试用例编号Asking_Create_002
    测试项目创建问题箱
    测试标题创建后通过链接和问题箱密钥搜索该问题
    重要级别
    预置条件用户成功登录
    输入标题“熊猫为什么这么聪明”
    操作步骤1点击创建问题;2输入问题标签“熊猫为什么这么聪明”;③勾选问题箱选项;④把生成的密钥和问题箱链接分享给另一个用户
    预期输出1提示用户“问题箱创建成功”;2另一个用户点击链接,输入密钥,查看该问题

    (3)删除问题操作

    表6 删除问题_第一组测试用例

    测试用例编号Asking_Delete_001
    测试项目删除问题
    测试标题删除后在搜索栏搜索不到该问题
    重要级别
    预置条件用户成功登录,问题“熊猫为什么这么聪明”存在
    输入
    操作步骤1点击问题“熊猫为什么这么聪明”;2删除该问题;③在搜索栏搜索这个问题
    预期输出1提示用户“问题删除成功”;2搜索栏下方不出现该问题

    表7 删除问题_第二组测试用例

    测试用例编号Asking_Delete_002
    测试项目删除问题箱
    测试标题删除后通过无法通过链接和问题箱密钥搜索该问题
    重要级别
    预置条件用户成功登录,问题箱“熊猫为什么这么聪明”存在
    输入
    操作步骤1点击问题箱“熊猫为什么这么聪明”;2删除该问题箱;③另一个用户用之前创建该问题箱时生成的密钥和链接搜索该问题箱
    预期输出1提示用户“问题箱删除成功”;2另一个用户点击链接,输入密钥,查看不到该问题

    (4)回复问题操作

    表8 回复问题_第一组测试用例

    测试用例编号Asking_Answer_001
    测试项目回复问题
    测试标题搜索问题后进行回复
    重要级别
    预置条件用户成功登录,问题“熊猫为什么这么聪明”存在
    输入评论“熊猫棒棒”
    操作步骤1搜索问题“熊猫为什么这么聪明”;2在问题相方回复栏输入“熊猫棒棒”
    预期输出问题下方出现该回复

    表9 回复问题_第二组测试用例

    测试用例编号Asking_Answer_002
    测试项目回复问题并点赞该回复
    测试标题搜索问题后进行回复并点赞
    重要级别
    预置条件用户成功登录,问题“熊猫为什么这么聪明”存在
    输入评论“熊猫棒棒”
    操作步骤1搜索问题“熊猫为什么这么聪明”;2在问题相方回复栏输入“熊猫棒棒”;③点赞该回复
    预期输出问题下方出现该回复,并且该回复的点赞量加一

    3 测试结果及分析

    3.1 测试环境

    该软件的测试环境为windows10的浏览器。

    3.2 测试用例执行

    (1) 测试登录操作

    1执行测试用例Asking_SignIn_001,运行结果如图1所示

    在这里插入图片描述
    ​ 图1
    在这里插入图片描述

    图2
    在这里插入图片描述

    图3

    结果分析:实际运行结果与该测试用例预期输出一致,测试通过。

    2执行测试用例Asking_SignIn_002,运行结果如图2所示

    结果分析:实际运行结果与该测试用例预期输出一致,测试通过。

    ③执行测试用例Asking_SignIn_003,运行结果如图3所示

    结果分析:实际运行结果与该测试用例预期输出一致,测试通过。

    (2) 测试创建问题操作

    1执行测试用例Asking_Create_001,运行结果如图4-1、4-2所示

    在这里插入图片描述

    图4-1
    在这里插入图片描述

    图4-2

    结果分析:实际运行结果与该测试用例预期输出一致,测试通过。

    2执行测试用例Asking_Create_002,运行结果如图5-1、5-2所示
    在这里插入图片描述

    图5-1
    在这里插入图片描述

    图5-2

    结果分析:实际运行结果与该测试用例预期输出一致,测试通过。

    (3) 测试删除问题操作

    1执行测试用例Asking_Delete_001,运行结果如图6-1、6-2所示
    在这里插入图片描述

    图6-1
    在这里插入图片描述

    图6-2

    结果分析:实际运行结果与该测试用例预期输出一致,测试通过。

    2执行测试用例Asking_Delete_002,运行结果如图7-1、7-2所示

    在这里插入图片描述

    图7-1
    在这里插入图片描述

    图7-2

    结果分析:实际运行结果与该测试用例预期输出一致,测试通过。

    (4) 测试回复问题操作

    1执行测试用例Asking_Answer_001,运行结果如图8所示

    结果分析:实际运行结果与该测试用例预期输出一致,测试通过。

    2执行测试用例Asking_Answer_002,运行结果如图9所示

    结果分析:实际运行结果与该测试用例预期输出一致,测试通过。

    在这里插入图片描述

    图8
    在这里插入图片描述

    图9

    3.3 结论及建议

    (1) 该软件实现了登录、创建问题、删除问题、回答问题等功能,基本满足测试标准,但仍需不断完善。

    (2) 建议:登录时应该收到一个token作为登录后操作的权限证明,这样可以实现不同设备不同人无法同时操作同一个账号。

    展开全文
  • 软件工程导论—软件测试

    万次阅读 多人点赞 2020-05-13 21:26:49
    1. 软件测试基础 2. 单元测试 3. 集成测试 4. 确认测试 5. 白盒测试技术 6. 黑盒测试技术 7. 调试 8. 软件可靠性

    1. 软件测试基础

    1.1. 软件测试的目的和准则

    测试是为了发现程序中的错误而执行程序的过程,好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案,成功的测试是发现了至今为止尚未发现的错误的测试。

    一般来说,软件测试有以下几条准则:

    1. 所有测试都应该能追溯到用户需求;
    2. 应该远在测试开始之前就制定出测试计划;
    3. 把Pareto原理应用到软件测试中;
    4. 应该从“小规模”测试开始,并逐步进行“大规模”测试;
    5. 穷举测试是不可能的;
    6. 为了达到最佳的测试效果,应该由独立的第三方从事测试工作。

    1.2. 软件测试方法和步骤

    软件测试方法主要分为黑盒测试和白盒测试:

    1. 黑盒测试(功能测试)
      把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程,而是在程序接口进行的测试;
    2. 白盒测试(结构测试)
      把程序看成装在一个透明的盒子里,测试者完全知道程序的结构和处理算法,按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。
    黑盒测试白盒测试
    优点适用于各阶段测试
    从产品功能角度测试
    容易入手生成测试数据
    可构成测试数据使特定程序部分得到测试
    有一定的充分性度量手段
    可获较多工具支持
    缺点某些代码得不到测试
    如果规格说明有误,则无法发现
    不易进行充分性测试
    通常不易生成测试数据
    无法对未实现规格说明的部分进行测试
    工作量大,通常只用于单元测试,有应用局限
    性质一种确认技术,回答"我们在构造一个正确的系统吗?"一种验证技术,回答"我们在正确地构造一个系统吗?"

    一般来说,测试的按照以下步骤进行:

    1. 模块测试(单元测试)
      模块测试主要发现的往往是编码和详细设计的错误,目的是保证每个模块作为一个单元能正确运行;
    2. 子系统测试
      子系统测试把经过单元测试的模块放在一起形成一个子系统来测试,着重测试模块的接口。
    3. 系统测试
      把经过测试的子系统装配成一个完整的系统来测试,发现的往往是软件设计中的错误,也可能发现需求说明中的错误。不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常也称为集成测试。
    4. 验收测试(确认测试)
      验收测试是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信息)把软件系统作为单一的实体进行测试进行测试,它发现的往往是系统需求说明书中的错误
    5. 平行运行
      同时运行新开发出来的系统和将被它取代的旧系统,然后比较新旧两个系统的处理结果。平行运行可以在准生产环境中运行新系统而又不冒风险,同时用户能有一段熟悉新系统的时间,用户可以趁这段时间验证用户指南和使用手册之类的文档。以准生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标。

    详细步骤说明如下表所示:

    测试阶段主要依据测试人员测试方法测试内容
    单元测试系统设计文档开发小组白盒测试接口测试
    路径测试
    子系统测试系统设计文档
    需求文档
    独立测试小组白盒测试
    黑盒测试
    接口测试
    路径测试
    功能测试
    性能测试
    系统测试需求文档独立测试小组黑盒测试功能测试、健壮性测试
    性能测试、用户界面测试
    安全性测试、压力测试
    可靠性测试、安装/卸载测试
    验收测试需求文档用户黑盒测试功能测试、健壮性测试
    性能测试、用户界面测试
    安全性测试、压力测试
    可靠性测试、安装/卸载测试

    1.3. 测试内容

    1. 接口测试
      每个接口可能有多个输入参数,每个参数有 “典型值”、“边界值”、“异常值”之分,根据接口的定义,可以推断某种输入应当产生什么样的输出。输出包括函数的返回值和输出参数。 同时要观察是否有程序语句从来没有被执行过,特别留意函数体内的错误处理程序块。
    2. 路径测试
      路径测试就是测试程序的流程路径,想遍历全部路径几乎是不可能的,不测试或者胡乱找几条路径测试却又不行,输入与对应的输出之间的路径是唯一的。由于接口测试时的输入要有代表性的,因此相应的路径也具有代表性,制定的路径测试检查表应该包括:数据类型、变量值、逻辑判断、循环、内存管理、文件I/O、错误处理。
    3. 功能测试
      功能测试的基本方法是构造一些合理输入(在需求范围之内),检查输出是否与期望相同。有两种比较好的测试方法:等价划分法和边界值分析法,等价划分是指把输入空间划分为几个“等价区间”,在每个“等价区间”中只需要测试一个典型值就可以了;边界值测试法是对等价划分法的补充。除了典型值外还要用边界值作为测试用例。
    4. 健壮性测试
      健壮性是指在异常情况下,软件能正常运行的能力。它有两层含义:(1)容错能力,容错性测试通常构造一些不合理的输入来引诱软件出错;(2)恢复能力,恢复测试重点考察系统能否重新运行、有无重要的数据丢失、是否毁坏了其它相关的软件硬件。
    5. 性能测试
      性能测试即测试软件处理事务的速度,一是为了检验性能是否符合需求,二是为了得到某些性能数据供人们参考,有时人们关心测试的“绝对值” ,有时关心测试的“相对值” 。
    6. 用户界面测试
      绝大多数软件拥有图形用户界面,图形用户界面的测试重点是正确性、易用性和视觉效果,在评价易用性和视觉效果时,主观性非常强,应当考虑多个人的观点。
    7. 信息安全测试
      信息安全性是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。主要有如下步骤:(1)为非法入侵设立目标、(2)邀请一些人扮演黑客,让他们想尽办法入侵系统,实现“目标”、(3)如果有人成功了,请他详述入侵的过程。
    8. 压力测试
      压力测试也叫负荷测试,即获取系统能正常运行的极限状态。 主要任务是:构造正确的输入,使劲折腾系统却让它刚好不瘫痪。 压力测试的一个变种是敏感测试,敏感测试目的是发现什么样的输入可能会引发不稳定现象。
    9. 可靠性测试
      可靠性是指在一定的环境下、给定的时间内、系统不发生故障的概率。软件可靠性测试可能会花费很长时间。 比较实用的办法是,让用户使用该系统,记录每一次发生故障的时刻。计算出相邻故障的时间间隔,注意要去掉非工作时间。然后统计出不发生故障的“最小时间间隔”、“最大时间间隔”和“平均时间间隔”。
    10. 安装/卸载测试
      目前市面上有非常流行的、专门制作安装/卸载程序的一些工具,如Install Shelled。主要的测试工作是:(1)至少在标准配置和最低配置两种环境下测试;(2)如果有安装界面,应当尝试各种选项,如选择“全部”、“部分”、“升级”等。

    1.4. 测试阶段的信息流

    测试阶段输入的信息有两类: 软件配置测试配置,其中软件配置包括需求说明书、设计说明书和源程序清单等,测试配置包括测试计划和测试方案。

    在这里插入图片描述

    2. 单元测试

    单元测试和编码属于软件过程的同一个阶段,它应用人工测试和计算机测试这样两种不同类型的测试方法对模块进行集中检测。单元测试主要使用白盒测试技术,对多个模块的测试可以并行地进行。

    人工测试的方法由审查小组进行,其主要使用白盒测试技术进行代码审查,审查的重点是模块接口、局部数据结构、重要的执行通路、出错处理通路和边界条件,一般来说可以查出30%~70%的逻辑设计错误和编码错误,这可以减少系统验证的总工作量。

    审查小组一般由一名审查组长,带领程序的设计人员、编码人员和测试人员共同进行。

    计算机测试的方法必须为每个单元测试开发驱动程序和(或)存根程序,驱动程序是一个“主程序”,它接收测试数据,传送给被测试的模块,并且输出有关的结果。

    存根程序代替被测试的模块所调用的模块。它使用被它代替的模块的接口,可能做最少量的数据操作,输出对入口的检验或操作结果,并且把控制归还给调用它的模块。

    3. 集成测试

    3.1. 集成测试概述

    集成测试是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题。

    由模块组装成程序时有两种方法:

    1. 非渐增式测试方法
      先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序。非渐增式测试一下子把所有模块放在一起,并把庞大的程序作为一个整体来测试,测试者面对的情况十分复杂,在庞大的程序中想要诊断定位一个错误是非常困难的,改正错误更是极端困难,而且一旦改正一个错误之后,马上又会遇到新的错误。
    2. 渐增式测试方法
      把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试,每次增加一个模块,实际上同时完成单元测试和集成测试。把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误;

    而渐增方式也有两种集成策略:自顶向下集成和自底向上集成,下面分别对它们进行介绍

    3.2. 自顶向下集成

    从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来,就是自顶向下的集成。
    在这里插入图片描述
    在把附属于主控制模块的那些模块组装到程序结构中去时,可以使用深度优先的策略或者使用宽度优先的策略。

    所谓深度优先,就是先组装在软件结构的一条主控制通路上的所有模块;宽度优先就是沿软件结构水平地移动,把处于同一个控制层次上的所有模块组装起来。

    在这里插入图片描述
    然后按照下述4个步骤完成把模块结合进软件结构的过程:

    1. 对主控制模块进行测试,测试时用存根程序代替所有直接附属于主控制模块的模块;
    2. 根据选定的结合策略(深度优先或宽度优先),每次用一个实际模块代换一个存根程序(新结合进来的模块往往又需要新的存根程序);
    3. 在结合进一个模块的同时进行测试;
    4. 为了保证加入模块没有引进新的错误,可能需要进行回归测试(即,全部或部分地重复以前做过的测试);
    5. 不断地重复2~4步,直到构造起完整的软件结构为止。

    自顶向下的测试能够在测试的早期对主要的控制或关键的抉择进行检验,如果选择深度优先的结合方法,可以在早期实现软件的一个完整的功能并且验证这个功能。但是由于存根程序代替了低层次的模块,在软件结构中没有重要的数据自下往上流。

    3.3. 自底向上集成

    在这里插入图片描述
    用下述步骤可以实现自底向上的结合策略:

    1. 把低层模块组合成实现某个特定的软件子功能的族;
    2. 写一个驱动程序(用于测试的控制程序),协调测试数据的输入和输出;
    3. 对由模块组成的子功能族进行测试;
    4. 去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族。
    5. 不断重复2~4步,直到构造起完整的软件结构为止。
      在这里插入图片描述

    3.4. 不同集成测试策略的比较与回归测试

    集成测试策略优点缺点
    非渐增式没有错误隔离手段
    主要设计错误发现迟
    潜在可重用代码测试不充分
    需要驱动程序和存根程序
    自顶向下具有错误隔离手段
    主要设计错误发现早
    不需要驱动程序
    潜在可重用代码测试不充分
    需要存根程序
    自底向上具有错误隔离手段
    潜在可重用代码能充分测试
    不需要存根程序
    主要设计错误发现迟
    需要驱动程序
    混合具有错误隔离手段
    主要设计错误发现早
    潜在可重用代码能充分测试
    较少

    所谓混合集成测试策略,主要有两种:

    1. 改进的自顶向下测试方法
      基本上使用自顶向下的测试方法,但是在早期使用自底向上的方法测试软件中的少数关键模块。该策略能在测试的早期发现关键模块中的错误;测试关键模块时需要驱动程序。
    2. 混合法
      对软件结构中较上层使用的自顶向下方法与对软件结构中较下层使用的自底向上方法相结合,该策略兼有两种方法的优缺点,当被测试的软件中关键模块比较多时,这种混合法可能是最好的折衷方法。

    每一轮集成测试后都要尽可能的进行回归测试,用于保证由于调试或其他原因引起的变化,不会导致非预期的软件行为或额外错误的测试活动,可以通过重新执行全部测试用例的一个子集人工地进行,也可以使用自动化的捕获回放工具自动进行。

    4. 确认测试

    4.1. 确认测试概述

    确认测试也称为验收测试,它的目标是验证软件的有效性(即软件的功能和性能是否符合用户预期)。

    需求分析阶段产生的软件需求规格说明书,准确地描述了用户对软件的合理预期,因此是软件有效性的标准,也是进行确认测试的基础。

    4.2. 确认测试的范围和软件配置复查

    确认测试必须有用户积极参与,或者以用户为主进行,使用用户界面输入测试数据并且分析评价测试的输出结果,在验收之前通常要由开发单位对用户进行培训,一般来说确认测试分为Alpha和Beta测试。

    确认测试的一个重要内容是复查软件配置。复查的目的是保证软件配置的所有成分都齐全,质量符合要求,文档与程序完全一致,具有完成软件维护所必须的细节。

    4.3. Alpha和Beta测试

    Alpha测试就是由开发者“指导”用户在开发环境下进行的测试。Alpha测试是在受控的环境中进行的。

    Beta测试就是由软件的最终用户们在一个或多个实际生产环境下进行的测试。开发者通常不在Beta测试的现场,因此,Beta测试是软件在开发者不能控制的环境中的“真实”应用。

    5. 白盒测试技术

    5.1. 白盒测试技术概述

    白盒测试应包含完整的测试方案,所谓测试方案包括具体的测试目的(例如,预定要测试的具体功能),应该输入的测试数据和预期的结果。通常又把测试数据和预期的输出结果称为测试用例。
    在这里插入图片描述

    5.2. 逻辑覆盖

    有选择地执行程序中某些最有代表性的通路是对穷尽测试的惟一可行的替代办法。从覆盖源程序语句的详尽程度分析,大致有以下一些不同的覆盖标准:

    1. 语句覆盖
      选择足够多的测试数据,使被测程序中每个语句至少执行一次。语句覆盖对程序的逻辑覆盖很少。语句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值时的情况。语句覆盖是很弱的逻辑覆盖标准。
    2. 判定覆盖
      不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次。
    3. 条件覆盖
      不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。条件覆盖通常比判定覆盖强,因为它使每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。但也有反例,总之,判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。
    4. 判定/条件覆盖
      使得判定表达式中的每个条件都取到各种可能的值,每个判定表达式也都取到各种可能的结果。
    5. 条件组合覆盖
      要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。条件组合覆盖是前述几种覆盖标准中最强的。满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。但是,条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到,是从对程序路径的覆盖程度分析的逻辑覆盖标准。
    6. 点覆盖
      选取足够多的测试数据,使得程序执行路径至少经过流图的每个结点一次。由于流图的每个结点与一条或多条语句相对应,因此点覆盖标准和语句覆盖标准是相同的。
    7. 边覆盖
      选取足够多测试数据,使得程序执行路径至少经过流图中每条边一次。通常边覆盖和判定覆盖是一致的。
    8. 路径覆盖
      选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次。

    在这里插入图片描述

    5.3. 控制结构测试

    控制结果测试分为基本路径测试和循环测试,具体如下

    1. 基本路径测试
      基本路径测试是Tom McCabe提出的一种白盒测试技术。首先计算程序的环形复杂度,以该复杂度为指南定义执行路径的基本集合,从该基本集合导出的测试用例可保证程序中的每条语句至少执行一次,而且每个条件在执行时都将分别取真、假两种值。
    2. 循环测试
      循环测试是一种白盒测试技术,它专注于测试循环结构的有效性。在结构化的程序中通常只有3种循环,即简单循环、串接循环和嵌套循环。
      (1)简单循环
      应该使用下列测试集来测试简单循环,其中n是允许通过循环的最大次数:
      跳过循环、只通过循环一次、通过循环两次、通过循环m次,其中m<n-1、通过循环n-1,n,n+1次。
      (2)嵌套循环
      从最内层循环开始测试,其他循环都设置为最小值。对最内层循环使用简单循环测试方法,而使外层循环的迭代参数取最小值,并为越界值或非法值增加一些额外的测试。由内向外,对下一个循环进行测试,但保持所有其他外层循环为最小值,其他嵌套循环为“典型”值。然后继续进行下去,直到测试完所有循环。
      (3)串接循环
      如果串接循环的各个循环都彼此独立,则可以使用测试简单循环的方法来测试串接循环。如果两个循环串接,而且第一个循环的循环计数器值是第二个循环的初始值,则这两个循环并不是独立的。当循环不独立时,建议使用测试嵌套循环的方法来测试串接循环。

    在这里插入图片描述

    6. 黑盒测试技术

    6.1. 黑盒测试概述

    黑盒测试着重测试软件功能,主要的错误类型为: 功能不正确或遗漏了功能、界面错误、数据结构错误或外部数据库访问错误、性能错误、初始化和终止错误

    黑盒测试的公认标准主要有两个:(1)测试用例尽可能少;(2)一个测试用例能指出一类错误。

    6.2. 等价划分

    使用等价划分法设计测试方案首先需要划分输入数据的等价类,等价划分是一种黑盒测试技术,把程序的输入域划分成若干个数据类,据此导出测试用例。设计测试方案时尽量设计出能发现若干类错误的测试用例,从而减少测试用例的数目,每类中的一个典型值在测试中的作用要与这一类中所有其他值的作用相同。此外常常还需要分析输出数据的等价类,以便根据输出数据的等价类导出对应的输入数据等价类。

    等价类划分的启发式规则

    1. 如果规定了输入值的范围,则可划分出一个有效的等价类(输入值在此范围内),两个无效的等价类(输入值小于最小值或大于最大值);
    2. 如果规定了输入数据的个数,则类似地也可划分出一个有效的等价类和两个无效的等价类;
    3. 如果规定了输入数据的一组值,而且程序对不同输入值做不同处理,则每个允许的输入值是一个有效的等价类,此外还有一个无效的等价类(任一个不允许的输入值);
    4. 如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类(符合规则)和若干个无效的等价类(从各种不同角度违反规则);
    5. 如果规定了输入数据为整型,则可以划分出正整数、零和负整数等3个有效类;
    6. 如果程序的处理对象是表格,则应该使用空表,以及含一项或多项的表。

    使用等价划分法设计黑盒测试的方案时可以按照如下两个步骤进行:

    1. 设计一个新的测试方案以尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步骤直到所有有效等价类都被覆盖为止;
    2. 设计一个新的测试方案,使它覆盖一个而且只覆盖一个尚未被覆盖的无效等价类,重复这一步骤直到所有无效等价类都被覆盖为止。

    6.3. 边界值分析

    经验表明,处理边界情况时程序最容易发生错误。例如,许多程序错误出现在下标、纯量、数据结构和循环等等的边界附近。使用边界值分析方法设计测试方案首先应该确定边界情况。选取的测试数据应该刚好等于、刚刚小于和刚刚大于边界值。

    通常设计黑盒测试方案时总是联合使用等价划分和边界值分析两种技术。

    6.4. 错误推测

    不同类型不同特点的程序通常又有一些特殊的容易出错的情况。因此必须依靠测试人员的经验和直觉,从各种可能的测试方案中选出一些最可能引起程序出错的方案。它的基本想法是列举出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们选择测试方案。

    7. 调试

    7.1. 调试概述

    调试是在测试发现错误之后排除错误的过程,软件错误的外部表现和它的内在原因之间可能并没有明显的联系,调试就是把症状和原因联系起来的尚未被人深入认识的智力过程。

    7.2. 调试过程和途径

    调试发生在测试之后,调试过程从执行一个测试用例开始,评估测试结果,如果发现实际结果与预期结果不一致,则这种不一致就是一个症状,它表明在软件中存在着隐藏的问题。

    调试过程试图找出产生症状的原因,以便改正错误。
    在这里插入图片描述
    调试可以通过下列途径进行:

    1. 蛮干法
      蛮干法可能是寻找软件错误原因的最低效的方法。其他方法都失败时才使用这种方法,这种方法印出内存的内容,激活对运行过程的跟踪,在程序中到处都写上WRITE(输出)语句。更多情况下这种方法只会浪费时间和精力。必须首先进行周密的思考,有明确的目的,尽量减少无关信息的数量。
    2. 回溯法
      回溯是一种相当常用的调试方法,当调试小程序时这种方法是有效的。具体做法是,从发现症状的地方开始,人工沿程序的控制流往回追踪分析源程序代码,直到找出错误原因为止。但是随着程序规模扩大,应该回溯的路径数目也变得越来越大,以至彻底回溯大程序变成完全不可能了。
    3. 原因排除法
      (1)对分查找法
      如果已经知道每个变量在程序内若干个关键点的正确值,则可以用赋值语句或输入语句在程序中点附近“注入”这些变量的正确值,然后运行程序并检查所得到的输出,如果输出结果是正确的,则错误原因在程序前半部分;反之,错误原因在程序后半部分,对错误原因所在的那部分重复使用这个方法,直到把出错范围缩小到容易诊断的程度为止。
      (2)归纳法
      归纳法是从个别现象推断出一般性结论的思维方法。首先把和错误有关的数据组织起来进行分析,以便发现可能的错误原因,然后导出对错误原因的一个或多个假设,并利用已有的数据来证明或排除这些假设。
      (3)演绎法
      演绎法从一般原理或前提出发,经过排除和精化的过程推导出结论。首先设想出所有可能的出错原因,然后试图用测试来排除每一个假设的原因。

    8. 软件可靠性

    8.1. 软件可靠性相关的几个概念

    软件可靠性:程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。

    软件的可用性:程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。

    稳态可用性(Ass):如果在一段时间内,软件系统故障停机时间分别为 t d o w n 1 t_{down1} tdown1 t d o w n 2 t_{down2} tdown2,…,正常运行时间分别为 t u p 1 t_{up1} tup1 t u p 2 t_{up2} tup2,…,则系统的稳态可用性为:

    A s s = T u p T u p + T d o w n Ass=\frac{T_{up}}{T_{up}+T_{down}} Ass=Tup+TdownTup

    其中 T u p = ∑ t u p i T_up=\sum t_{upi} Tup=tupi T d o w n = ∑ t d o w n i T_down=\sum t_{downi} Tdown=tdowni

    平均维修时间(MTTR):是修复一个故障平均需要用的时间,它取决于维护人员的技术水平和对系统的熟悉程度,也和系统的可维护性有重要关系。

    平均无故障时间(MTTF):是系统按规格说明书规定成功地运行的平均时间,它主要取决于系统中潜伏的错误的数目,因此和测试的关系十分密切。稳态可用性也可以表示为:

    A s s = M T T F M T T F + M T T R Ass=\frac{MTTF}{MTTF+MTTR} Ass=MTTF+MTTRMTTF

    8.2. 估算平均无故障时间的方法

    1、相关量的符号
    E T ET ET——测试之前程序中错误总数;
    I T IT IT——程序长度(机器指令总数);
    τ \tau τ——测试(包括调试)时间;
    E d ( τ ) E_d(\tau) Ed(τ)——在 0 0 0 τ \tau τ期间发现的错误数;
    E c ( τ ) E_c(\tau) Ec(τ)——在 0 0 0 τ \tau τ期间改正的错误数。

    2、基本假定
    在类似的程序中,单位长度里的错误数 E T I T \frac{ET}{IT} ITET近似为常数。通常: 0.5 × 1 0 − 2 ⩽ E T I T ⩽ 2 × 1 0 − 2 0.5×10^{-2} \leqslant \frac{ET}{IT} \leqslant 2×10^{-2} 0.5×102ITET2×102

    失效率正比于软件中剩余的错误数,而平均无故障时间MTTF与剩余的错误数成反比。

    假设发现的每一个错误都立即正确地改正了,则 E d ( τ ) = E c ( τ ) E_d(\tau)=E_c(\tau) Ed(τ)Ec(τ),剩余的错误数为 E r ( τ ) = E T - E c ( τ ) E_r(\tau)=ET-E_c(\tau) Er(τ)ETEc(τ),单位长度程序中剩余的错误数为: e r ( τ ) = E T I T - E c ( τ ) I T er(\tau)=\frac{ET}{IT}-\frac{E_c(\tau)}{IT} er(τ)ITETITEc(τ)

    3、估算平均无故障时间
    经验表明,平均无故障时间与单位长度程序中剩余的错误数成反比,即: M T T F = 1 K ( E T I T − E c ( τ ) I T ) MTTF=\frac{1}{K(\frac{ET}{IT}-\frac{E_c(\tau)}{IT})} MTTFK(ITETITEc(τ))1其中K为常数,典型值是200。

    估算平均无故障时间的公式,可以评价软件测试的进展情况,其公式为 E c = E T - I T K × M T T F Ec=ET-\frac{IT}{K×MTTF} EcETK×MTTFIT

    因此,也可以根据对软件平均无故障时间的要求,估计需要改正多少个错误之后,测试工作才能结束。

    4、估计错误总数的方法
    程序中的错误总数 E T ET ET与程序规模、类型、开发环境、开发方法论、开发人员的技术水平和管理水平等都有密切关系。

    估计ET的两个方法:

    1. 植入错误法
      在测试之前由专人在程序中随机地植入一些错误。测试之后,根据测试小组发现的错误中原有的和植入的两种错误的比例,来估计程序中原有错误的总数 E T ET ET
      假设人为地植入的错误数为 N s N_s Ns,经过一段时间的测试之后发现 n s n_s ns个植入的错误,此外还发现了 n n n个原有的错误。如果可以认为测试方案发现植入错误和发现原有错误的能力相同,则能够估计出程序中原有错误的总数为: N = n / n s × N s N=n/n_s×N_s N=n/ns×Ns
      在这里插入图片描述
    2. 分别测试法
      植入错误法的基本假定是所用的测试方案发现植入错误和发现原有错误的概率相同,这个基本假定可能有时和事实不完全一致。如果有办法随机地把程序中一部分原有的错误加上标记,然后根据测试过程中发现的有标记错误和无标记错误的比例,估计程序中的错误总数,那就可以做分别测试。
      分别测试法使用两个测试员(小组),彼此独立地测试同一个程序的两个副本,把其中一个测试员发现的错误作为有标记的错误。
      τ \tau τ表示测试时间,设:
      τ = 0 \tau=0 τ=0 时错误总数为 B 0 B_0 B0
      τ = τ 1 \tau=\tau 1 τ=τ1时测试员甲发现的错误数为 B 1 B_1 B1,测试员乙发现的错误数为 B 2 B_2 B2,两个测试员发现的相同错误数为 b c bc bc
      如果认为测试员甲发现的错误是有标记的,即程序中有标记的错误总数为 B 1 B_1 B1,则测试员乙发现的 B 2 B_2 B2个错误中有 b c bc bc个是有标记的。假定测试员乙发现有标记错误和发现无标记错误的概率相同,则错误总数为 B 0 = B 2 b c × B 1 B_0=\frac{B_2}{bc}×B_1 B0=bcB2×B1
      在这里插入图片描述
    展开全文
  • 软件工程软件测试

    千次阅读 2021-10-27 20:37:15
    软件工程软件测试
  • 软件测试工程师的人大多数都不是很清楚软件测试工程师这个岗位到底是做什么的?其实我的想法是执行用例,找缺陷,仅此而已,简单粗暴。后来,看了《Google的软件测试之道》这本书,稍微有点更改,变成了积极主动地...
  • 一、实验目的 掌握结构化分析与设计方法 掌握JUnit的用法; 掌握白盒测试中路径覆盖的测试用例设计; 掌握黑盒测试中等价类方法; 二、实验内容 1. 某证券公司为了方便提供证券交易服务,欲...
  • 详谈软件工程软件测试与维护

    千次阅读 2019-09-27 11:53:23
    本博客讲的是软件工程中的最后一个环节:软件测试与维护。主要从两方面进行说明,即软件测试方法和软件调试.
  • 什么软件测试

    千次阅读 2022-08-03 11:01:44
    综上所述,软件测试目的可以概括如下:软件测试是想以最少的人力、物力和时间找出软件潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的...
  • 软件测试工程师笔试题,试卷内包含分数
  • 描述软件测试一共有哪几种类型软件测试是指使用人工或者自动的手段来运行或测定某个软件产品系统的过程,其目的是在于检验是否满足规定的需求或者弄清预期的结果与实际结果的区别,本文主要描述一下软件测试一共有哪...
  • 软件测试的定义、目的及原则

    千次阅读 2019-11-12 21:15:07
    随着软件工程化越来越被重视以及软件规模的不断扩大,软件分析、设计的作用越来越突出,而实践,越来越多的错误是刚开始的分析与设计阶段就已经存在,所以对于软件需求和设计阶段的测试就显...
  • 软件测试的意义究竟是什么

    千次阅读 2020-09-19 16:20:22
    为了更好的理解软件测试目的,首先我们来说一下什么软件测试: 用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求 。 软件测试就是软件投入运行前,对软件需求分析、设计规格说明和编码的最终...
  • 软件测试工程师必备的27个基础技能

    千次阅读 2022-04-25 14:27:22
    混迹于软件测试这么长时间了,一直想写一篇关于软件测试的经验分享的文章,但苦于工作原因迟迟未下笔。最近终于有了些闲余时间,遂决定把自己的心路历程及所感所想记录下来,与各位同行共勉。
  • 1.什么软件测试? 它其实就是为了满足用户的需求 IEEE软件工程标准术语:就是人工或者自动手段来运行或者测试某个系统的过程,其目的就在于检验它是否满足规定的需求或弄清预期结果和实际结果之间的差别。 2....
  • 软件测试是互联网技术一门重要的学科,它是软件生命周期不可或缺的一个环节,担负着把控、监督软件的质量的重任.....
  • 软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux操作...
  • 有很多想入坑软件测试这个行业的朋友,那么你知道测试用例吗?测试用例测试是必不可少的那么什么是测试用例呢?测试用例又应该如何设计呢?这边文章主要给大家介绍测试用例,以及测试用例的设计方法! 需要面试...
  • 软件工程:编码和测试

    千次阅读 2020-10-27 11:11:07
    模块测试(单元测试)模块测试目的是保证每个模块作为一个单元能正确运行。这个测试步骤所发现的往往是编码和详细设计的错误。...这个测试步骤发现的往往是软件设计的错误,也可能发现需求说明的错误。验收
  • 一、80%的软件缺陷,集聚在软件20%的模块 出色的测试人员会根据这个原则快速发现更多的缺陷(这个原则可以解释你的一个烦恼:为什么你经过几天的努力测试,没有发现任何缺陷;你老大慢慢走过来,随便点,新鲜发布三...
  • 1.软件测试目的 软件测试是以发现软件的存在的故障或缺陷,并藉此对软件的质量进行度量。为达此目的,测试活动的目标是最大可能的找出最多的错误。 测试是从假定软 件含有缺陷和故障的假设而进行的,实现这个...
  • 软件测试工作的基本流程是什么

    千次阅读 多人点赞 2022-03-27 16:58:57
    紧接着就是在测试过程占很大一部分比重得测试用例执行过程 最后已达到准出要求的根据测试情况写测试报告,对整个测试过程和版本的质量做一个评估 首先,作为测试人员需要学习并了解业务,分析需求点 为什么...
  • 二:那么选择软件测试行业有什么优势呢? 三:再来说说大家最关心的——软件测试人员的薪资怎么样? 四:软件测试选择自学还是培训? 五:再给大家分享一个软件测试的学习路线,便于大家更好更快地走上软件测试的...
  • 1、软件测试目的是尽可能多的找出软件的缺陷。(Y) 2、Beta测试是验收测试的一种。(Y) 3、验收测试是由最终用户来实施的。(N) 4、项目立项前测试人员不需要提交任何工件。(Y) 5、单元测试能发现约80%的...
  • 软件工程--概述

    千次阅读 多人点赞 2020-11-11 21:04:38
    软件的概念及特点 ...软件的开发以人工开发为主,不仅成本高、风险高,还受到社会因素的影响,生产过程软件开发与硬件流水线式开发不同。 特点 是逻辑实体 依赖硬件 手工开发为主 成本高、风险高 涉
  • 软件测试目的 软件测试的原则 软件测试的方法有哪些? 测试过程的4个步骤 调试技术 软件测试与开发个阶段的关系 软件测试目的 是程序编完之后必须要做的一件事 为了发现错误而执行程序的过程 软件...
  • 软件工程测试

    千次阅读 多人点赞 2020-07-07 10:48:57
    初识软件工程 软件工程方法是( )。 为了获得高质量软件而实施的一系列活动 为开发软件提供技术上的解决方法 为支持软件开发、维护、管理而研制的计算机程序系统 为了理解问题和确定需求而采取的一些技术和...
  • 软件工程-软件测试和系统运维

    千次阅读 2021-06-05 21:28:52
    一、软件测试概念和目标 概念:为了发现错误而执行程序的过程 目标(《软件测试的艺术》) 是为了发现错误而执行程序的过程 好的测试方案能够发现迄今为止尚未发现的错误 成功的测试将发现至今尚未发现的错误 二、...
  • 软件测试与软件质量关系的概述

    千次阅读 2021-07-23 05:16:28
    软件测试与软件质量关系的概述 论文软件测试与软件质量关系的概述摘要:软件测试和软件质量的概念是分不开的。测试是手段,质量是目的软件测试能够提高软件质量,但是软件测试和软件质量保证二者之间既存在包含又存...
  • 软件测试工程师--面试题

    千次阅读 2021-05-11 18:24:55
    测试用例的通过数,测试用例的未通过数,以及测试用例的通过率,未通过的功能都集中哪几个功能模块 ,根据测试经验以及测试结果进行一个缺陷的分析和建议。 2、举例说明使用selenium框架所遇到的异常 NoSuch ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 145,348
精华内容 58,139
热门标签
关键字:

在软件工程中软件测试的目的是什么