Kun

Kun

IT学徒、技术民工、斜杠青年,机器人爱好者、摄影爱好 PS、PR、LR、达芬奇潜在学习者


共 279 篇文章


​ 把一些前后端概念性比较强的理念放在这里,本篇涉及测试

有多少软件测试类型呢?

我们作为测试人员了解很多种不同的软件测试类型,例如功能测试(Functional Test)、非功能测试、自动测试、敏捷测试、以及它们的各种子类型. 尽管在我们的测试过程中会接触很多种测试类型, 或者听说过某些测试类型,但是很少人敢说精通所有的测试类型.

每个测试类型都有自己的特点、优势和劣势。

下面是软件测试的通用类型列表

  • 功能测试类型:

    • 单元测试(Unit testing)
    • 集成测试(Integration testing)
    • 系统测试(System testing)
    • 健全性测试(Sanity testing)
    • 冒烟测试(Smoke testing)
    • 接口测试(Interface testing)
    • 回归测试(Regression testing)
    • Beta/验收测试(Beta/Acceptance testing)
  • 非功能测试类型:

    • 性能测试(Performance Testing)
    • 负载测试(Load testing)
    • 压力测试(Stress testing)
    • 容量测试(Volume testing)
    • 安全测试(Security testing)
    • 兼容性测试(Compatibility testing)
    • 安装测试(Install testing)
    • 恢复测试(Recovery testing)
    • 可靠性测试(Reliability testing)
    • 可用性测试(Usability testing)
    • 一致性测试(Compliance testing)
    • 本地化测试(Localization testing)

https://bobi.ink/2019/07/10/typeof-testing/

A/B测试

顾名思义, A/B测试就是准备两个(A/B)或两个以上的版本,让不同的用户来随机访问这些版本,收集各群组的用户体验数据和业务数据,最后分析、评估出最好版本,正式采用。如上图,谷歌使用A/B测试来决定导航应该是红色还是蓝色。

Alpha测试

Alpha测试这是软件工程中很常见的测试类型。它的目标就是尽可能地在发布到市场或交付给用户之前找出所有的问题和缺陷

Alpha测试一般在开发的末段且在Beta测试之前进行。在这个测试过程中可能会驱动开发者进行一些小(minor)的设计变动. Alpha测试一般在开发者网站进行,即只对开发者或内部用户开放,一般可以为此类测试创建内部虚拟的用户环境。

一般大型的软件项目都有规范化的软件版本周期:

  • Pre-alpha: 有时候软件会在Alpha或Beta版本前先发布Pre-alpha版本, 相比Alpha和Beta,这是一个功能不完整的版本
  • Alpha: Alpha版本功能还没完善,需要进一步测试。Alpha版本通常会发送到开发软件的组织或某群体中的软件测试者进行内部测试。
  • Beta: 一般Beta版本会包含所有功能,但可能又有一些Bug,需要调试反馈。 Beta版本是软件最早对外公开的软件版本,由公众(通常为公司外的第三方开发者和业余玩家)参与测试。
  • Release Candidate(rc): 发布候选版本,如果没有出现问题则可发布成为正式的版本。这个版本包含完整且比较稳定的功能

验收测试

验收测试通常是部署软件之前的最后一个测试操作, 也称为交付测试, 由最终客户执行,他们会验证端到端(end to end)的系统流程是否符合业务需求,以及功能是否是满足最终用户的需求。只有当所有的特性和功能按照期望的运行,客户才会接受软件

这是测试的最后阶段,在验收测试之后,软件将投入生产环境. 所以它也叫用户验收测试(UAT)

举个例子,验收测试就相当于收快递, 包裹是软件、你就是客户,是验收方,如果货物不符合你的要求,是要退货的。

临时测试

Ad-hoc中文应该理解为临时的意思。顾名思义,这种测试是在临时基础上进行的, 有时候也称为随机测试。即没有参考测试用例、没有针对该测试的任何计划和文档。Ad-hoc测试的目的就是通过执行随意的流程或任意的功能来找出应用的缺陷和问题

Ad-hoc测试一种非正式的方法,可以由项目中的任何人执行。尽管没有测试用例很难识别缺陷,但是有些时候在Ad-hoc测试期间发现的缺陷可能无法使用现有的测试用例来识别, 也就是说它一般用来发现‘意外’的缺陷.

可访问性测试

可访问性测试的目的是确定软件或应用程序是否可供残疾人使用。残疾是指聋人,色盲,智障人士,失明者,老年人和其他残疾人群体。这里会执行各种检查,例如针对视觉残疾的字体大小测试,针对色盲的颜色和对比度测试等等。

不同平台、不同应用类型对可访问性支持情况不太一样,比如iOS相比其他操作系统则更重视可访问, 而国外比国内更重视可访问性。

Beta测试

上文Alpha测试已经提及Beta测试, Beta测试是一种正式的软件测试类型,在将产品发布到市场或者实际最终用户之前,由客户在真实的应用环境中执行

