软件测试与质量保证笔记_《软件质量保证与测试》 软件缺陷定义和特征?软件缺陷产生的原因有哪些?-程序员宅基地

技术标签: 校内课程  单元测试  

软件测试与质量保证

一、概述引论

(一)缺陷

1、缺陷定义

缺陷:最终产品同用户的期望不一致。
1、功能错误
2、功能遗漏
3、超出需求的部分
4、性能不符合要求

2、缺陷产生原因

在这里插入图片描述

3、解决办法

通过软件测试尽可能减少缺陷。

(二)软件测试

1、软件测试定义

传统意义上的测试定义,是狭义的。
1979年Glenford J. Myers在《软件测试艺术》(The art of software testing)书中给出的定义:
软件测试是为了发现软件缺陷而执行程序或系统的过程。

1983年IEEE 的定义
使用人工或自动手段运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

软件测试也可以定义为是“验证(Verification)”和“有效性确认(Validation)”活动构成的整体。
验证:是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性。
有效性确认:是确认所开发的软件是否满足用户真正需求的活动。

2、区分缺陷、故障、失效

在这里插入图片描述

二、软件测试基础

(一)软件测试的原则

1.所有的测试都应追溯到用户的需求
系统中最严重的错误是那些导致程序无法满足用户需求的错误。

2.尽早地和不断地进行软件测试
问题发现越早,解决问题的代价就越小。

3.不可能完全的测试
输入量太大
执行路径太多
软件测试最致命的缺陷就是:不能进行彻底的测试

4 .Pareto原则
Pareto原则暗示着测试发现的错误中的80%很可能起源于程序模块中的20%。

5.软件缺陷的寄生虫性
找到的软件缺陷越多,就说明软件缺陷越多。

6.避免测试自己的程序
程序员轻易不会承认自己写的程序有错误;
程序员的测试思路有局限性,做测试时很容易受到编程思路的影响;
程序员测试不具有典型性。

7.设计周密的测试用例
软件测试的本质就是针对要测试的内容确定一组测试用例。
测试用例至少应包括:
a 执行测试用例前,应满足的前提条件
b 输入
c 预期输出
设计测试用例时,应当包括合理的输入条件和不合理的输入条件。

8.回归测试
程序修改后必须进行回归测试,避免引入新的错误。

9.严格执行测试计划,排除测试的随意性。

10.确认BUG的有效性
对测试错误结果一定要有一个确认的过程。
有时候测试人员提交的BUG并不是真正的BUG。

11.妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。

(二)软件质量保证

1、质量定义

ISO 9000 :质量是一组固有特性符合需求的程度。
IEEE的定义
系统、部件或过程满足明确需求的程度。
系统、部件或过程满足客户或用户需要或期望的程度。
六标准差(6σ):106次测试中的错误次数。
RUP 的定义:满足或超出认定的一组需求,并使用经过认可的评测方法和标准来评估,还使用认定的流程来生产。

2、软件质量的定义

ISO 14598-1999定义:软件特性的总和,软件满足规定或潜在用户需求的能力。
ISO 9126-2001定义:软件满足用户规定或潜在用户需求的能力,要从软件在内部,外部和使用过程中的表现来衡量,包含内部质量、外部质量、和使用质量。

3、质量的不同层面

符合性质量:能够满足国家或行业标准、产品规范的要求,最初的质量观念。
适用性质量:让客户满意,不仅满足标准、规范的要求,而且满足客户的其他要求。
广义质量:不仅要让客户满意,还要让客户愉快,也就是,想在客户的前面,超出客户的希望。

### 4、软件质量属性(特性)的定义
定义:软件产品、过程或与质量要求有关的固有属性 。
1、软件质量是许多质量属性的综合体现,各种质量属性反映了软件质量的方方面面。
2、质量要求只有转化为有指标的质量特性,质量才可以度量。
3、通过改善软件的各种质量属性,从而提高软件的整体质量。

5、软件质量保证(SQA)的定义

