66、软件测试与万维网:原理、技术与发展

软件测试与万维网:原理、技术与发展

1. 软件测试概述

软件测试是确保软件质量的关键环节,但不能将其作为保证软件质量的唯一手段。软件开发活动的复杂性决定了每个开发阶段都至关重要,仅仅依靠严格测试无法挽救劣质产品。软件测试领域有众多术语和技术,可根据技术类型(结构或功能)或应用领域进行分类。

1.1 软件开发生命周期中的测试

软件开发生命周期中采用不同的测试策略,反映了特定阶段的测试重点。
- 单元测试 :测试系统中最小的软件单元,通常是可独立编译的组件,如模块或类。这常是后续结构和功能测试技术的重点。
- 集成测试 :将各个模块或组件组合成完整系统,确保它们能正确通信且无不良集体行为。集成测试有多种策略:
- 自顶向下 :先构建系统的顶层外壳,再逐步集成底层模块。在底层模块集成前,用存根(stubs)代替,存根与底层模块接口相同但功能有限,随着集成过程推进,存根会被真实模块替换。
- 自底向上 :与自顶向下相反,先集成底层模块,再向上构建系统外层。此策略需构建驱动程序(drivers),驱动程序代替调用模块,功能不完整,同样会在集成过程中被真实模块替换。
- 三明治 :结合自顶向下和自底向上策略的“由外而内”方法。
- 大爆炸 :一次性集成所有模块,仅适用于模块数量少的系统。
- 构建式 :根据功能线程集成模块,即实现同一需求的模块组合在一起进行测试,一个模块可能因参与多个需求而被多次集成。

集成测试策略 特点
自顶向下 先顶层后底层,用存根
自底向上 先底层后顶层,用驱动
三明治 结合两者
大爆炸 一次性集成
构建式 按功能线程集成
graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;

    A([开始]):::startend --> B(自顶向下):::process
    A --> C(自底向上):::process
    A --> D(三明治):::process
    A --> E(大爆炸):::process
    A --> F(构建式):::process
    B --> G(集成完成):::process
    C --> G
    D --> G
    E --> G
    F --> G
    G --> H([结束]):::startend
  • 系统测试 :旨在验证系统功能是否到位,常基于系统的高层设计。系统测试还会分析系统的其他属性,采用的技术包括:
    • 性能测试 :考察系统在不同负载和操作条件下有效处理需求的能力,如关注系统响应时间。
    • 压力测试 :通过短时间过载,确定系统在高需求时期的处理能力。
    • 容量测试 :让系统在最大容量下持续运行。
    • 配置测试 :在不同目标平台和环境中执行系统。
  • 验收测试 :最高级别的测试,用于确定产品是否能被客户接受,通常基于系统需求,且常涉及用户。若产品面向大众市场,还会进行α测试和β测试:
    • α测试 :邀请“典型”客户在开发方场地试用产品,开发方观察客户使用方式并记录问题。
    • β测试 :通常在α测试后进行,将产品提供给一些典型客户,让他们在自己的环境中使用,然后向开发方报告问题。
  • 回归测试 :在软件更改后重新测试,确保更改正确且未引入不良副作用。回归测试的难点在于确定更改的范围。

1.2 结构测试技术

结构测试技术基于被测试软件的内部结构,也称为白盒或玻璃盒测试,有时也被称为充分性准则。
- 语句测试/覆盖 :要求软件中的每个语句都被执行。
- 分支测试/覆盖 :要求软件中每个分支的真假结果都被执行。
- 多条件覆盖 :要求测试复合条件中所有子条件结果的组合。例如,对于复合条件 ((a == b) and (x < y)) ,需要进行四次测试。
- 变异测试 :通过故意向系统引入小故障(如操作符、变量或常量的更改),然后测量测试数据能检测到多少故障,来确定测试数据的有效性。
- 数据流测试 :基于程序中变量数据的操作方式,关注变量的定义和使用,旨在测试所有可能的定义 - 使用对。
- 基于状态的测试 :专注于识别模块内所有可能的不同状态,常用于测试单个对象或实现状态机的系统。

1.3 功能测试技术

功能测试技术忽略软件的构建方式,基于软件的规格说明或其他外部描述生成测试数据,常被称为黑盒技术。
- 等价划分 :从规格说明中识别输入数据类,假设同一划分内的数据处理方式相同,每个划分选一个测试用例,同时也建议选择划分外的数据。还应考虑输出域的划分。
- 边界值分析 :在确定等价划分后,选择划分边界的数据,因为边界处更可能出现错误,数据值应尽量接近边界两侧。
- 因果图 :通过布尔图定义程序输入和输出的关系,类似于电路,然后将图转换为决策表,每个表项代表一种输入组合及其对应输出。
- 类别 - 划分测试 :结合等价划分、边界值分析和因果图的元素,识别每个“功能”的参数及其“类别”和“选择”,确定选择之间的约束,最后生成允许的选择组合作为测试用例。

2. 万维网概述

万维网(World Wide Web,WWW)是互联网面向公众的一面,它极大地推动了互联网的普及,也是电子商务领域的重要支撑技术。其目标是让存储在不同格式中的信息,能通过计算机网络,在各种硬件制造商生产的设备上可用,并且信息能以适合接收者的形式呈现。

2.1 万维网的历史

