HIT 软件构造期末复习二 软件测试与测试优先的编程

这篇具有很好参考价值的文章主要介绍了HIT 软件构造期末复习二 软件测试与测试优先的编程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.软件测试

首先需要明确一个关系,即设计者(工程师)与使用者(客户),在工程师实际开始软件设计时,需要先与使用者进行沟通交流,目的是根据使用者的需求开发出符合第一章中介绍的特性的高质量软件,如何判断我们的软件是符合需求的,最简单的办法就是检测(test),测试的前提是需要工程师和用户达成协议或者称之为规范specification,简称spec。

测试:提高软件质量的重要手段, 确认是否达到可用级别(用户需求),关注系统的某一侧面的质量特性。 即使是最好的测试,也无法达到100%的无错误,即再好的测试也无法证明系统里不存在错误。

**好的测试:**能发现大多数错误,不冗余, 最佳特性,别太复杂也别太简单。

测试的方法:
单元测试:指验证特定代码段的功能,通常在函数的水平。
集成测试:两个或多个测试的结合执行创建的类、包、组件、子系统多个程序员或编程团队。
系统测试:对一个完全集成的系统进行测试验证系统满足其执行的需求,软件的最终配置。
HIT 软件构造期末复习二 软件测试与测试优先的编程
静态测试通常是隐式的,比如校对,还有编程工具/文本编辑器检查源代码结构或编译器(预编译器)检查语法和数据流作为静态程序分析。

动态测试是对代码动态性能的测试,它实际执行带有给定集合的编程代码的测试用例。根据spec事先设计出案列,用代码去执行设计的案例,观察结果。

HIT 软件构造期末复习二 软件测试与测试优先的编程
测试与debug的区别:
测试:发现是否存在错误
调试:识别错误根源,消除错误

HIT 软件构造期末复习二 软件测试与测试优先的编程
高性能的软件设计需要经过:设计-测试-调试-修改-测试-调试-…反复循环

白盒测试:对程序内部代码结构的测试
黑盒测试:对程序外部表现出来的行为的测试,不需要知道程序内部结构,即只需要知道输入以及预期结果即可,给定输入集合,观察结果与预期结构是否符合

软件测试的要求:
力穷举不可取
然的测试没意义
于样本的统计数据对软件测试意义不大—软件与产品的巨大差异
转变心态,用“让其出错”和“尽快出错”作为写高质量代码的日常法宝,即尽快找到错误,尽快修改在测试

2.测试用例

一个测试用例包括:一组输入集合+执行条件+期望错误。
一个测试用例是为一个特定的目标开发的,例如练习一个特定的程序路径或验证遵从特定的要求。测试用例是质量保证的基石,开发用于验证产品的质量和行为。

**简单来说:**代码根据输入集合以及执行条件执行输入,给出输出,输出结果与期望结果进行比对,相同则测试通过。因此期望结果是预先已知或可以不依赖软件正确推导出的。

HIT 软件构造期末复习二 软件测试与测试优先的编程

3.测试优先的编程

测试优先
先写spec
再写符合spec的测试用例
写代码、执行测试、有问题再改、再执行测试用例,直到通过它

目的:没完成一个代码单元即可测试,无需全部写完在测试,能够迅速发现错误,避免小的错误不断积累导致无法修改Make it fail, fail it fast! 先写测试会节省大量的调试时间

HIT 软件构造期末复习二 软件测试与测试优先的编程

4. Unit Testing 单元测试

针对软件的最小单元模型开展测试,隔离各个模块,容易定位错误和调试 单独测试模块会使调试更容易。
-当模块的单元测试失败时,您可以更有信心
错误是在该模块中发现的,而不是在程序的任何地方

设计信息的审查为建立提供指导 可能发现错误的测试用例。
每个测试用例都应该是再加上一组预期的结果。

HIT 软件构造期末复习二 软件测试与测试优先的编程

5. JUnit 自动测试单元

JUnit是一个被广泛采用的Java单元测试框架。
JUnit单元测试是一个被标记了@Test. 的测试方法
单元测试方法通常包含一个或多个对模块,然后使用断言检查结果方法,如assertEquals, assertTrue和assertFalse。

HIT 软件构造期末复习二 软件测试与测试优先的编程
创建步骤:
右键NEW—class—junit test case
选择需要测试的方法
HIT 软件构造期末复习二 软件测试与测试优先的编程
案列:HIT 软件构造期末复习二 软件测试与测试优先的编程

6.黑盒测试

黑盒测试:用于检查代码的功能,不关心内部实现细节

黑盒测试试图找到以下类型的错误:
-功能不正确或缺失
-界面错误
-数据结构错误或外部数据库访问错误
-行为或性能错误
-初始化和终止错误
HIT 软件构造期末复习二 软件测试与测试优先的编程

黑盒测试的测试用例是围绕规范和构建的需求,即应用程序应该做什么,检查是否符合规约,用尽可能少的测试用例,尽快运行,并尽可能大的发现程序的错误