执行Beta测试目的是确保软件或产品中没有重大故障,并且满足最终用户的业务需求。当客户接受软件时,Beta测试才算通过。

通常,此类测试由最终用户或其他人完成。这是在将应用发布作为商业用途之前完成的最终测试。通常,发布的软件或产品的Beta版本仅限于特定区域中的特定数量的用户。 所以最终用户实际使用软件后会将一些问题反馈给公司。公司可以在全面发布之前采取必要的措施。

Beta测试在正式版本之前也可能会迭代进行多次.

后端测试

前端应用输入的数据,一般都会存储在数据库,所以针对数据库的这类测试称为数据库测试或者后端测试. 市面有不同的数据库,如SQL Server,MySQL和Oracle等。数据库测试会涉及表结构,模式,存储过程,数据结构等。

后端测试一般不会涉及GUI,测试人员通过某些手段直接连接到数据库,从而可以容易地运行一些数据库请求来验证数据。通过后端测试可以发现一些数据库问题,比如数据丢失、死锁、数据损坏。这些问题在系统投入生产环境之前进行修复至关重要

浏览器兼容测试

这是兼容性测试的子类型,由测试团队执行. 浏览器兼容测试主要针对Web应用,用于确保软件可以在不同浏览器或操作系统中运行; 或者验证Web应用程序是否支持在浏览器的所有版本上运行, 以确定应用最终兼容的范围.

浏览器兼容测试是前端开发者绕不开的坑。

我们有很多策略来应对浏览器兼容性,比如渐进增强或者优雅降级, 还有制定浏览器兼容规范;

为了抚平浏览器之间的差异,我们会使用各种特性检测工具(Modernizr), 还有各种polyfill(CSS Normaliz, polyfill/shim, css-autoprefixer);

当然为了测试跨浏览器兼容性,还要一些辅助工具,例如BrowserStack, 对于我们这些小团队,只能下一堆Portable(Portable浏览器运行时相互隔离的, 所以不会存在配置文件等冲突问题) 浏览器,手工测试了。

密评

  1. 密评定义:全称商用密码应用安全评估 , 是指对采用商用密码技术、产品和服务集成建设的网络和信息系统密码应用合规性、正确性、有效性进行评估。
  2. 密评对象:重要信息系统、关键信息基础设施、网络安全等保三级及以上的系统。
  3. 评测依据:GB/T 39786-2021《信息安全技术 信息系统密码应用基本要求》 参考标准
  4. 《信息系统密码应用测评要求》
  5. 《信息系统密码应用测评过程指南》
  6. 《信息系统密码应用高风险判定指引》
  7. 《商用密码应用安全性评估量化评估规则》
  8. 基本要求 密评基本要求主要包含两部分:技术要求管理要求

密评主要针对涉及到商用密码的网络和信息系统。这里的商用密码指对不涉及国家秘密内容的信息进行加密保护或者安全认证所使用的密码技术、密码产品和密码服务。

  • 密码技术:采用特定变换的方法对信息进行加密保护、安全认证的技术。如 SM3 哈希算法、SM4 分组密码算法、SM2 公钥密码算法等。
  • 密码产品:实现密码功能、承载密码技术的实体,包括密码机、密码芯片和模块等。
  • 密码服务:基于密码技术和产品,实现密码功能,提供密码保障的行为。

密改:又称国密改造,是通过密评的重要一步,被评测信息系统需要经过密改,从而支持国产商用密码,并达到安全合规正确有效的要求。从密评技术要求上分析,需要在物理和环境安全网络和通信安全设备和计算安全应用和数据安全四个方面上借助商用密码技术、产品或服务,实现密改。 业界主推的密改技术路径主要有三条:“免” 改造、“重” 改造和 “易” 改造。

  • 免改造:信息系统无需进行密改,只需简单配置
  • 重改造:信息系统调用复杂的基础密码产品接口完成密改,如对接服务器密码机签名验证服务器
  • 易改造:信息系统使用针对密评研发的专业密码服务产品,无改动或较少改动信息系统来实现密改。

技术要求重点分析: 根据密评技术要求中的评测指标,密评重点集中在以下两点:

  • 信息系统实体身份真实性 / 身份鉴别、重要数据机密性、重要数据完整性以及操作行为的不可否认性。
  • 密钥生命周期安全:密钥生成、使用、存储、备份、恢复、归档、导入导出以及销毁等 其中,密钥生命周期安全可以借助服务器密码机或者密钥管理系统来完成,因此信息系统密改工作集中在第一点。密码应用技术架构整体也是围绕技术要求的四个方面来规划和落地。

物理和环境安全:对重要物理区域(如:机房)出入人员采用密码技术进行身份鉴别,并对门禁进出记录、视频监控数据进行完整性保护。

  • 身份鉴别:机房需要部署国密门禁读卡器,通过国密门禁 IC 卡和国密门禁读卡器,基于国密算法,实现用户身份鉴别。读卡器和门禁卡必须具有国家密码管理部门颁发的认证证书。如:光电安辰国密门禁设备等
  • 重要数据完整性:门禁记录数据、视频监控记录数据存储需要保证完整性。如:门禁记录通过门禁管理系统进行完整性保护、视频监控记录通过视频监控管理系统进行完整性保护。这类系统一般采用内置密码卡或者外接密码机的方式,并通过 SM3-HMAC 对重要数据进行完整性保护。 注:密码机、密码卡和视频监控管理系统需要具有国家密码管理部门颁发的认证证书

