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

软件测试之兼容性测试

对于基于计算机平台的软件,在测试过程中必须考虑软、硬件的兼容性,在设计测试用例的过程中必须考虑数据转换或转移的问题,应该尽力发现其可能带来的错误。不仅是基于计算机平台的软件,对于嵌入式软件也一样,在软件升级时,也需要考虑硬件平台的兼容性。一个软件具有良好的兼容性,不仅可以降低技术支持的成本,还可以减少系统的维护版本,但不至于仅仅因为兼容性的问题而升级系统。

一、软件兼容
  软件兼容是指待发布软件与常用软件在同一环境下使用时,相互之间的影响。计算机中常用的软件有下载类软件、即时通信类软件、压缩解压类软件、文档编辑类软件、位图图像处理类软件、矢量图图像制作类软件、动画制作类软件、杀毒类软件、光盘刻录类软件、系统镜像类软件、多媒体播放软件和其他类软件。
  软件兼容主要考虑三个方面:浏览器兼容、分辨率兼容和打印机兼容。但对于嵌入式产品几乎不存在软件方面的兼容性问题,因为不可能和其他软件同时运行于当前的产品中。

1.1 浏览器兼容
  浏览器是Web 客户端最核心的构件,来自不同厂商的浏览器对Java、JavaScript、ActiveX、Plug-ins 或不同的HTML 规格有不同的支持。例如ActiveX 是Microsoft 的产品,是为Internet Explorer而设计的,JavaScript 是Netscape 的产品,Java 是Sun 的产品等。另外,框架和层次结构风格在不同的浏览器中也有不同的显示,甚至根本不显示。不同的浏览器对安全性和Java 的设置也不一样。
  测试浏览器兼容性的方法是创建一个兼容性矩阵。在这个矩阵中,测试不同厂商、不同版本的浏览器对某些构件和设置的适应性。