建立一套有计划,有系统的方法,来向管理层保证拟定出的标准、步骤、实践和方法能够正确地被所有项目所采用。
1、它使软件开发过程对于管理人员来说是可见的。
1、它通过对软件产品和活动进行评审来验证软件是合乎标准的。

6、软件质量保证方法

产品质量
工作成果产生时(马上)进行质量检查,及时找出并消除工作成果中的缺陷
1、技术评审
2、软件测试

过程质量
开发过程中有效地预防工作成果产生缺陷,将高质量内建于开发过程。
过程规范建立
1、过程检查
2、软件过程改进

(三)测试模型与基础

1、测试层次的传统观点

在这里插入图片描述在这里插入图片描述

2、软件测试模型

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

3、软件测试流程

1、测试计划

测试计划是对每个产品,或是对各个开发阶段的产品开展测试的策略。
一个完整的测试计划应该包含以下几个方面:
a 对测试范围的界定;
b 风险的确定;
c 资源的规划;
d 时间表的制定;

2、测试设计
测试设计阶段要设计测试用例和测试过程,要保证测试用例完全覆盖测试需求。
测试设计阶段最重要的是如何将测试需求分解,如何设计测试用例。

3、测试开发

(1).准备测试环境
a 测试技术准备
b 配置软件、硬件环境
c 人员

(2).获得测试数据
a 正常事务的测试
b 使用无效数据的测试

(3).测试脚本
所谓脚本,是完整的一系列相关终端的活动。
一般测试脚本有5个级别:
a 单元脚本
b 并发脚本
c 集成脚本
d 回归脚本
e 强度/性能脚本

(4).辅助测试工具
a 优秀的办公处理软件
b 错误跟踪系统
c 自动测试工具
d 软件分析工具
e 好的操作系统
f 多样化平台

4、测试执行

测试执行的过程由4个部分组成:
输入:要完成工作所必须的入口标准或可交付的结果。
执行过程:从输入到输出的过程或工作任务。
检查过程:确定输出是否满足标准的处理过程。
输出:推出标准或工作流程产生的可交付的结果。

5、评估测试

软件测试的主要评测方法包括:
(1) 覆盖评测
最常用的覆盖评测是基于需求的测试覆盖和基于代码的测试覆盖。

(2)质量评测
在测试过程中,已发现缺陷的评估提供了最佳的软件质量指标。

(3)性能评测
评估测试对象的性能时,侧重于获取与行为相关的数据,如响应时间、事务处理数、内存占用率、操作可靠性等。

三、软件测试方法与技术

主流测试技术
在这里插入图片描述

(一)黑盒测试之等价类划分

1、技术概述

在这里插入图片描述

2、黑盒测试的目标

黒盒测试试图发现以下类型的错误:
1、功能错误或遗漏;
2、界面错误,不美观;
3、外部信息访问错误;
4、初始化和终止错误;
5、在接口上,能否正确地接受输入数据,能否产生正确地输出信息;
6、性能错误;

3、等价类划分A

等价类划分法
依据需求对输入的范围进行细分,然后再分出的每一个区域内选取一个有代表性的测试数据开展测试。
有效等价类
符合需求说明,合理地输入数据集合。
无效等价类
不符合需求说明,无意义地输入数据的集合。

操作步骤
在这里插入图片描述

4、等价类划分B

单缺陷与多缺陷假设产生弱等价类与强等价类测试之分;
是否进行无效数据的处理产生健壮与一般等价类测试之分。

于是有:

1、弱一般等价类测试
测试用例设计:
选取的测试用例覆盖所有的有效等价类(只有一个缺陷)。

2、强一般等价类测试
测试用例设计:
将每个变量的有效等价类做笛卡尔积,设计测试用例覆盖笛卡尔积的每个元素。

3、弱健壮等价类测试
测试用例设计:
对有效输入,使用每个有效等价类的一个值。
对无效输入,测试用例将拥有一个无效值,并保持其余的值都是有效的。

4、强健壮等价类测试
从所有等价类的笛卡尔积的每一个元素中获得测试用例。