6.1 等价类划分

暴力+穷举的测试是不可取的,可以运用集合论的知识针对输入分组,每一组可由一个输入代表。

基于等价类划分的测试:将被测函数的输入域划分为等价类,从等价类中导出测试用例。针对每个输入数据需要满足的约束条件,划分等价类,每个等价类中的数据满足对称,传递,自反; 每个等价类代表着对输入约束加以满足/违反的有效/无效数据的集合

基于的假设:相似的输入,将会展示相似的行为。故可从每个等价类中选一个代表作为测试用例即可,从而可以降低测试用例数量

HIT 软件构造期末复习二 软件测试与测试优先的编程
划分案例:
HIT 软件构造期末复习二 软件测试与测试优先的编程
HIT 软件构造期末复习二 软件测试与测试优先的编程
需要考虑输入数据的特殊情况
考虑输入的上限:很大的数是否仍正确?

6.2 边界分析

:大量的错误发生在输入域的“边界”而非中央:

  • 0是正数和负数之间的边界
    -数值类型的最大值和最小值,如int和double
    -集合类型为空(空字符串,空列表,空数组)
    -集合的第一个和最后一个元素
    程序的行为在边界的地方可能发生“突变”
    程序员经常犯一些大小差1的错误

**边界值分析(BVA)**是一种测试方法技巧,导致对边界值的测试用例的选择。

边界值分析方法是对等价类划分方法的补充在等价类划分时,将边界作为等价类之一加入考虑

例如:
HIT 软件构造期末复习二 软件测试与测试优先的编程
HIT 软件构造期末复习二 软件测试与测试优先的编程

HIT 软件构造期末复习二 软件测试与测试优先的编程
HIT 软件构造期末复习二 软件测试与测试优先的编程

笛卡尔积:全覆盖
多个划分维度上的多个取值,要组合起来,每个组合有一个测试用例。

例如mas()中:a有5个维度 b有5个维度 a和b之间的关系有五个维度,因此有355=75组,即理论上可以选出75个测试用例,每个维度的每个取值至少被1个测试用例覆盖一次即可,但实际中小于或等于这个数量。
HIT 软件构造期末复习二 软件测试与测试优先的编程
HIT 软件构造期末复习二 软件测试与测试优先的编程

7.白盒测试

黑盒测试完全从函数spec导出测试用例,不考虑函数内部实现
白盒测试要考虑内部实现细节。如实现细节的算法根据输入不同而不同时,应该根据这些区域划分。根据程序执行路径设计测试用例
HIT 软件构造期末复习二 软件测试与测试优先的编程

▪使用白盒测试方法,你可以得到测试用例
—保证一个模块内的所有独立路径都已启用至少锻炼一次
-在正确和错误的方面进行所有合乎逻辑的决定,
-在它们的边界和操作范围内执行所有循环,
—确保内部数据结构的有效性。
**
独立/基本路径测试**:对程序所有执行路径进行等价类划分,找出有代表性的最简单的路径(例如循环只需执行1次),设计测试用例使每一条基本路径被至少覆盖1次。

8.代码覆盖度

代码覆盖度:已有的测试用例有多大程度覆盖了被测程序,描述测试的充分性,通常用百分比衡量覆盖度。 代码覆盖度越低,测试越不充分但要做到很高的代码覆盖度,需要更多的测试用例,测试代价高

函数覆盖:程序中的每个函数都被调用了吗?
语句覆盖:每个语句是否都通过一些测试用例运行?
分支覆盖率:用于每个if或while或开关箱或for语句在程序中,都是正确和错误的方向采取了一些测试案例?
条件覆盖:为每个条件在if/while/for/开关情况陈述,一些测试用例是否都是正确/错误的方向?
路径覆盖:每一个可能的分支组合-每一条路径通过程序-采取一些测试用例?

测试效果:路径覆盖>分支覆盖>语句覆盖
测试难度:路径覆盖>分支覆盖>语句覆盖

路径数量巨大,难以全覆盖
HIT 软件构造期末复习二 软件测试与测试优先的编程
实际当中,根据预先设定的覆盖度标准,逐步增加测试用例的数量,直到覆盖度达到标准(例如语句覆盖100%、路径覆盖90%)。

9.自动化测试和回归测试

手工测试的代价太高,最好达到完全的自动化
自动调用被测函数、自动判定测试结果、自动计算覆盖度

一个好的测试框架,比如JUnit,可以帮助构建自动化测试,可自动计算覆盖度。

只是“测试用例的自动执行”,并非“自动生成测试用例”

回归测试:一旦程序被修改,重新执行之前的所有测试

一旦发现bug,要马上写一个可重现该bug的测试用例,并将其加入测试库

10.记录您的测试策略

测试策略(根据什么来选择测试用例)非常重要,需要在程
序中显式记录下来

