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

软件测试基础四(服务端知识)

服务端基础

1. 系统架构介绍

1.1. CS 架构(Client/Server,客户端 - 服务器架构)

优点

  • 能充分发挥客户端 PC 的处理能力,部分工作在客户端处理后提交给服务器,客户端响应速度快。
  • 操作界面可定制化程度高,能满足个性化要求。
  • 可实现复杂业务流程。
  • 安全性能相对容易保证。

缺点

  • 需要专门的客户端安装程序,部署和配置不便。
  • 兼容性差,不同操作系统需开发不同程序。
  • 开发、维护成本高,需专业技术人员。
  • 一次升级需所有客户端更新程序。

1.2. BS 架构(Browser/Server,浏览器 - 服务器架构)

优点

  • 分布性强,客户端零维护,有网络和浏览器即可处理业务。
  • 业务扩展方便,增加网页可增加服务器功能。
  • 维护简单,改网页可同步更新所有用户。
  • 开发简单,共享性强。

缺点

  • 个性化功能受限。
  • 跨浏览器存在兼容性问题。
  • 请求 - 响应模式,响应速度相对低。
  • 在速度和安全性设计上成本高。
  • 功能相对弱化,难以实现传统特殊功能要求。

1.3. CS与BS区别总结

  • 效率:CS效率高,某些内容已经安装在系统中了,BS每次都要加载最新的数据
  • 升级:BS无缝升级,CS删除老版本再安装新版本
  • 安全:CS更安全,需要安装、注册、登录;BS有浏览器即可使用,安全程度低
  • 开发成本:BS成本低,CS开发不同的系统需要不同的开发人员,成本高

2. 服务器介绍

2.1. 服务器定义

  • 硬件层面:可理解为高性能电脑,安装软件后能对外提供服务。专业服务器需专业硬件和软件支持,性能高价格也高。
  • 软件层面:运行在硬件服务器上为用户提供服务的计算机软件。在不同情境下,“服务器” 含义不同,可能指硬件、软件或提供服务的系统。

2.2. 软件服务器类型

  • 文件服务器:在计算机网络环境中,供所有用户访问的文件存储设备,专门用于文件检索和存储。
  • 数据库服务器:提供数据组织、存储和管理功能,如 Oracle、MySQL、Microsoft SQL Server 等。
  • 邮件服务器:负责电子邮件收发管理的设备。
  • FTP 服务器:在互联网上提供文件存储和访问服务,依照 FTP 协议工作。
  • Web 服务器:严格意义上只处理 HTTP 协议,发送静态页面内容,常见的有 Nginx、Apache、IIS 等。
  • 应用服务器:通过各种协议将商业逻辑暴露给客户端程序,一般也支持 HTTP 协议,可实现 Web 服务器功能,能处理业务逻辑,实现动态生成文档,常见的有 Tomcat、Weblogic、Jboss 等。

3. 编程语言介绍

3.1. 编程语言时代发展

  • 低级语言时代:1946 - 1953,主要包括机器语言和汇编语言,被称为 “天书”。
  • 高级语言时代:1954 至今,随着世界上第一个高级语言 Fortran 的出现,新编程语言不断涌现,如 BASIC、C 语言等。
  • 面向对象时代:90 年代初至今,面向对象程序设计重要性凸显,特点为封装性、继承性和多态性,代表语言有 Java、Python。

3.2. Java 语言

  • 面向对象编程语言,吸收 C++ 优点,摒弃多继承、指针等难理解概念。
  • 功能强大且简单易用,具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。
  • 可编写桌面应用程序、Web 应用程序、分布式系统和嵌入式系统应用程序等,在企业级应用中广泛用于电信、金融、交通、电商等大型项目平台建设。

3.3. Python 语言

  • 跨平台计算机程序设计语言,高层次结合解释性、编译性、互动性和面向对象的脚本语言。
  • 最初用于编写自动化脚本,随着版本更新和新功能添加,越来越多地用于独立大型项目开发。
  • 相对 Java 更简单易学,主要应用领域有大数据、人工智能、科学计算和统计、网络爬虫、软件开发等。
     

4. 常见文件格式

4.1. XML(可扩展标记语言)

  • 设计宗旨是传输数据而非显示数据,标签需自行定义,具有自我描述性,是 W3C 推荐标准,纯文本格式,后缀为.xml。
  • 与 HTML 差异:XML 不是 HTML 的替代,XML 设计为传输和存储数据,关注内容;HTML 设计为显示数据,关注外观。
  • 树形结构:文档从根部开始扩展到枝叶,第一行是 XML 声明,定义版本和编码。
  • 语法规则:文档必须有根元素,所有元素须有结束标签,标签对大小写敏感,元素需正确嵌套,属性值须加引号,注释语法与 HTML 相似。