“单缺陷”假设
失效极少是由两个或多个缺陷的同时发生引起的。

5、等价类测试指导方针和观察

1)弱形式不如对应的强形式的测试全面。
2)如果实现语言是强类型,则没有必要使用健壮形式的测试。
3)如果错误条件非常重要,则进行健壮形式的测试。
4)强等价类测试假设变量是独立的,相应的测试用例相乘会引起冗余问题。如果存在依赖关系,则常常会生成错误测试用例。

在这里插入图片描述

(二)黑盒测试之边界值测试

功能性测试的基本观点是:
任何程序都可以看作是将输入定义域取值映射到输出值域的函数。

1、边界值分析

边界值分析(Boundary Value Analysis)

基本原理
边界值分析关注输入空间的边界,并从中标识测试用例。
错误更可能出现在输入变量的极值附近。

基本思想
在最小值、略高于最小值、正常值、略低于最大值和最大值处取输入变量值;表示方法为 min、min+、nom、max-、和max。
单缺陷”假设是边界值分析的关键假设。

获得测试用例的方法:
使所有变量取正常值,只使一个变量取极值。

归纳基本边界值分析方法
a 通过变量的个数
b 通过变量的取值范围(类型)

优缺点
在这里插入图片描述

2、健壮性测试

健壮性是指在异常情况下,软件还能正常运行的能力。
健壮性有两层含义:
a 容错能力
b 恢复能力

基本思想
健壮性测试是边界值分析的一种简单扩展,除了使用五个边界值分别取值,还要采用:
一个略超过最大值(max+)的取值
一个略小于最小值(min-)的取值

健壮性测试的主要价值是观察异常情况的处理。
软件质量要素的衡量标准:软件的容错性;
软件容错性的度量:从非法输入中恢复。

3、最坏情况测试

基本思想
边界值测试分析采用了可靠性理论的单缺陷假设;
最坏情况测试拒绝这种假设,关心当多个变量取极值时会出现的情况。

对每一个变量首先进行包含最小值、略高于最小值、正常值、略低于最大值、最大值五个元素集合的测试,然后对这些集合进行笛卡尔积计算,以生成测试用例。

4、随机测试

基本思想
不是永远选取有界变量的最小值、略高于最小值、正常值、略低于最大值和最大值,而是使用随机数生成器选出测试用例值。

5、边界值分析应遵循的原则

1)如果输入条件规定了取值范围,或规定了值的个数,测试用例选择:范围的边界内,刚刚超出范围的边界外的值;或者说:最小值、稍高于最小值、正常值、稍低于最大值、最大值。
2)针对规约的每个输出条件使用1)原则。
3)如果规约中提到的输入输出是个有序的集合(如顺序文件、有序表等),就应注意选取有序集中的第一个和最后一个元素作为测试用例。
4)分析软件规约,找出其它的可能边界条件。

(三)黑盒测试之决策表法

优势
决策表法能把复杂逻辑关系多条件组合情况表达得较明确。
适用:在程序中,若输入输出较多,且相互制约的条件较多。

决策表组成
在这里插入图片描述任何一个条件组合的特定取值及其相应要执行的操作称为规则;
在判定表中贯穿条件项和动作项的一列就是一条规则;
判定表中列出多少组条件取值,即有多少条规则,即条件项和动作项有多少列。

步骤总结
在这里插入图片描述优缺点.
优点:它能把复杂的问题按各种可能的情况一一列举出来,简明而易于理解,也可避免遗漏。
缺点:不能表达重复执行的动作,例如循环结构。

(四)黑盒测试之因果图法

概述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

计算步骤
在这里插入图片描述
应用场合:
当软件的输入条件过多时,可以考虑输入的所有排列组合情况,考虑条件之间和条件结果之间关系,防止遗漏。
局限性:
测试用例数目可能会很大,不便于维护。

(五)白盒测试

1、白盒测试概念

白盒测试又叫结构测试,逻辑驱动测试或基于程序本身的测试。