1.2 分辨率兼容
  分辨率兼容测试是为了验证页面版式、界面显示以及相关字符在不同的分辨率模式下显示的情况。
  通常情况下,在需求规格说明书中会明确地定义系统所支持的分辨率。但是客户计算机的分辨率多种多样,因此在测试过程中几乎不可能全部覆盖到所有的分辨率,并且在成本上也是一个很大的挑战,所以一定要完成需求规格说明书中定义的分辨率,并且一定要在说明书中注明系统所支持的最佳分辨率。常用的分辨率为1024×768、1440×900、1280×800 和1366×768,这是客户最可能使用的几种分辨率,系统一定要支持,其他的分辨率可以尽量兼容。有时为了降低风险,在启动系统时,系统会对当前的分辨率进行判断,如果当前的分辨率不是最佳分辨率,系统则会将分辨率强制转换为系统所支持的最佳分辨率。
  1.3 打印机兼容
  打印机兼容测试是指使用不同的打印机进行打印报告,观察打印出来的报告排版、内容是否正确。
  现在很多系统都具备打印报告的功能,由于客户使用的打印机型号各不相同,所以系统需要兼容各厂家的打印机型号,保证打印报告的内容没有问题。一般情况下需求规格说明书中会明确定义系统支持哪些型号的打印机,但是客户如果已经有打印机了,肯定不希望因为购买了我们的系统而另外再买一台打印机。客户希望系统能支持他们现有的打印机。一般测试打印机兼容需要注意两个问题:一是不同厂家的打印机型号;二是打印纸的规格。
  打印机型号兼容性方面,主要是兼容一些常用的打印机型号,由于不同型号的打印机对系统的字体兼容略有不同,所以有可能出现打印出乱码或打印内容丢失的现象。一般情况下需要规格说明书中详细定义兼容的打印机型号,但在系统设计过程中可以尽量考虑通过程序来做到更好的兼容,解决字体对打印结果的影响。
  打印纸规格兼容性方面,主要是对常用的B4 和B5 纸进行兼容,由于纸张的大小不一样,对于纸张的兼容更重要的是注意排版内容是否正确、合理。需要注意的是,如果系统销售到国外,必须测试对Letter 纸张类型的兼容,因为国外主要使用的是Letter 类型的纸张。
  1.4 数据库兼容
  数据库兼容性主要包含两种情况:一是主动地升级数据库,包括数据库平台的升级;二是被动地升级,由于原数据库本身的缺陷或用户需求的更改,不得不升级数据库。
  数据库兼容性测试要点如下:
  (1)完整性测试。
  检查原数据库中各种对象是否全部移入新数据库,比较数据表中数据内容是否与升级前数据库中的内容相同。
  (2)应用系统测试。
  模拟普通用户操作应用的过程,并结合其应用操作的运行结果进行检查,在数据库移植过程中,存储过程比较容易出错。
  (3)性能测试。
  数据库升级后,需要对升级后的数据库性能进行详细测试,并与升级前的数据库性能进行比较,检查数据库升级后性能变化的情况。
  1.5 操作系统兼容
  操作系统兼容性是指在一个操作系统上开发的应用程序,不做任何修改、不用重新编译即可直接在其他操作系统上运行。
  由于软件开发技术的限制以及各种操作系统之间存在着巨大的差异性,因此目前大多商业软件并不能达到理想的平台无关性。如果该软件承诺可以在多种操作系统上运行,那么就需要测试它与操作系统的兼容性。
  通常所说的操作系统测试,更多的是指在客户端的使用情况,即客户可能使用到的不同的操作系统平台。但对于一个多层次的系统,其兼容性不仅指客户端的使用,还包括服务器端兼容性,但服务器更换平台的情况相对较少,因此操作系统的兼容性更多是指客户使用的操作系统平台。操作系统兼容性的测试内容不仅包括安装,还需对关键流程进行检查。需要测试哪些操作系统上的兼容性,首先取决于软件用户文档上对用户的承诺。
  客户端使用到的操作系统更多的是Windows 操作系统,在测试过程中需要注意以下一些问题:
  (1)操作系统类型。
  常见的Windows 操作系统主要包括 Windows XP、Windows Vista、Windows 7 和Windows 8操作系统,但欧洲地区使用更多的是Windows 7 和Windows 8 操作系统,Windows XP 相当来说使用得比较少。
  (2)操作系统位数。
  操作系统主要包括32 位和64 位两种,但需要注意在国内主要使用的是32 位操作系统,欧洲地区主要使用的是64 位操作系统。所以在测试中文的操作系统时就没有必要测试64 位了,只要测试32 位即可,同理对于英文操作系统一般只要测试64 位操作即可。
  (3)操作系统补丁。
  由于操作系统补丁不同,可能对应用程序带来影响,最主要的是不同补丁带来的库函数的影响。
  1.6 数据共享兼容
  数据共享兼容是指系统与其他系统进行数据传输的能力。应用程序之间数据共享可以增强系统的可用性,并且用户可以轻松与其他系统进行数据共享、传输。数据共享兼容性测试需要注意以下
  几个方面:
  (1)是否支持文件保存和文件读取操作;
  (2)是否支持文件导入与导出操作;
  (3)是否支持剪切、复制和粘贴操作,剪切、复制和粘贴操作是程序之间无需借助磁盘传输数据的最常见的数据共享方式;
  (4)DDE(Dynamic Data Exchange,动态数据交换)和OLE(Object Linking Embedding,对象链接与嵌入)是Windows 操作系统中在两个程序之间传输数据的方式,DDE 和OLE 数据可以实时地在两个程序之间流动;
  (5)是否支持磁盘的读写。


 

相关文章:

软件测试之兼容性测试

对于基于计算机平台的软件,在测试过程中必须考虑软、硬件的兼容性,在设计测试用例的过程中必须考虑数据转换或转移的问题,应该尽力发现其可能带来的错误。不仅是基于计算机平台的软件,对于嵌入式软件也一样,在软件升级…...

笔记(一)——容器

容器分类:序列式容器:每个元素都有固定位置,取决于插入的时机和地点,和元素无关,如vector、deque、list、stack、queue。关联式容器:元素位置取决于特定的排序准则,和插入顺序无关,如…...

C++入门:命名空间

假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。同样的情况也出现在 C 应用程序中。例…...

操作系统(复试准备)

操作系统(复试准备) 第一章知识点 操作系统概述 操作系统的概念 负责协调软硬件等计算机资源的工作 为上层用户,应用程序提供简单易用的接口 是一种系统软件 操作系统的功能与目标 资源的管理者 处理机管理,存储器管理&#x…...

2023年CDGA考试模拟题库(501-600)

