首页 > 编程语言 >测试优先编程思想

测试优先编程思想

时间:2024-03-25 16:31:09浏览次数:71  
标签:优先 testing 编程 程序 测试用例 测试 软件测试 software

Test-First Programming

什么是软件测试?

  • The process of checking the quality, functionality, and perfomance of a sofware product before launching. 1

  • The act of examing the artifacts and the behavior of the software under test by vertification and validation. 2

  • The process checks whether the actual software matches the expected requirements and ensures the software is bug-free.3

  • 软件测试是一项调查,旨在为利益相关者提供有关产品或服务质量的信息。

测试能提高软件正确率,但是不能使正确率达到100%!

软件测试的特征

软件测试的目的:破坏、证错、负能量。尽快的发现程序中的错误。

再好的测试也不能证明系统中没有错误。

优秀的测试:

  1. 能及时发现错误
  2. 简洁高效
  3. 最佳特性
  4. 既不简单也不复杂
    test

测试的层次

  • 单元测试:对软件的单元或组件进行测试,验证它们是否按照设计运作。
  • 集成测试:将多个小的单元一起测试,验证不同单元之间的交互是否故障。
  • 系统测试:对完整的集成系统进行测试,验证系统是否符合规定要求。
  • 验收测试:对系统的可接受性进行测试,验证系统是否符合业务要求,以及是否能够被验收。

测试方法

1. Static Testing & Dynamic Testing

  • 静态测试通常是隐式的,使用编程工具或文本编辑器检查代码结构、语法和数据流的静态分析。
  • 动态测试发生在程序运行时,通常在程序没有完全运行的过程中,检查部分组件。

测试通常用于发现错误,而Debug用于找出错误的根源。

2. White-Box Testing & Black-Box Testing

  • 白盒测试是对程序内部结构的测试。
  • 黑盒测试是对程序外在表现的测试。
序号黑盒测试白盒测试
1不关心内部代码结构关心内部代码结构
2又被成为数据驱动测试又被称为结构测试
3面向使用者、测试者、开发者面向测试者与开发者
4只能通过试错实现可以更好地测试数据域与内部边界
5一般用于集成测试和系统测试一般在单元测试阶段完成
6可以检测规范要求的缺失无法检测规范要求功能的缺失

软件测试的难点

  • 软件行为在离散输入空间中差异巨大:
    • 大多数正确,小部分出错
    • bug的出现不符合特定概率分布
  • 无统计规律可循。

测试用例

1. 什么是测试用例?

  • test case = test input + excution condition + expected result

  • 测试用例是对程序的一个提问,是为了验证程序是否满足某种特定需求的样板。

2. 什么是一个好的测试用例?

  • 最可能发现错误
  • 不重复、不冗余
  • 最有效
  • 既不简单也不复杂

3. 编写测试用例的方法

基于等价类划分编写测试用例:将函数的输入域划分为等价类,从等价类中导出测试用例。

假设:相似的输入将会展示相似的行为,因此从每个等价类中选择一个代表即可。从而大幅度减少测试用例的范围。

大量的错误发生在输入域的边界而非中央,边界分析方法是对等价类划分的补充。

  • 程序员经常犯大小差1的错误。
  • 某些边界值是特殊情况,需要特殊处理。
  • 程序的行为在某些边界处发生突变。

测试驱动开发(TDD)

  • Process:

    1. 写出程序的spec。

    2. 写出符合spec的测试用例。

    3. 写/改代码,执行测试。(重复第三步直到测试通过)。

  • 先写测试可以大幅度提高写代码的效率。

编码效率

  • 写测试用例可以加强对spec的理解。

代码覆盖度

概念:在测试中,源代码被测试的比例。

基本的覆盖率准则:

  • 函数覆盖率:程序中被调用函数的比例。
  • 语句覆盖率:程序中执行的语句的比例。
  • 分支覆盖率:程序中执行的分支语句的比例。
  • 条件覆盖率:程序中被取过真假值的布尔子表达式。

实际中,根据预先设定的覆盖度标准,逐步增加测试用例的数量,直到覆盖度达到标准。

自动测试&回归测试

1. 自动测试

意义:手工测试代价太高,使用自动化测试可以提高测试效率。

方法:使用自动化测试框架(Junit),自动调用函数、自动判定结果、自动计算覆盖度。

只是自动执行测试用例,而不是自动生成测试用例。
自动测试流程

2. 回归测试

  • 一旦程序被修改,重新执行以前的所有测试。

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