2、基于控制流的测试

控制流图:
控制流图是退化的程序流程图,图中每个处理都退化成一个结点,流线变成连接不同结点的有向弧。
控制流图将程序流程图中结构化构件改用一般有向图的形式表示。
在控制流图中用圆“○”表示节点,一个圆代表一条或多条语句。

在这里插入图片描述圈复杂度:是一种为程序逻辑复杂性提供定量测度的软件度量,将该度量用于计算程序的基本的独立路径数目。
独立路径必须包含一条在定义之前不曾用到的边。(每一条新的路径都包含了一条新边)

程序的环路复杂性即McCabe复杂性度量,简单的定义为控制流图的区域数。
程序环路复杂性又叫圈复杂度。
在这里插入图片描述
逻辑覆盖
路径测试

在这里插入图片描述路径覆盖的困难:太复杂。

如果把覆盖的路径数压缩到一定限度内,例如程序中的循环体只执行零次和一次,就成为基本路径测试。

通过分析程序控制流图的环路的复杂性,导出基本路径集合,从而设计测试用例,保证这些路径至少通过一次。

3、循环测试

简单循环测试
在这里插入图片描述
嵌套循环测试
在这里插入图片描述
串接循环
在这里插入图片描述
非结构循环
不能测试,尽量重新设计给结构化的程序结构后再进行测试。

4、基于数据流的测试

在这里插入图片描述
DD路径:决策对决策路径(Miller)。从决策语句的“出路”开始,到下一个决策语句的“入路”结束。
DD链:有向图中一条起始和终止节点不同点路径。
在这里插入图片描述

(六)单元测试

1、基本概念

单元测试:是对软件基本组成单元进行的测试。是检验程序最小单位,即检查模块有无错误,它是在编码完成后必须进行的测试工作。

地位:
在这里插入图片描述

2、主要任务

单元测试针对每个程序的模块,主要测试如下5方面:
模块接口
对模块接口进行测试,检查进出程序单元的数据流是否正确。须在其它测试之前进行。
局部数据结构
测试模块内部的数据能否保持完整性,包括内部数据的内容、形式及相互关系不发生错误。
边界条件
采用边界值分析方法设计测试用例,重点关注程序边界处。
独立的路径(路径测试)
针对程序路径进行测试,尤为重要。重点关注由于计算错误、不正确的判定或不正常的控制流而产生的错误。
错误处理(出错处理)
重点关注模块在工作中发生错误时,出错处理设施是否有效。

3、执行过程

模拟一个大环境中的情况
在这里插入图片描述
在这里插入图片描述

(七)集成测试

1、概述

集成测试(Integration test)
也叫组装测试或联合测试,是在单元测试的基础上,将所有模块按照设计要求集成为系统或子系统,并进行测试。用于验证程序和概要设计说明的一致性。

2、基于分解的集成

非渐增式集成
定义
又叫大爆炸集成(Big-bang Integration),把所有通过了单元测试的模块按设计要求,一次全部组装起来,然后进行整体测试。
目的
尽可能缩短测试时间,使用最少的测试用例验证系统。
特点
急于求成。
具体方法
假设要对某个系统的部分功能进行测试,其功能分解如图所示:
在这里插入图片描述
渐增式集成
定义
从一个模块开始,测一次添加一个模块,边组装边测试,以发现与接口相联系的问题。
集成方式
1、自顶向下集成
在这里插入图片描述
在这里插入图片描述
2、自底向上集成
在这里插入图片描述
在这里插入图片描述
适用范围:
底层模块接口比较稳定的产品;
高层模块接口变更比较频繁的产品;
底层模块开发和单元测试工作完成较早的产品。

3、三明治集成
在这里插入图片描述
一般对软件结构的上层使用自顶向下结合的方法;
对下层使用自底向上结合的方法;

在这里插入图片描述

3、基于调用图的集成

基于调用图的集成有两种:
成对集成
相邻集成