2023年CDGA考试模拟题库(501-600) 501.希望从数据中获取价值的组织认识到,高质量数据比低质量数据更有价值。使用劣质数据充满风险,会损害组织的声誉,导致罚款、收入损失、客户流失和负面的媒体曝光等组织基于各种业务驱动因素而着手进行数据质量管理活动,下列哪项不属于上述驱…...

NCNN+Int8+yolov5部署和量化

【GiantPandaCV引言】 还记得我在两个月前写的文章吗,关于yolov4-tiny+ncnn+int8量化的详细教程:NCNN+INT8+YOLOV4量化模型和实时推理 后来准备写yolov5+ncnn+int8量化的教程,却在yolov5的量化上遇到了麻烦,一方面是量化后速度更慢了,另一方面是精度下降严重,出现满屏都…...

springboot+vue.js协同过滤算法之智能旅游推荐系统java

目 录 第一章 绪论 3 1.1课题背景 3 1.2课题研究的目的和意义 3 1.3 研究现状 4 1.4论文所做的主要工作 4 第二章 技术介绍 5 2.1B/S结构 5 2.2MySQL 介绍 5 2.3MySQL环境配置 6 第三章 系统分析与设计 8 3.1系统说明 8 3.2系统可行性分析…...

Google Brain新提出的优化器“Lion”,效果要比Adam(W)更好

Google Brain新提出的优化器“Lion”,效果要比Adam(W)更好 论文地址:https://arxiv.org/abs/2302.06675代码地址:https://github.com/google/automl/blob/master/lion/lion_pytorch.py 1 简单、内存高效、运行速度更快 与 AdamW 和各种自适…...

慢雾:Discord 私信钓鱼手法分析

事件背景 5 月 16 日凌晨,当我在寻找家人的时候,从项目官网的邀请链接加入了官方的 Discord 服务器。在我加入服务器后立刻就有一个"机器人"(Captcha.bot)发来私信要我进行人机验证。这一切看起来相当的合理。我也点击了这个验证链接进行查看…...

2023-2-25 刷题情况

交换字符使得字符串相同 题目描述 有两个长度相同的字符串 s1 和 s2,且它们其中 只含有 字符 “x” 和 “y”,你需要通过「交换字符」的方式使这两个字符串相同。 每次「交换字符」的时候,你都可以在两个字符串中各选一个字符进行交换。 …...

【数据结构】双向链表的接口实现(附图解和源码)

双向链表的接口实现(附图解和源码) 文章目录双向链表的接口实现(附图解和源码)前言一、定义结构体二、接口实现(附图解源码)1.初始化双向链表2.开辟新空间3.尾插数据4.尾删数据5.打印双向链表中数据6.头插数…...

数据结构与算法之[把数字翻译成字符串]动态规划

前言:最近在刷动态规划的算法题目,感觉这一类题目还是有一点难度的,但是不放弃也还是能学好的,今天给大家分享的是牛客网中的编程题目[把数字翻译成字符串],这是一道经典的面试题目,快手,字节跳…...

java 面向对象三大特性之多态 万字详解(超详细)