万维网内容由创建网页并将其挂载在Web服务器上的用户贡献,而其架构背后的理念主要归功于蒂姆·伯纳斯 - 李(Tim Berners - Lee)。
- 1980年,伯纳斯 - 李在欧洲核子研究组织(CERN)担任软件顾问时,编写了名为Enquire的程序,用于跟踪CERN的软件信息。该程序的信息存储在页面上,页面通过双向链接连接,可通过链接浏览信息,但它运行在独立计算机上,未利用网络链接。
- 后来,伯纳斯 - 李意识到需要一个能在网络环境中跨平台运行的类似系统,他于1989年提交了项目提案,1990年开始开发“万维网”系统。
- 1991年5月,万维网在CERN全面发布,8月在互联网上公开可用。
- 1993年2月,NCSA的马克·安德森(Marc Andreessen)发布了Mosaic浏览器的α版本,最初仅适用于Unix操作系统,到9月已有适用于微软Windows和苹果Macintosh的版本可供下载,这一程序推动了万维网的普及。
- 1994年5月举办了第一届国际万维网会议,同年12月万维网联盟(W3C)成立,伯纳斯 - 李担任其主任,至今W3C仍在协调万维网新标准的开发。

自1994年以来,万维网发展迅速,如今查看网页内容的软件通常随计算机免费提供,发布网页的软件也容易获取,万维网已成为众多商业公司的广告和直销平台,推动了电子商务的发展。

2.2 万维网的工作原理

万维网建立在互联网软件提供的基础之上,创建万维网所需的额外软件分为服务器和浏览器两类。

2.2.1 服务器

在万维网中,任意数量的计算机可运行服务器软件,这些服务器可访问要提供给用户的信息。服务器软件通常在服务器机器上永久运行,其作用是监听信息请求,收到请求后从可用资源中收集信息并发送给请求者。

服务器通过网络端口接收消息,Web服务器常用端口80(也可使用其他端口)。网站所有者通常会为其机器注册别名,方便用户请求网页,这些别名常以“www”开头。常见的Web服务器软件如Apache和微软的Internet Information Server(IIS),可从互联网免费下载或随操作系统捆绑提供,也有执行特定任务的专业Web服务器软件可供购买,大多数硬件/软件平台都有相应的Web服务器产品。

2.2.2 浏览器

浏览器运行在客户端机器上,用于向服务器请求信息,并在信息到达后将其呈现给用户。浏览器的最初概念并非局限于具有图形用户界面(GUI)的软件,它只是能从Web服务器请求信息并以适合接收者的方式呈现信息的软件产品。

最初的浏览器由蒂姆·伯纳斯 - 李开发,基于NeXT平台,具有GUI界面,同时也开发了纯文本浏览器。W3C通过Web可访问性倡议关注特殊用户的浏览器需求。早期常见浏览器未实现创建网页内容的功能,但后来部分浏览器增加了页面编辑功能。常见的浏览器有微软的Internet Explorer和Netscape Communication的Communicator,还有适用于无图形输出计算机终端的浏览器(如Lynx)以及手持计算机浏览器。

浏览器请求信息有两种方式:
- 用户明确请求特定Web服务器上的特定信息。
- 用户请求已获取信息中引用的其他信息,这种方式利用了超文本链接。超文本是指文档中包含指向相关文档的链接,点击链接可访问扩展相关问题的文档。

软件类型 功能 常见产品
服务器软件 监听信息请求,收集并发送信息 Apache、Internet Information Server(IIS)
浏览器软件 请求信息并呈现给用户 Internet Explorer、Communicator、Lynx
graph LR
    classDef startend fill:#F5EBFF,stroke:#BE8FED,stroke-width:2px;
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;

    A([用户]):::startend --> B(浏览器):::process
    B --> C(请求信息):::process
    C --> D(Web服务器):::process
    D --> E(收集信息):::process
    E --> F(发送信息):::process
    F --> B
    B --> G(呈现信息给用户):::process
    G --> A

综上所述,软件测试和万维网在软件开发和互联网领域都具有重要地位。软件测试通过多种策略和技术确保软件质量,而万维网则通过服务器和浏览器的协同工作,为全球用户提供了便捷的信息共享和交互平台。随着技术的不断发展,软件测试和万维网也将不断演进,为人们带来更好的软件体验和信息服务。

复杂几何的多球近似MATLAB类及多球模型的比较 MATLAB类Approxi提供了一个框架,用于使用具有迭代缩放的聚集球体模型来近似解剖体积模型,以适应目标体积和模型比较。专为骨科、生物力学和计算几何应用而开发。 MATLAB class for multi-sphere approximation of complex geometries and comparison of multi-sphere models 主要特点: 球体模型生成 1.多球体模型生成:Sihaeri的聚集球体算法的接口 2.音量缩放 基于体素的球体模型和参考几何体的交集。 迭代缩放球体模型以匹配目标体积。 3.模型比较:不同模型体素占用率的频率分析(多个评分指标) 4.几何分析:原始曲面模型和球体模型之间的顶点到最近邻距离映射(带颜色编码结果)。 如何使用: 1.代码结构:Approxi类可以集成到相应的主脚本中。代码的关键部分被提取到单独的函数中以供重用。 2.导入:将STL(或网格)导入MATLAB,并确保所需的函数,如DEM clusteredSphere(populateSpheres)和inpolyhedron,已添加到MATLAB路径中 3.生成多球体模型:使用DEM clusteredSphere方法从输入网格创建多球体模型 4.运行体积交点:计算多球体模型和参考几何体之间的基于体素的交点,并调整多球体模型以匹配目标体积 5.比较和可视化模型:比较多个多球体模型的体素频率,并计算多球体模型原始表面模型之间的距离,以进行2D/3D可视化 使用案例: 骨科和生物力学体积建模 复杂结构的多球模型形状近似 基于体素拟合度量的模型选择 基于距离的患者特定几何形状和近似值分析 优点: 复杂几何的多球体模型 可扩展模型(基于体素)-自动调整到目标体积 可视化就绪输出(距离图)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值