1、成对集成
成对集成的思想就是免除桩/驱动器开发工作,使用实际代码来代替桩/驱动器。
成对集成的方法就是对应调用图的每一个边建立并执行一个集成测试会话。
2、相邻集成
相邻节点:有向图中,节点邻居包括所有直接前驱节点和直接后继节点 。
相邻集成:
可大大降低集成测试的会话数量,并可避免桩和驱动器的开发。
相邻集成本质上是三明治集成。
相邻集成具有“中爆炸”集成的缺陷:隔离困难。

在这里插入图片描述

4、基于路径的集成

1、基本概念
MM-路径
Paul C.Jorgensen提出,Message Method;
MM-路径是穿插出现模块执行路径消息的序列;
给定一组单元,其MM-路径图是一种有向图,其中节点表示模块执行路径,边表示消息和单元之间的返回

注意:MM-路径不是可执行路径,描述单元之间的控制转移。
对于传统软件来说,MM-路径永远是从主程序开始,在主程序中结束。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、MM-路径复杂度

在这里插入图片描述
MM-路径复杂度:
V(G)= e – n + 2p
V(G)= e – n + 2
(对于结构化过程代码,p=1)

优点:
MM-路径是功能性测试和结构性测试的一种混合。
基于路径的集成测试既适用于采用传统瀑布过程开发的软件,也适用于采用基于合成可选的生命周期模型开发的软件。
缺点:
需要更多的工作量标识MM-路径。

(八)系统测试

1、基本概念

系统测试
将整个软件系统看做一个整体进行测试,包括对功能、性能等,以及将计算机硬件、某些支持软件、 数据和人员等系统元素结合起来,在实际运行环境下对软件进行测试。

2、测试内容

在这里插入图片描述
1、功能测试

功能测试主要是对产品的各功能点进行验证。根据需求规格说明书功能测试用例,逐项测试以检查产品是否达到用户的要求。
2、界面测试

思考范围
风格(主色调、背景)
正确性(标志、文字、图片、弹出的提示信息)
一致性(单一页面、多个页面)
合理性(布局、工具栏图标、放大缩放时)
美观协调
等等

3、易用性测试
易用性测试:从软件的使用合理性方便性等角度对软件系统进行检查,来发现软件不方便用户使用的地方。

易见Easy to discover:单单凭观察,用户就应知道设备的状态,该设备供选择可以采取的行动。
易学Easy to learn:不通过帮助文件或通过简单的帮助文件,用户就能对一个陌生的产品有清晰的认识。
易用Easy to use:用户不翻阅手册就能使用软件。

在这里插入图片描述
4、兼容性测试
在这里插入图片描述
软件兼容性
一般来说,兼容性指能同时容纳多个方面,在计算机术语上兼容是指几个硬件之间、几个软件之间或是软硬件之间的相互配合程度。
兼容性测试
指测试软件在特定的硬件平台上、不同的应用软件之间、不同的操作系统平台上、不同的网络等环境中是否能很好地运行的测试。
配置测试
配置测试是指验证在不同的硬件配置和软件配置下,应用程序能否正常工作。

(九)Web系统测试

Web系统的测试范围

功能测试
性能测试(负载/压力)
用户界面测试/易用性测试
安全性测试
兼容性测试
接口测试

功能测试:

页面内容测试
内容测试用来检测Web应用系统提供信息:正确性、准确性、相关性
== 页面链接测试==
链接是Web应用系统的一个主要特征。
链接将作为一个独立的项目进行测试。
检查内容
测试所有链接是否能正确链接;
测试所链接的页面是否存在;
保证Web应用系统上没有孤立的页面,所谓孤立页面是指没有链接指向该页面。
表单测试
当用户注册、登录、信息提交等,必须测试提交操作的完整性,以校验提交给服务器的信息的正确性。
== Cookies测试、Session测试==
Cookies通常用来存储用户信息和用户在某个应用系统的操作。
PHP从4.1开始支持Session管理。
设计语言测试
Web设计语言版本的差异可以引起客户端或服务器端严重的问题,例如使用哪种版本的HTML等。
数据库测试
在使用了数据库的Web应用系统中,可能发生两种错误:
数据一致性错误:由于用户提交的表单信息不正确而造成的。
输出错误:由于网络速度或程序设计问题等引起的。