https://www.cnblogs.com/informatics/p/17431952.html

SSO

casdoor

开源单点登录界面

https://github.com/casdoor/casdoor?tab=readme-ov-file

电商项目开发

人员:1产品 3开发 1测试

模块:

排期:2个月左右 一个半月开发 半个月测试

数仓

Data warehouse(可简写为DW或者DWH)数据仓库,是在数据库已经大量存在的情况下,它是一整套包括了etl、调度、建模在内的完整的理论体系

数据仓库的方案建设的目的,是为前端查询和分析作为基础,主要应用于OLAP(on-line Analytical Processing),支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。目前行业比较流行的有:AWS Redshift,Greenplum,Hive等。

数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好准备,这些准备包含:清洗、转义、分类、重组、合并、拆分、统计等

数据仓库中涉及到的问题:

  1. 为什么要做数据仓库?
  2. 为什么要做数据质量管理?
  3. 为什么要做元数据管理?
  4. 数仓分层中每个层的作用是什么?
  5. …...

在实际的工作中,我们都希望自己的数据能够有顺序地流转,设计者和使用者能够清晰地知道数据的整个声明周期

但是,实际情况下,我们所面临的数据状况很有可能是复杂性高、且层级混乱的,我们可能会做出一套表依赖结构混乱,且出现循环依赖的数据体系

为了解决我们可能面临的问题,需要一套行之有效的数据组织、管理和处理方法,来让我们的数据体系更加有序,这就是数据分层。数据分层的好处:

  • 清晰数据结构:让每个数据层都有自己的作用和职责,在使用和维护的时候能够更方便和理解
  • 复杂问题简化:将一个复杂的任务拆解成多个步骤来分步骤完成,每个层只解决特定的问题
  • 统一数据口径:通过数据分层,提供统一的数据出口,统一输出口径
  • 减少重复开发:规范数据分层,开发通用的中间层,可以极大地减少重复计算的工作

每个公司的业务都可以根据自己的业务需求分层不同的层次;目前比较流行的数据分层:数据运营层、数据仓库层、数据服务层。

数据运营层:Operation Data Store 数据准备区,也称为贴源层。数据源中的数据,经过抽取、洗净、传输,也就是ETL过程之后进入本层。该层的主要功能:

  • ODS是后面数据仓库层的准备区
  • 为DWD层提供原始数据
  • 减少对业务系统的影响

这层的数据是后续数据仓库加工数据的来源。数据来源的方式:

  1. 业务库:sqoop定时抽取数据;实时方面考虑使用canal监听mysql的binlog日志,实时接入即可
  2. 埋点日志:日志一般是以文件的形式保存,可以选择使用flume来定时同步;可以使用spark streaming或者Flink、Kafka来实时接入
  3. 消息队列:来自ActiveMQ、Kafka的数据等

数据仓库层从上到下,又可以分为3个层:数据细节层DWD、数据中间层DWM、数据服务层DWS。

数据细节层DWD

数据细节层:data warehouse details,DWD

该层是业务层和数据仓库的隔离层,保持和ODS层一样的数据颗粒度;主要是对ODS数据层做一些数据的清洗和规范化的操作,比如去除空数据、脏数据、离群值等。

为了提高数据明细层的易用性,该层通常会才采用一些维度退化方法,将维度退化至事实表中,减少事实表和维表的关联

数据中间层DWM

数据中间层:Data Warehouse Middle,DWM;

该层是在DWD层的数据基础上,对数据做一些轻微的聚合操作,生成一些列的中间结果表,提升公共指标的复用性,减少重复加工的工作。

数据服务层DWS

数据服务层:Data Warehouse Service,DWS;

该层是基于DWM上的基础数据,整合汇总成分析某一个主题域的数据服务层,一般是宽表,用于提供后续的业务查询,OLAP分析,数据分发等。

一般来说,该层的数据表会相对较少;一张表会涵盖比较多的业务内容,由于其字段较多,因此一般也会称该层的表为宽表

数据应用层ADS

数据应用层:Application Data Service,ADS;

该层主要是提供给数据产品和数据分析使用的数据,一般会存放在ES、Redis、PostgreSql等系统中供线上系统使用;也可能存放在hive或者Druid中,供数据分析和数据挖掘使用,比如常用的数据报表就是存在这里的。

飞书

飞书项目

插件 UI:https://www.npmjs.com/package/@lark-project/js-sdk?activeTab=code

使用方式:https://project.feishu.cn/b/helpcenter/1p8d7djs/aa6btca8

如果你觉得我的文章对你有帮助的话,希望可以推荐和交流一下。欢迎關注和 Star 本博客或者关注我的 Github