4.2. JSON(JavaScript 对象表示法)

  • 基于文本、独立于语言的轻量级数据交换格式,全称 “JavaScript Object Notation”。
  • 特点:语法简洁,易于阅读和编写,数据结构清晰。
  • 语法规则:键必须是字符串类型,用双引号括起;值可以是数字、字符串、逻辑值(true 或 false)、数组、对象、null。

5. 版本管理

5.1. 定义与重要性

版本管理软件是一种用于管理文件、代码或其他数字资产的修改历史和版本的工具。它允许团队成员协作开发,跟踪每个版本的变化,恢复到以前的版本,并且能够有效地管理多个分支的开发。在软件开发、文档编写、设计等领域广泛应用,确保项目的稳定性、可追溯性和高效性。

5.2. 主要功能

5.2.1. 版本控制
  1. 记录版本历史
  • 能够详细记录文件的每一次修改,包括修改的时间、作者、修改的内容摘要等信息。例如,在软件开发中,每次开发人员提交代码,版本管理软件都会记录代码的变化情况,如新增了哪些功能、修复了哪些Bug等。
  1. 版本标识与检索
  • 为每个版本分配唯一的标识符,方便用户检索和比较不同版本。这些标识符可以是数字编号、时间戳或者是自定义的标签。例如,在Git中,可以使用提交哈希值(如a1b2c3d4...)来唯一标识一个版本,也可以使用标签(如v1.0v2.0)来标记重要的版本。
  1. 版本比较与差异查看
  • 可以直观地展示不同版本之间的差异。对于文本文件,通常会以行或字符为单位显示修改的内容,如新增的行、删除的行或者修改的行。这有助于开发人员快速了解版本之间的变化,在代码审查、故障排查等场景中非常有用。
5.2.2. 分支管理
  1. 创建分支
  • 支持从主开发分支(如mastermain)创建新的分支。分支是独立的开发线路,可以用于开发新功能、修复Bug或者进行实验性开发,而不会影响主分支的稳定性。例如,开发团队可以为新功能开发创建一个名为feature - new - login - system的分支,在这个分支上独立进行开发工作。
  1. 分支合并
  • 当分支上的开发工作完成后,可以将分支合并回主分支或者其他目标分支。在合并过程中,版本管理软件会自动处理版本冲突(如果存在),并提供工具帮助用户解决冲突。例如,在将feature - new - login - system分支合并回master分支时,如果主分支和新功能分支对同一文件的同一部分进行了不同的修改,就会产生冲突,需要开发人员手动解决。
  1. 分支并行开发
  • 允许多个分支同时进行开发,提高团队的开发效率。不同的团队成员或团队可以在各自的分支上工作,互不干扰,最后再将各个分支的成果合并到一起。例如,一个大型软件项目可以有多个团队分别在不同的分支上开发不同的模块,如用户界面分支、数据库交互分支等。
5.2.3. 协作支持
  1. 用户权限管理
  • 能够对不同的用户或用户组设置不同的权限。例如,在一个团队项目中,可以设置项目负责人具有完全的读写权限,开发人员具有读写自己分支的权限和只读主分支的权限,而外部合作伙伴可能只有只读特定分支或文件的权限。
  1. 多人协作开发
  • 方便多个用户同时对一个项目进行开发。当多个用户修改同一个文件时,版本管理软件可以有效地管理这些修改,避免数据丢失或冲突。例如,通过锁定机制(部分软件采用)或者合并策略来确保多个用户的修改能够正确地整合到一起。
  1. 远程仓库支持
  • 可以将本地的版本库与远程仓库进行同步。远程仓库通常存储在服务器上,方便团队成员共享和协作。例如,在Git中,开发人员可以将自己的本地代码仓库推送到像GitHub、GitLab等远程仓库平台,团队中的其他成员可以从远程仓库拉取最新的代码进行开发。

5.3. 常见的版本管理软件