Reference


  1. Katalon (2023) What is software testing? definition, types, and Tools, katalon.com. Available at: https://katalon.com/resources-center/blog/software-testing (Accessed: 25 March 2024). ↩︎

  2. Software testing (2024a) Wikipedia. Available at: https://en.wikipedia.org/wiki/Software_testing (Accessed: 25 March 2024). ↩︎

  3. GfG (2024) What is software testing?, GeeksforGeeks. Available at: https://www.geeksforgeeks.org/software-testing-basics/ (Accessed: 25 March 2024). ↩︎

标签:优先,testing,编程,程序,测试用例,测试,软件测试,software
From: https://blog.csdn.net/m0_73435415/article/details/137017900

相关文章

  • CTS测试流程
     CTS测试条件和步骤:需要使用linux系统主机需要主机连接外网跑cts需要在本地有AndroidSDK环境,最好要对应Android大版本需要到https://source.android.google.cn/docs/compatibility/cts/downloads?hl=zh-cn下载对应测试套件。linux电脑应下载arm类别的测试套件(约4Gb)执行命令......
  • 第13篇:4线-2线优先编码器
    Q:上一篇我们实现的4线-2线普通编码器在实际应用中会存在一个问题:如果中有2个或2个以上的取值同时为1,输出编码会出现混乱。本篇我们再来学习设计4线-2线优先编码器解决这个问题。A:基本原理:规定操作先后顺序,即优先级别。4个输入的优先级别的高低次序依次为、、、。优先编码器允......
  • 基于 Python + Unitest + HwTestReport/BeautifulReport的UI自动化测试框架
    一、框架目录结构概览 二、框架执行流程简介 三、框架目录结构简介 四、测试报告示例 HwTestReport BeautifulReport         ......
  • 【学习】软件测试中,我们如何有效地跟踪和管理缺陷?
    在软件测试中,如何有效地跟踪和管理缺陷?别急,一起来看下小编今日带来的分享。1.缺陷报告建立一个缺陷报告系统,让用户和团队成员能够提交缺陷报告。确保缺陷报告中包括清晰的问题描述、重现步骤、预期结果和实际结果等信息。2.分类和优先级对缺陷进行分类和确定优先级。将缺陷......
  • 【学习】Web安全测试需要考虑哪些情形
    一、数据加密某些数据需要进行信息加密和过滤后才能在客户端和服务器之间进行传输,包括用户登录密码、信用卡信息等。例如,在登录某银行网站时,该网站必须支持SSL协议,通过浏览器访问该网站时,地址栏的http变成https,建立https连接。这相当于在HTTP与TCP之间增加了一层加密——SSL......
  • Dawwin首位人工智能编程师,未来又会怎么样?
    Darwinai是一家快速发展的视觉质量检测公司,为制造商提供端到端解决方案,以提高产品质量并提高生产效率。该公司的专利可解释人工智能(XAI)平台已被众多财富500强公司采用,可以轻松集成值得信赖的人工智能并提供可见的结果。该公司的技术基于滑铁卢大学多年的杰出奖学金,专注于先进制造......
  • java项目:基于springboot实现的MBTI性格测试系统(分前后端)
    一、项目介绍本项目是一套基于springboot实现的个人性格测试系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。项目都经过严格调试,确保可以运行!二、技术实现和开发环境使用技术......
  • 车载测试中常用的python框架
    在车载测试中,常用的Python框架包括RobotFramework、unittest、pytest等。具体如下:RobotFramework:这是一个通用的自动化测试框架,适用于验收测试和测试驱动的开发。它的特点是易于使用,并且可以在不同的平台上运行,如Windows、macOS和Linux。此外,RobotFramework还可以在.Net的Iro......
  • 最全面的C语言的运算符优先级
    C语言是一种广泛应用于系统编程和应用程序开发的高级编程语言。在C语言中,运算符优先级是非常重要的概念,它决定了表达式中各个运算符的执行顺序。本文将详细介绍C语言中各种运算符的优先级,帮助读者更好地理解和使用这些运算符。首先,我们需要了解C语言中运算符的分类。C语言......
  • 互联网编程必读-有效的现代C++
    本书介绍    掌握C++11和C++14不仅仅是熟悉它们引入的特性(例如,自动类型声明、移动语义、lambda表达式和并发支持)。挑战在于学会有效地使用这些特性—这样你的软件才是正确的、高效的、可维护的和可移植的。这就是这本实用书的用武之地。它描述了如何使用C++11和C++14......