安全测试

安全测试:检查系统对非法侵入的防范能力。
目的:验证安装在系统内的保护机制能否在实际中保护系统且不受非法入侵,不受非法干扰。(应对入侵、自我防护和应变)

测试内容
目录
正确设置目录。
不能通过简单的URL替换和推测暴露整个Web目录。
严格设置Web服务器的目录访问权限,不会显示该目录下的所有内容。
登录
验证用户身份,阻止非法用户登录。
日志文件
日志文件对保证Web应用系统的安全性是至关重要的。
需要测试相关信息是否写进了日志文件、是否可追踪。
在后台,要注意验证服务器日志工作正常。
数据加密
当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。
脚本语言
跨站点脚本执行过程
在这里插入图片描述
SSL
使用 SSL(Security Socket Layer)安全协议进行传送用户信息。
使用SSL在HTTP层和TCP层之间建立用户和服务器之间的加密通信,利用公开密钥/私有密钥的加密技术,确保所传送信息的安全性。

易用性测试

导航测试
导航是否直观?
Web系统的主要部分是否通过主页存取。
Web系统的页面结构、导航、菜单、连接的风格是否一致。
Web应用系统导航帮助要尽可能的准确。
图形测试
一个Web应用系统的图形可以包括图片、动画、边框、颜色、字体、背景、按钮等。
内容测试
检验Web提供信息的正确性;
检验Web提供信息的准确性;
检验Web提供信息的相关性。
整体界面测试
整体页面结构设计
界面内容测试
是否能给用户一个整体感

兼容性测试

1、跨平台测试
2、浏览器测试
3、分辨率测试
4、连接速率测试
5、组合测试

接口测试

1、服务器接口
2、外部接口
3、错误处理

性能测试

连接速度测试
Web系统的响应时间
超时的限制
负载测试
性能测试是通过自动化的测试工具模拟多种正常峰值以及异常负载条件来对系统的各项性能指标进行测试。
时间性能:软件的一个具体事务的响应时间
空间性能:软件运行时所消耗的系统资源

一般性能测试:验证软件在正常环境和系统条件下重复使用时是否还能满足性能指标,如运行速度、响应时间、占有系统资源等,不施加任何压力。
可靠性测试:从验证的角度出发,检验系统的可靠性是否达到预期的目标,同时给出当前系统可能的可靠性增长情况。
负载测试
让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的可靠性。

压力测试
概念:
压力测试是持续不断地给被测系统增加压力,直到将系统压垮为止,用来测试系统所能承受的最大压力
实际破坏一个Web应用系统。
压力测试是测试系统的限制和故障恢复能力,也就是测试Web应用系统会不会崩溃,在什么情况下会崩溃。

关注点:
瞬间访问高峰
每个用户传送大量数据
长时间使用

内容:
重复测试
一遍又一遍地执行某个操作或功能。这将确定一个操作能否正常执行,并且能否继续在每次执行时都表现正常。
并发测试
就是在同一时间内执行多个操作。由并发引起的错误只能通过执行多个代码示例才能测出来,测试时要同时遍历多条代码路径。
量级增加
随机变化
改变数据的大小、改变时间延迟的长度、输入速度及变化.

测试工具 LoadRunner
性能测试工具原理:录制+回放模拟用户实际操作场景,监控并分析运行结果。

网页性能Firefox插件:Yslow,Findbug,PageSpeed
Dynatrace检查网页性能
前端性能检测工具dynaTrace是一个运行在IE下的免费的性能分析工具,可以分析页面渲染时间、DOM方法执行时间、js的解析时间等。

(十)自动化测试

1、基本概念与认识

概念
通过测试工具或其他手段来部分替代手工测试,并按照测试工程师预定计划进行自动测试的活动。

目的
提高测试质量;
减少测试过程中的重复劳动;
实现测试自动化;