目录 前言 : 一、为什么需要多态 : 1.白璧微瑕 : 2.举栗(请甘雨,刻晴,钟离吃饭): 3.代码 : 4.问题 : 二、什么是多态 : 1.定义 : 2.多态的实现步骤(重要) : 三、多态的使用 : 1.多态中成员方法的使用(重要…...

git push origin master 情况

📢📢📢📣📣📣哈喽!大家好,我是「奇点」,江湖人称 singularity。刚工作几年,想和大家一同进步🤝🤝一位上进心十足的【Java ToB端大厂领…...

ElasticSearch查询优化routing

如果一个索引分片多达一百,再加上每个分片数据量大的情况下ES查询速度会慢,这种情况可以根据业务情况考虑使用_routing优化。 _routing 路由 当索引一个文档的时候,文档会被存储在一个主分片上。在存储时一般都会有多个主分片。Elasticsearch 如何知道一个文档应该放置在哪…...

【HashMap 1.7和1.8】

Java中的HashMap是一种常用的数据结构,用于存储键值对。在Java 1.7和1.8中,HashMap的实现有一些不同。 Java 1.7中的HashMap实现是基于“拉链法”的哈希表。每个哈希桶(bucket)是一个链表,存储了散列值相同的键值对。当键值对数量过多时&…...

【Zabbix实战之故障处理篇】Zabbix监控中文乱码问题解决方法

【Zabbix实战之故障处理篇】Zabbix监控中文乱码问题解决方法 一、问题展现1.查看Zabbix仪表盘2.问题分析二、检查Zabbix环境1.检查Zabbix监控主机2.检查Zabbix各组件状态三、在宿主机安装中文字体库1.安装中文字体2.查看字体文件四、安装中文字库1.查看Zabbix所有组件容器2.拷贝…...

学习(mianshi)必备-ClickHouse高性能查询/写入和常见注意事项(五)

目录 一、ClickHouse高性能查询原因-稀疏索引 二、ClickHouse高性能写入-LSM-Tree存储结构 什么是LSM-Tree 三、ClickHouse的常见注意事项和异常问题排查 一、ClickHouse高性能查询原因-稀疏索引 密集索引: 在密集索引中,数据库中的每个键值都有一个索引记录&…...

在Kotlin中探索 Activity Results API 极简的解决方案

Activity Results APIActivity Result API提供了用于注册结果、启动结果以及在系统分派结果后对其进行处理的组件。—Google官方文档https://developer.android.google.cn/training/basics/intents/result?hlzh-cn一句话解释:官方Jetpack组件用于代替startActivity…...

样式冲突太多,记一次前端CSS升级

目前平台前端使用的是原生CSSBEM命名,在多人协作的模式下,容易出现样式冲突。为了减少这一类的问题,提升研效,我调研了业界上主流的7种CSS解决方案,并将最终升级方案落地到了工程中。 样式冲突的原因 目前遇到的样式…...

XCTF-web-easyupload

试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

CMake基础:构建流程详解

目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...

第八部分:阶段项目 6:构建 React 前端应用

现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...

webpack面试题

面试题:webpack介绍和简单使用 一、webpack(模块化打包工具)1. webpack是把项目当作一个整体,通过给定的一个主文件,webpack将从这个主文件开始找到你项目当中的所有依赖文件,使用loaders来处理它们&#x…...

Xcode 16 集成 cocoapods 报错

基于 Xcode 16 新建工程项目,集成 cocoapods 执行 pod init 报错 ### Error RuntimeError - PBXGroup attempted to initialize an object with unknown ISA PBXFileSystemSynchronizedRootGroup from attributes: {"isa">"PBXFileSystemSynchro…...

基于Uniapp的HarmonyOS 5.0体育应用开发攻略

一、技术架构设计 1.混合开发框架选型 (1)使用Uniapp 3.8版本支持ArkTS编译 (2)通过uni-harmony插件调用原生能力 (3)分层架构设计: graph TDA[UI层] -->|Vue语法| B(Uniapp框架)B --&g…...

Qt Quick Controls模块功能及架构

Qt Quick Controls是Qt Quick的一个附加模块,提供了一套用于构建完整用户界面的UI控件。在Qt 6.0中,这个模块经历了重大重构和改进。 一、主要功能和特点 1. 架构重构 完全重写了底层架构,与Qt Quick更紧密集成 移除了对Qt Widgets的依赖&…...

软件工程教学评价

王海林老师您好。 您的《软件工程》课程成功地将宏观的理论与具体的实践相结合。上半学期的理论教学中,您通过丰富的实例,将“高内聚低耦合”、SOLID原则等抽象概念解释得十分透彻,让这些理论不再是停留在纸面的名词,而是可以指导…...

【Redis】Redis 的持久化策略

目录 一、RDB 定期备份 1.2 触发方式 1.2.1 手动触发 1.2.2.1 自动触发 RDB 持久化机制的场景 1.2.2.2 检查是否触发 1.2.2.3 线上运维配置 1.3 检索工具 1.4 RDB 备份实现原理 1.5 禁用 RDB 快照 1.6 RDB 优缺点分析 二、AOF 实时备份 2.1 配置文件解析 2.2 开启…...

SeaweedFS S3 Spring Boot Starter

SeaweedFS S3 Spring Boot Starter 源码特性环境要求快速开始1. 添加依赖2. 配置文件3. 使用方式方式一:注入服务类方式二:使用工具类 API 文档SeaweedFsS3Service 主要方法SeaweedFsS3Util 工具类方法 配置参数运行测试构建项目注意事项集成应用更多项目…...