目的:在代码评审过程中,其他人可以理解你的测试,并评判你的测试是否足够充分

HIT 软件构造期末复习二 软件测试与测试优先的编程文章来源地址https://www.toymoban.com/news/detail-412493.html

到了这里,关于HIT 软件构造期末复习二 软件测试与测试优先的编程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【软件测试技术期末复习选择题】

    软件测试技术期末复习选择题 1.在软件测试阶段,测试步骤按次序可以划分为以下几步:( A ) A、单元测试、集成测试、系统测试、验收测试 B、验收测试、单元测试、系统测试、集成测试 C、单元测试、集成测试、验收测试、系统测试 D、系统测试、单元测试、集成测试、

    2023年04月09日
    浏览(36)
  • 软件测试方法和技术期末总复习

    为什么要进行软件测试? 简答:为了保证软件质量,减少不必要的损失。 大题: 软件的某些缺陷只有在测试时才会发现; 提供对系统质量相关信息; 发现缺陷越早更容易更正,预防错误的发生; 提高产品利润 提高企业国际竞争力 软件 =程序 + 数据 (库) + 文档 + 服务 软

    2024年02月09日
    浏览(36)
  • 【软件构造】黑盒测试与白盒测试

    按照 是否需要知道程序内部是如何实现 的,将测试分为 黑盒测试 与 白盒测试 。 需要知道程序内部是如何实现的—— 白盒测试 不需要知道程序内部是如何实现的—— 黑盒测试 白盒测试一般是 内部人员 即程序员进行测试 黑盒测试一般是 外部人员 如专门的测试人员和用户

    2023年04月15日
    浏览(36)
  • 【软件测试】测试用例优先级

    通过软件开发生命周期(SDLC)的软件测试过程,可以保证软件的质量。聪明的软件测试可以帮助提供一个更可靠和无缺陷的产品,满足业务需求和利益相关者的期望。这就是为什么它需要更多的时间和资源,因此,使这个过程非常昂贵的原因。由于产品进入测试阶段后所剩的

    2024年02月04日
    浏览(31)
  • 软件测试期末

    考原题就是爽 知识点整理 https://wenku.baidu.com/view/524c900f4b2fb4daa58da0116c175f0e7cd11913.html 关键知识点 https://www.cnblogs.com/whylaughing/category/813559.html?page=1 边界值法不选择无效数据 边界值分析法的基本思想 选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类

    2024年01月22日
    浏览(27)
  • 山东大学软件学院2021-2022软件测试期末试题

    1.系统缺陷 2.测试自动化 3.回归测试 4.系统测试 5.I18N 1.单元测试与代码调试的区别 2.简述比较集成测试的不同模式、不同方法 3.比较4种导向中的正向思维、逆向思维,并说明为什么这两种导向现今不再流行 4.ST、ET的优缺点比较 给出了一段程序。每一小问给了测试用例,问是

    2024年02月09日
    浏览(26)
  • 软件工程之软件测试(考试复习篇)

      理解软件危机,及其产生的原因。 软件危机:落后的软件生产技术难以满足增长的计算机需求。开发过程碰到的一系列问题。 产生原因:预算、速度、质量低、不能满足需求,混乱杂乱的,维护困难。 (2)软件测试定义: 为了发现错误。 (3)软件质量属性,ISO9126。 功

    2024年02月06日
    浏览(54)
  • 软件测试期末速成(背题家出列!)

    但行好事,莫问前程😺 刚学完,点赞者不挂科,双倍给下一个人😅【满足我的小vanity】 DLC ⭐ 下面关于软件测试的说法,错误的是( 软件测试就是要找出软件中所有的错误和缺陷 ) DLC ⭐ 修复缺陷的代价,以下哪个阶段最小( 需求分析 ) DLC ⭐ 1、在某公司人事系统中,

    2024年02月11日
    浏览(22)
  • 【JAVA杂货铺】一文带你走进面向对象编程|构造方法调用 | 代码块分类| 期末复习系列 | (中3)

    🌈个人主页:  Aileen_0v0 🔥系列专栏: Java学习系列专栏 💫个人格言:\\\" 没有罗马,那就自己创造罗马~\\\" 上次,我们学习了关于Java面向对象编程的 构造方法 ,以及 this 在构造方法/实例化对象中的使用,若有遗忘点击👉🔗 本节我们`来学习,代码块,tostring以及继承  那还等什么

    2024年02月04日
    浏览(43)
  • 山东大学软件学院2022软件测试技术期末试题回忆

    前言:本篇博客记录2022大三下软件测试技术期末试题。 复习资料:山东大学软件学院软件测试技术期末复习知识总结 一(15\\\') 1、软件缺陷 2、系统测试 3、回归测试 4、软件国际化 5、测试自动化 二(20\\\') 1、单元测试和代码调试 2、比较集成测试的不同模式,简述集成测试

    2024年02月09日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包