自动化测试用于发现老缺陷;
手工测试用于发现新缺陷。

优缺点
测试自动化能
显著降低重复手工测试的时间
建立可靠、重复的测试,减少认为错误
增强测试质量和覆盖率
测试自动化不能
完全替代手工测试和手工测试工程师
保证100%的测试覆盖率
弥补测试实践的不足

自动测试技术的发展
在这里插入图片描述

2、测试工具分类

白盒测试工具
在这里插入图片描述
黑盒测试工具
在这里插入图片描述
性能测试工具
在这里插入图片描述
用于测试管理(测试流程管理、缺陷跟踪管理、测试用例管理)的工具
在这里插入图片描述

3、自动化测试的基本原理

录制
在测试者运行应用程序的时,把所有动作,包括键盘操作、鼠标点击等捕获下来,生成一个脚本文件。
回放
录制的脚本可以被“回放”。
脚本修改机制
根据测试需求,对脚本进行一些必要的修改。

4、适于自动化测试场景

在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/A626796235/article/details/104607385

智能推荐

DrawPath实现QQ拖拽泡泡_draw path-程序员宅基地

文章浏览阅读211次。这两天学习了使用Path绘制贝塞尔曲线相关,然后自己动手做了一个类似QQ未读消息可拖拽的小气泡,效果图如下:最终效果图接下来一步一步的实现整个过程。基本原理其实就是使用Path绘制三点的二次方贝塞尔曲线来完成那个妖娆的曲线的。然后根据触摸点不断绘制对应的圆形,根据距离的改变改变原始固定圆形的半径大小。最后就是松手后返回或者爆裂的实现。Path介绍:顾名思义,就是一个路径的意思,Path里面有很多的..._draw path

EmEditor Professional v14/15/16/17/18 最新版 注册码 2000组(终身授权)_sm52.vip-程序员宅基地

文章浏览阅读7.8w次,点赞13次,收藏36次。EmEditor 是快速,轻巧,可扩展,使用方便的 Windows 文本编辑器。同时支持32位和64位版本!ZDnet.com 的 Ed Burnette 称 EmEditor 为 “全球最快的文本编辑器”。 (见全文)日本人气网站窓の杜 (Mado-no-mori) 评价,“无需 Excel。最强 CSV 编辑器”。(见译文)Riccardo Tani,一位网络防御经理,推荐用 Em..._sm52.vip

面试高频手撕题 | 09.将两个有序数组合并成一个有序数组_开合跳、色盲测试、展示手心手背-程序员宅基地

文章浏览阅读842次,点赞23次,收藏18次。一、知识点斐波那契数列(Fibonacci sequence),又称黄金分割数列,是一个经典的数学数列,起始于 0 和 1,后续的每一项都是前两项的和。指针指向下一个节点,从而形成链表。一、知识点归并排序:归并排序(Merge sort)是建立在归并操作上的一种有效、稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一。//这题我写的非常恼火,有时候题目整的的谜语人一样,例子也不能多给几个,就靠提交的过程中遇到的错误去判错,简直是一种侮辱package mainimport (_开合跳、色盲测试、展示手心手背

C++数字图像处理篇之图像加马赛克_mfc马赛克-程序员宅基地

文章浏览阅读5.4k次,点赞4次,收藏15次。马赛克是一种广为使用的图像处理手段,它是将影像特定区域的色阶细节劣化并造成色块打乱的效果。这种模糊看样子像一个个小格子,所以被称为马赛克。马赛克主要的目的就是使图像内容无法辨认,以保护特殊图像内容。这样的例子我们经常遇到,例如在新闻中保护当事人的隐私。图像加马赛克类似与图像重采样。我们在实验中采用的算法就是比较简单的加马赛克的算法,就是按固定间隔取像素点,将图片分割成一些嗯小块,每个小块的灰度..._mfc马赛克

Linux>命令参数介绍_linux >> 参数-程序员宅基地