5.3.1. Git
  1. 分布式架构
  • Git是一个分布式版本控制系统,这意味着每个开发人员的本地机器上都有一个完整的版本库副本。这种架构使得开发人员可以在本地进行版本控制操作,如提交、分支管理等,即使没有网络连接也可以正常工作。例如,开发人员在出差途中没有网络时,仍然可以在本地仓库进行代码开发和版本管理,等有网络时再将本地修改同步到远程仓库。
  1. 基本操作
  • 初始化仓库:使用git init命令在本地目录下创建一个新的Git仓库。例如,在一个新的项目文件夹中执行git init,就可以开始使用Git进行版本管理。
  • 添加文件和提交:通过git add命令将文件添加到暂存区,如git add file.txt,然后使用git commit - m "commit message"命令将暂存区的文件提交到本地仓库,其中"commit message"是对本次提交的简短描述,用于记录版本变化的内容。
  • 分支操作:创建新分支可以使用git branch new - branch命令,切换分支使用git checkout new - branch命令,合并分支可以使用git merge命令。例如,要将new - branch分支合并到当前分支,可以执行git merge new - branch
  1. 与远程仓库协作
  • 可以通过git remote add origin remote - repository - url命令添加远程仓库,其中remote - repository - url是远程仓库的地址,如https://github.com/user/repository.git。然后使用git push命令将本地仓库的内容推送到远程仓库,使用git pull命令从远程仓库拉取最新的内容。例如,在团队协作中,开发人员可以先git pull获取最新的代码,然后进行开发,开发完成后git push将自己的修改推送到远程仓库。
5.3.2. Subversion(SVN)
  1. 集中式架构
  • SVN是集中式版本控制系统,它只有一个中心版本库存储在服务器上。开发人员通过客户端连接到服务器上的版本库进行操作。这种架构相对简单,管理比较容易,但开发人员必须连接到服务器才能获取完整的版本信息。例如,在公司内部网络中,所有开发人员通过公司的服务器上的SVN版本库进行代码管理。
  1. 基本操作
  • 检出仓库:使用svn checkout repository - url命令从服务器上的仓库检出项目到本地目录,开始在本地进行开发。例如,svn checkout https://svn.example.com/project会将服务器上project项目的最新版本下载到本地。
  • 提交和更新:通过svn commit - m "commit message"命令将本地修改提交到服务器上的版本库,通过svn update命令从服务器更新本地文件到最新版本。例如,开发人员完成一个功能开发后,使用svn commit将修改提交,然后在需要获取其他开发人员的修改时,使用svn update更新本地文件。
  1. 版本管理特点
  • SVN使用版本号来标识每个版本,版本号是一个递增的整数。在查看版本历史和比较版本差异时,通过版本号进行操作。例如,svn diff - r version1:version2可以查看版本version1version2之间的差异。
5.3.3. Mercurial
  1. 分布式架构与特点
  • Mercurial也是分布式版本控制系统,和Git类似,它具有高效、灵活的特点。它提供了简单易懂的命令行接口和图形界面工具,方便不同类型的用户使用。例如,对于初学者来说,Mercurial的命令可能更容易理解和掌握。
  1. 基本操作
  • 创建和克隆仓库:使用hg init命令创建一个新的本地Mercurial仓库,使用hg clone repository - url命令克隆远程仓库到本地。例如,hg init my - project创建一个名为my - project的本地仓库,hg clone https://bitbucket.org/user/project克隆一个远程仓库到本地。
  • 提交和推送/拉取:通过hg commit - m "commit message"命令提交本地修改,使用hg push命令将本地修改推送到远程仓库,使用hg pull命令从远程仓库拉取修改。例如,在开发过程中,开发人员先hg commit提交自己的修改,然后通过hg pushhg pull与远程仓库进行同步。

http://www.mrgr.cn/news/64460.html

相关文章:

  • 论文速读:简化目标检测的无源域适应-有效的自我训练策略和性能洞察(ECCV2024)
  • 网络编程入门
  • Windows部署rabbitmq
  • C#开发webService接口
  • Spring源码(十一):Spring MVC之DispatchServlet
  • 什么是 OpenTelemetry?
  • AUTOSAR从入门到精通-BswM模块(二)
  • mqtt.fx激活方法
  • 项目的风险
  • 在排序数组中查找元素的第一个和最后一个位置
  • Python酷库之旅-第三方库Pandas(190)
  • 纯前端生成PDF(jsPDF)并下载保存或上传到OSS
  • CSS中的 BFC,是啥呀?
  • 无源元器件-磁珠选型参数总结
  • 32单片机HAL库的引脚初始化
  • C语言第11节:指针(1)
  • 05 Django 框架模型介绍(一)
  • 虚拟机安装Ubuntu系统
  • 网络请求优化:理论与实践
  • 【Python项目管理】“无法创建虚拟环境”报错原因及解决方法
  • JZ2440开发板——LCD
  • 什么是软件测试?软件测试的流程?软件测试未来3-5年的职业规划?
  • 【AD】1-2 AD24软件的中英文版本切换
  • Python数据分析案例62——基于MAGU-LSTM的时间序列预测(记忆增强门控单元)
  • 不同网线类型
  • 数据库->联合查询