文章浏览阅读169次。ls 命令常用选项及功能ls命令的基本格式 ls [选项] 目录名称选项功能-a显示全部的文件,包括隐藏文件(开头为 . 的文件)也一起罗列出来,这是最常用的选项之一。-A显示全部的文件,连同隐藏文件,但不包括 . 与 … 这两个目录。-d仅列出目录本身,而不是列出目录内的文件数据。-fls 默认会以文件名排序,使用 -f 选项会直接列出结果..._linux >> 参数

以太网 知识-MII接口 RMII / SMII接口 MII / RGMII接口_mii/rmii怎么接两个phy-程序员宅基地

文章浏览阅读2w次。本文主要分析MII/RMII/SMII,以及GMII/RGMII/SGMII接口的信号定义,及相关知识,同时本文也对RJ-45接口进行了总结,分析了在10/100模式下和1000M模式下的设计方法。1. MII接口分析 MII接口提供了MAC与PHY之间、PHY与STA(Station Management)之间的互联技术,该接口支持10Mb/s与100Mb/s的数据传输速率,数据传输的位宽为4位。 提到MII,就有可能涉及到RS,PLS,STA等名词术语,下面讲一下他们之间对应的关系_mii/rmii怎么接两个phy

随便推点

Windows 7 新功能 - 问题步骤记录器-程序员宅基地

文章浏览阅读2.6k次。Windows 7 新功能 - 问题步骤记录器_问题步骤记录器

【CISSP备考】第八章-软件开发安全-程序员宅基地

文章浏览阅读488次。记录CISSP备考笔记

QML 自定义组件(时钟)_qt6 qml添加自定义组件-程序员宅基地

文章浏览阅读1k次,点赞2次,收藏2次。在 QML 开发过程中,经常需要自定义组件,这有利于我们的代码复用性、模块化、以及扩展性。通过使用自定义组件,不但可以提高开发效率,降低维护成本,还可以快速构建出功能丰富、灵活可扩展的 QML 应用程序。_qt6 qml添加自定义组件

计算机操作系统第三章自测题-处理机调度与死锁-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏20次。1、在单处理器的多进程系统中,进程什么时候占有处理器以及决定占用时间的长短是由( )决定的。A、进程运行时间    B、进程的特点和进程调度策略C、进程执行的代码   D、进程完成什么功能进程调度的时机与进程特点有关,如进程是否为CPU繁忙型还是I/O繁忙型、自身的优先级等。但是仅这些特点是不够的,能否得到调度还取决于进程调度策略,若采用优先级调度算法,则进程的优先级才起作用。..._在选择处理器调度算法时,为了使短作业、长作业及交互作业用户都比较满意,应采用( ).a基于优先权的剥夺调度算法b响应比优先算法c时间片轮转法d多级反馈队列调度算法e短作业优先调度算法ffcfs调度算法

[MySQL] 查看正在执行的sql语句 show processlist_show processlist 能显示sql 语句吗-程序员宅基地

文章浏览阅读8.9k次。processlist命令的输出结果显示了有哪些线程在运行可以帮助识别出有问题的查询语句,两种方式使用这个命令。 1. 进入mysql/bin目录下输入mysql admin processlist; 2. 启动mysql,输入show processlist; 如果有SUPER权限,则可以看到全部的线程,否则,只能看到自己发起的线程(这是指,当前对应的MySQL帐户..._show processlist 能显示sql 语句吗

小学生学python到底能干什么-颤抖 | 小学生都开始学Python了,十年后你还有工作么?...-程序员宅基地

文章浏览阅读156次。原标题:颤抖 | 小学生都开始学Python了,十年后你还有工作么?今 日 摘 要AI火爆全球,Python技能需求达到174%!小学生已经开始学Python,还成为高考必备项目,十年后你还有工作么?今日活动:Python数据学习交流群进群福利:超过10万人下载的10本最火数据书籍+ 1000+Python高清教学视频+ Python数据分析工具书+ 名企导师专场AI & Python专场讲座德勤...

推荐文章

热门文章

相关标签