校园论坛网站建设论文/重庆高端品牌网站建设
目录
软件测试概念、背景
软件测试员究竟做些什么
大多数软件测试员应该具备的素质
软件测试的实质
完全测试程序是不可能的
测试无法显示潜伏的软件缺陷
并非所有软件缺陷都要修复
软件测试员在产品小组中不受欢迎
术语:精准和准确
产品说明书的测试技术
产品说明书属性检查清单
产品说明书术语检查清单
测试分类
黑盒测试和白盒测试
静态测试和动态测试
动态黑盒测试
通过性测试和失效性测试
等价类划分
数据测试
边界条件
次边界条件
默认.空白、空值.零值和无
非法、错误.不正确和垃圾数据
状态测试
软件测试概念、背景
软件无处不在。然而,软件是人写的一所以不完美。
世界上有完美的软件吗?NO
世界上没有完美的软件。所有软件都可能存在缺陷、错误或漏洞,无论是操作系统、应用程序、游戏还是其他类型的软件。这些问题可能会导致功能问题、性能下降、安全漏洞或崩溃。
软件通常是由人类编写的,而人类是不完美的,因此软件也会反映出这种不完美性。即使经过严格的测试和质量控制,软件也可能在某些情况下出现问题。因此,软件的开发者通常会持续改进和更新软件,以修复问题、增加新功能和提高性能。
安全性也是一个重要问题,因为恶意软件可以利用软件的漏洞来攻击计算机系统。因此,不断更新和维护软件是保持其安全性和稳定性的关键。
总之,虽然软件可以非常出色,但没有软件可以被称为完美。它们都有潜在的问题,因此用户和开发者都需要不断努力来改进和维护软件。
软件测试是一项批判性的工作。随着当今软件的规模和复杂性日益增加,进行专业化、高效的软件测试的要求越来越迫切。太多的事情处于危机中,我们不需要更多的计算机缺陷芯片,更多崩溃的系统,更多被盗的信用卡账户。
软件测试员究竟做些什么
软件测试员的目标是尽可能早地找出软件缺陷,并确保其得以修复。
大多数软件测试员应该具备的素质
●他们是群探索者。软件测试员不会害怕进入陌生环境。他们喜欢拿到新软件,安装在自己的机器上,观看结果。
●他们是故障排除员。软件测试员善于发现问题的症结。他们喜欢解谜。
●他们不放过任何蛛丝马迹。软件测试员总在不停地尝试。他们可能会碰到转瞬即逝或者难以重现的软件缺陷。他们不会当做是偶然而轻易放过,而会想尽一切可能去发现它
们。
●他们具有创造性。测试显而易见的事实,对软件测试员来说还不够。他们的工作是要设想出富有创意甚至超常的手段来寻找觖陷。
●他们是群追求完美者。他们力求完美,但是当知道某些无法企及时,不去苛求,而是尽力接近目标。
●他们判断准确。软件测试员要决定测试内容、测试时间,以及看到的问题是否是真正的缺陷。
●他们注重策略和外交。软件测试员常常带来的是坏消息。他们必须告诉程序员,你的孩子(程序)很丑。优秀的软件测试员知道怎样策略和职业地处理这些问题,也知道如何和不够冷静的程序员合作。
●他们善于说服。软件测试员找出的缺陷有时被认为不重要,不用修复。测试员要善于清晰地表达观点,说明软件觖陷为何必须修复,并推进缺陷的修复。
软件测试的实质
完全测试程序是不可能的
软件测试新手可能认为,可以在拿到软件后进行完全测试,找出所有的软件缺陷,确保软件完美无缺。遗憾的是,这是不可能的,即使最简单的程序也不行,主要有如下4个原因:
●输入量太大。
●输出结果太多。
●软件执行路径太多。
●软件说明书是主观的。可以说从旁观者来看是缺陷。
测试无法显示潜伏的软件缺陷
例子:检查房间发现了虫子,那你可以说“这间房子一定有虫子”。但是,如果检查房间之后,没有看到虫子,你能肯定的说“这间房子一定没有虫子”吗?当然不能。
软件测试 可以报告软件缺陷存在,却不能报告软件缺陷不存在。你可以进行测试,发现并报告软件缺陷,但是任何情况下都不能保证软件缺陷没有了。唯一的方法是继续测试,可能还会找到一些。
并非所有软件缺陷都要修复
在软件测试中令人沮丧的是,虽然测试员尽了最大的努力,但并非找出的所有软件缺陷都要修复。不要泄气一这 并不意味着软件测试员未达到目的,或者项目小组将发布质量欠佳的产品。项目小组需要进行取舍,根据风险决定哪些缺陷要修复,哪些不需要修复。
不需要修复软件缺陷的原因有几个:
●没有足够的时间。在任何一个项目中,通常是软件功能太多,而代码编写人员和软件测试人员太少,而且进度中没有留出足够的空间来完成项目。假如你应在制作税务处理程序,4月15日(赶在应付税务检查之前一 译者注)是不可更改的交付期限一-必须按时完成软件。
●不算真正的软件缺陷。也许有人会说:“这不算软件缺陷,而是-项功能。”很多情况下,理解错误、测试错误或者说明书变更会把可能的软件缺陷当做功能来对待。
●修复的风险太大。遗憾的是,这些情形很常见。软件本身是脆弱的、难以理清头绪,有点像一团乱麻,修复一个软件缺陷可能导致其他软件缺陷出现。在紧迫的产品发布进度压力下,修改软件将冒很大的风险。不去理睬已知的软件缺陷,以避免造成新的、未知的缺陷的做法也许是安全之道。
●不值得修复。虽然有些不中听,但是事实。不常出现的软件缺陷和在不常用功能中出现的软件缺陷是可以放过的,可以躲过和用户有办法预防或避免的软件缺陷通常不用修复。这些都要归结为商业风险决策。
软件测试员在产品小组中不受欢迎
哈哈哈,这段还是蛮有意思的。
还记得软件测试的目标吗?
软件测试的目标是尽可能早地找出软件缺陷,确保其得以修复。
软件测试员的工作是检查和批评同事的工作、挑毛病、公布发现的问题。唉,做这项工作不会受普遍的欢迎的!
下面是保持小组成员和睦的建议:
●早点找出缺陷。这是软件测试员理所当然的工作,但是做到很难。在三个月之前而不是在产品即将发面前夕找出严重的软件缺陷,会产生更小的影响,更容易让人接受。
●控制情绪。诚然,软件测试员真心喜爱自己的工作,当发现严重的软件缺陷时非常兴奋。但是,如果兴冲冲地闯进程序员同事的房间告诉他程序代码中存在可怕的缺陷时,他是不会高兴的。
●不要总是报告坏消息。假如发现某段代码没有软件缺陷,就大声宣扬。花一点时间找程序员聊聊天。如果总是报告坏消息,别人对你就会惟恐避之不及。
术语:精准和准确
软件测试要精度还是准度很大程度上取决于产品是什么,最终取决于开发小组的目标(请恕直言)。计算器软件需要两者都达到一正确的答案就是正确的答案,错误的就是错误的。但是,可能会决定计算只精确到五位十进制数,那么,精度可以有所偏差。只要软件测试员清楚产品说明书,就可以量身定做测试程序来确认。
产品说明书的测试技术
产品说明书属性检查清单
经过深思熟虑,可称为“一字不漏”的优秀产品说明书应具有8个重要的属性:
●完整。是否有遗漏和丢失?完全吗?单独使用时是否包含所有内容?
●准确。既定解决方案正确吗?目标定义明确吗?有没有错误?
●精确、不含糊、清晰。描述是否一清二楚?是否有单独的解释?容易看懂和理解吗?
●一致。产品功能描述是否自相矛盾,或与其他功能有无冲突?
●贴切。描述功能的陈述是否必要?有没有多余信息?功能是否符合原来的客户要求?
●合理。在规定的预算和进度下,以现有人力、工具和资源能否实现?
●代码无关。产品说明书是否坚持定义产品,而不是定义其软件设计、架构和代码?
●可测试性。功能能否测试?给测试员提供的建立验证操作的信息是否足够?
在测试产品说明书、阅读文字、检查图表时,要仔细对照_上述清单,看看它们是否具有这些属性。如果不具备,那就是发现了需要指出的缺陷。.
产品说明书术语检查清单
在审查产品说明书时,作为前一个清单的补充,还有一个问题用语检查清单。问题用语通常表明功能没有仔细考虑一可能归结于前文所述的某一属性。从产品说明书中找出这样的用语,仔细审查它们在上下文中是怎样使用的。产品说明书后面可能会阐明或掩饰,也可能含糊其辞一无论是哪种情况,都可视为软件缺陷。
●总是、每一种、所有、没有、从不。如果看到此类绝对或肯定的描述,需要确认是这样
的。软件测试员要考虑违反这些情况的用例。
●当然、因此、明显、显然、必然。这些话意图说服你接受假定情况,不要中了圈套。
●某些、有时、常常、通常、惯常、经常、大多、几乎。这些话太过模糊。 “有时”发生,作用的功能无法测试。
●等等、诸如此类、依此类推、例如。以这样的词结束的功能清单无法测试。功能清单要
绝对或者解释明确,以免让人对功能清单内容产生迷惑。
●良好、迅速、廉价.高效、小、稳定。这些是无法量化的术语,它们无法测试。如果说
明书中出现这些用语,必须进一步准确定 义其含义。
●处理,进行,拒绝,跳过,排除。这些用语可能会隐藏大量需要说明的功能。
●如.... 那么..... (没有否则)。 找出有“如...那么..”.而缺少配套的“否则”结构的陈述。想想“如果”没有发生会怎样。
测试分类
黑盒测试和白盒测试
软件测试员用于描述测试方式的两个术语是黑盒测试(black-boxtesting)和白盒测试(white-box testing)。
在黑盒测试中,软件测试员只需知道软件要做什么一而 无法看到盒子里的软件是如何运行的。只要进行一些输入,就能得到某种输出结果。他不知道软件如何运行、为什么会这样,只知道程序做了什么。
在白盒测试(有时称为透明盒测试(clear- box testing))中,软件测试员可以访问程序员的代码,并通过检查代码的线索来协助测试-可以看到盒子里面。 测试员根据代码检查结果判断或多或少可能出错的数目,并据此定制测试。
静态测试和动态测试
描述软件测试的另外两个术语是静态测试(static testing)和动态测试(dynamic testing)。
静态测试是指测试不运行的部分一只是检 查和审核;
动态测试是指通常意义上的测试一-使用和运行软件。
对这些术语最好的一个类比是
检查二手汽车的过程。踢一下轮胎、 看看车漆、打开引擎盖检查都属于静态测试技术。
发动汽车、昕听发动机声音、上路行驶都属于动态测试技术。
动态黑盒测试
不深入代码细节测试软件的方法称为动态黑盒测试。它是动态(dynamic) 的,因为程序在运行----软件测试员像用户一样使用它;
同时,它是黑盒子(black-box), 因为测试时不知道程序如何工作----带上 了眼罩。测试员输入数据,接受输出、检验结果。动态黑盒测试常常被称为行为测试,因为测试的是软件在使用过程中的实际行为。
清楚了被测试软件的输人和输出之后,接下来要开始定义测试用例(test case)。
测试用例是指进行测试时使用的特定输人,以及测试软件的过程步骤。
通过性测试和失效性测试
测试软件有两种基本方法:
通过性测试(test-to-pass) 和失效性测试(test-to-fail).
在进行通过性测试时,实际上是确认软件至少能做什么,而不会考验其能力。软件测试员并不需要想尽办法让软件崩溃,仅仅运用最简单、最直观的测试用例。既然软件测试的目标是找出软件缺陷,为什么还要进行通过性测试呢?为什么不尽量去设法找出软件缺陷呢?不,开始不是这样的。
原因就是:从简单的开始测试,就像测试一辆刚生产的汽车,肯定是先上去开一下看能不能启动,而不是一上去就尽全力的高速的开,这样容易出问题。
确信软件在普通情况下能正确运行之后,就可以采取各种手段搞垮软件来找出软件缺陷了。纯粹为了破坏软件而设计和执行的测试用例称为失效性测试或错误强制测试。
失效性测试通常不会突然出现。虽然看起来与通过性测试差不多,但是它是蓄意攻击软件的薄弱环节。
等价类划分
等价类划分是一种测试设计技术,用于将测试数据分成不同的等价类,以便在测试过程中更有效地覆盖不同的情况。这种方法通常用于软件测试,以确保对不同情况的测试覆盖足够广泛,同时避免冗余的测试用例。等价类划分有助于提高测试的效率,同时确保系统的可靠性和质量。
等价类划分的基本思想是将输入值分为几个等效的类别,以便在每个类别中执行相同的测试操作,因为可以合理地假设,如果测试一个类别中的一个值,那么测试其他类别中的值应该产生相似的结果。通常,等价类划分包括以下步骤:
- 识别输入:首先,确定要测试的系统或组件的输入。这可以是函数、方法、或系统接受的任何形式的输入数据。
- 确定等价类:将所有可能的输入值分成不同的等价类,每个等价类中的值都应该产生相似的结果。等价类通常是基于输入数据的特征和属性来划分的。例如,如果测试一个要求输入年龄的系统,等价类可以是儿童、青少年和成年人。
- 选择代表性值:对于每个等价类,选择一个或多个代表性的值来进行测试。这些代表性值通常是类别中最有代表性或最具挑战性的值。
- 设计测试用例:为每个等价类设计测试用例,以验证系统对该类别中的输入的处理方式。测试用例应该包括输入数据、预期的输出或行为,以及执行测试所需的步骤。
- 执行测试:执行设计的测试用例,并记录测试结果。
- 重复上述步骤:根据需要,重复上述步骤来覆盖不同的等价类。
通过等价类划分,可以在保持测试覆盖的同时,减少测试用例的数量。这有助于节省时间和资源,同时确保对系统的不同方面进行充分测试。等价类划分是测试用例设计的重要技术,特别在功能性测试、边界值测试和错误处理测试方面非常有用。
举个例子
假设有一个简单的用户登录系统,用户需要输入用户名和密码才能登录。我们要使用等价类划分来设计测试用例,以确保系统在不同情况下能够正确工作。
1、识别输入:用户登录系统的输入是用户名和密码。
2、确定等价类:我们可以将用户名和密码的等价类划分为以下几类:
空输入:没有用户名和密码。
有效用户名和密码:合法的用户名和密码。
无效用户名:用户名不存在系统中。
无效密码:用户名存在,但密码不匹配。
3、选择代表性值:对于每个等价类,选择代表性的值。
空输入:用户名为空,密码为空。
有效用户名和密码:例如,用户名 "user123",密码 "password123"。
无效用户名:一个不存在的用户名,例如, "nonexistentuser"。
无效密码:有效用户名但不正确的密码,例如,用户名 "validuser",密码 "wrongpassword"。
4、设计测试用例:为每个等价类设计测试用例。
对于空输入,测试用例应该包括一个用户名为空和密码为空的情况。
对于有效用户名和密码,测试用例应该包括一个合法的用户名和密码的情况。
对于无效用户名,测试用例应该包括一个不存在的用户名的情况。
对于无效密码,测试用例应该包括一个存在的用户名但不正确的密码的情况。
5、执行测试:执行这些测试用例,输入相应的用户名和密码,然后记录系统的响应(例如,成功登录、失败登录等)。
数据测试
对软件最简单的认识就是将其分成两部分:数据( 或其范围)和程序。数据包括键盘输入、鼠标单击、磁盘文件、打印输出等。程序是指可执行的流程、转换、逻辑和运算。软件测试常用的一个方法是把测试工作按同样的形式划分。
对数据进行软件测试,就是在检查用户输入的信息、返回的结果以及中间计算结果是否正确。
数据的例子如下:
●在文字处理程序中输入的文字。
●电子表格中输入的数字。
●太空游戏中余下的射击次数。
●图像处理软件打印的图片。
●存放在软盘中的备份文件。
●通过调制解调器在电话线上发送的数据。
边界条件
边界条件是特殊情况,因为编程从根本.上说在边界上容易产生问题。软件是很极端的一一即要 么对要么不对。令人奇怪的是如果对一定范围的数据进行操作,程序员往往在处理大量中间数值时都是对的,但是可能在边界处出现错误。
如果软件测试问题包含确定的边界,那么看看以下的数据类型:.
数值、速度、字符、地点、位置、尺寸、数量
同时,考虑这些类型的下述特征:
第一个/最后一个、最小值/最大值、开始/完成、超过/在内、空/满、最短/最长、最慢/最快、最早/最迟、最大/最小、最高/最低、相邻/最远这些绝不是确定的列表,而是一些可能出现的边界条件。每一个软件测试问题各不相同,可能包含各种不同的数据以及其独特的边界。
测试边界
由于软件容易在边界上产生缺陷,因此,如果要从等价划分中选择包含的数据,从边界条件中选择会找出更多的软件缺陷。
然而,仅仅测试边界线上的数据点往往不够充分。最好测试一下边界的两边。
技巧
提出边界条件时,一定要测试临近边界的有效数据,测试最后一个可能有效的数据,同时测试刚超过边界的无效数据。
越界测试的做法通常是简单地对于最大值加1或者很小的数,以及对于最小值减1或者很小的数,例如:
●第一个减1/最后一个加1。
●开始减1/完成加1。
●空了再减/满了再加。
●慢上加慢/快上加快
●最大数加1/最小数减1。
●最小值减1/最大值加1。
●刚好超过/刚好在内。
●短了再短/长了再长。
●早了更早/晚了更晚。
●最高加1/最低减1。
例子
如果文本输入域允许输入1~255个字符,就尝试输入1个字符和255个字符代表合法划分的数据。还可以输入254个字符作为合法输入。输入0个字符和256个字符代表非法划分的数据。
次边界条件
上面讨论的普通边界条件是最容易找到的。它们在产品说明书中有定义,或者在使用软件的过程中明显。而有些边界在软件内部,最终用户几乎看不到,但是软件测试员仍有必要进行检查。这样的边界条件称为次边界条件或者内部边界条件。
寻找这样的边界不要求软件测试员成为程序员或者具有阅读源代码的能力,但是确实要求大体了解软件的工作方式。
2的幂和ASCII表是这方面的两个例子。
所测试的软件可能有许多其他的次边界条件,所以软件测试员应和开发小组的程序员交流,看看他们能否对其他的应该测试的次边界条件提供建议。
2的幂
在建立等价划分时,要考虑等价划分中是否需要包含2的幕的边界条件。例如,如果软件接受用户输入1~1000范围内的数字,谁都知道在合法区间中包含1和1000,也许还要有2和999。
为了覆盖任何可能的2的幂的次边界,还要包含临近4位边界的14、15和16, 以及临近字节边界的254、255和256。
ASCLL表
注意,表5-2不是良好的、连续的列表。0~9的ASCII值是48~57。斜杠字符(1)在数字0的前面,而冒号字符(:)在数字9的后面。大写字母A~Z对应的ASCII值是65~90。小写字母对应的ASCII值是97~122。这些情况都代表次边界条件。
如果测试进行文本输入或文本转换的软件,在定义数据划分包含哪些值时,参考一下ASCII表是相当明智的。例如,如果测试的文本框只接受用户输入,字符A~Z和a~z,就应该在.非法划分中包含ASCII表中这些字符前后的值一@、 [、'和{。
默认.空白、空值.零值和无
另一种看起来很明显的软件缺陷来源是当软件要求输入时一一比如在文本框中一不是没有输入正确的信息,而是根本没有输入任何内容,可能单单按了Enter键。这种情况在产品说明书中常常忽视,程序员也经常遺忘,但是在实际使用中却时有发生。
好的软件会处理这种情况。它通常将输入内容默认为边界内的最小合法值,或者在合法划分中间的某个合理值;或者返回错误提示信息。
非法、错误.不正确和垃圾数据
数据测试的最后一种类 型是垃圾数据。这是失效性测试的对象。经过边界测试、次边界测试和默认值测试等通过性测试证实软件能够工作之后,就该进行垃圾数据测试了。
从纯粹的软件测试观点来看,如果利用前述技术全面测试证明软件能够工作了,就不必再做破坏实验。然而,现实中考虑到软件要应付用户千奇百怪的使用方式,这样做肯定没错。
如果想一想今天打包后的软件将售出数亿份拷贝,就完全可以断定一定有一部分用户会错误地使用软件。如果错误操作导致崩溃或者数据丢失,用户不会责怪自己一而 会指责软
件。软件如果没有按照用户的意愿运行,就算有一个缺陷,经常是这样。
非法、错误、不正确和垃圾数据测试是很有意思的。
例如:
- 如果软件要求输入数字,就输入字母。
- 如果软件只接受正数,就输入负数。
- 如果软件对日期敏感,就看它在公元3000年是否还能正常工作。
- 假装有“肥胖的手指”,同时按下多个键。
此类测试没有实际的规则,只是设法破坏软件。要发挥创造力,要会走偏门。在此工作中寻找乐趣吧!
状态测试
到目前为止,我们测试的是数据一数字、 文字、软件输入和输出。
软件测试的另一方面是通过不同的状态验证的程序的逻辑流程。软件状态(software state)是指软件当前所处的条件或者模式,参见图5-8和图5-9。
图5-8显示了处于铅笔绘画状态的Windows画图程序,这是软件启动时的初始状态。注意,铅笔工具被选中,光标的形状很像铅笔,可以在屏幕上画出细线。图5-9显示了处于喷涂状态的Windows画图程序。在该状态下,喷枪工具被选中,喷枪大小确定,光标的形状很像喷漆罐,绘制效果很像喷漆。
进一步观察画图程序提供的全部选项一所有的工具、 菜单、颜色等。一旦选中其中一项,使软件改变了外观、菜单或者某些操作,就是改变了该软件的状态。软件通过代码执行进入某一个分支,触发一些数据位,设置某些变量,读取某些数据,转入一个新的状态。注意软件测试员必须测试程序的状态及其转换。
参考书籍:软件测试原书第二版
相关文章:

软件测试学习(一)基础概念、实质、说明书测试、分类、动态黑盒测试
目录 软件测试概念、背景 软件测试员究竟做些什么 大多数软件测试员应该具备的素质 软件测试的实质 完全测试程序是不可能的 测试无法显示潜伏的软件缺陷 并非所有软件缺陷都要修复 软件测试员在产品小组中不受欢迎 术语:精准和准确 产品说明书的测试技术…...

在fastapi中实现异步
在FastAPI应用中使用异步特性可以提高并发性能,但如果您要调用的模型是同步的,可能会导致阻塞。为了实现异步处理,您可以将阻塞的操作委托给线程池或进程池,以便异步执行。 以下是一种基本方法来实现异步处理图片识别任务&#x…...

js数组去重
在JavaScript中,有很多方法可以用来去除数组中的重复项。以下是一些常见的方法: 方法一:使用Set Set是ES6中的新数据类型,它只存储唯一值。因此,我们可以利用这一特性来去重。 let array [1, 2, 3, 2, 1, 4, 3, 5,…...

【前端】根据后端返回的url进行下载并设置文件下载名称
在我们项目当中存储文件是存储到厂商的服务器上的,然后厂商返回一个可以直接下载url地址,但是前端使用这个url下载的时候永远都是保存一个名字,这时候我们就需要设置文件保存的名称, 那么如何实现呢?使用了fet…...

《视觉SLAM十四讲》公式推导(一)
文章目录 CH3 三维空间刚体运动CH3-1 旋转矩阵的推导CH3-2 旋转矩阵是正交矩阵的证明CH3-3 变换矩阵的逆的推导CH3-4 罗德里格斯公式推导 CH3 三维空间刚体运动 CH3-1 旋转矩阵的推导 (1)二维空间中的旋转矩阵 易得 { x ′ ∣ O P ′ ∣ c o s ( θ …...

简单好用的解压缩软件:keka 中文 for mac
Keka是一款功能全面、易于使用的文件压缩和解压缩软件,为Mac用户提供了便捷的文件管理工具。它支持多种压缩格式,具有快速解压和强大的压缩功能,让您能够轻松地处理各种文件压缩需求。 隐私非常重要 安全共享只需设置密码并创建高度加密的文…...

【UE 插件】UE4 虚幻引擎 插件开发(带源码插件打包、无源码插件打包) 有这一篇文章就够了!!!
目录 0 引言1 快速入门1.1 新建插件的前提1.2 创建插件步骤1.3 打包插件 2 无源代码的插件制作3 插件详细介绍3.1 插件的使用方法3.1 UE 预置插件模版3.1.1 空白3.1.2 纯内容3.1.3 编辑器独立窗口3.1.4 编辑器工具栏按钮3.1.5 编辑器模式3.1.6 第三方库3.1.7 蓝图库 3.2 插件中…...

C# CodeFormer 图像修复
效果 项目 代码 using Microsoft.ML.OnnxRuntime; using Microsoft.ML.OnnxRuntime.Tensors; using OpenCvSharp; using System; using System.Collections.Generic; using System.Drawing; using System.Drawing.Imaging; using System.Windows.Forms;namespace 图像修复 {p…...

Android Studio的笔记--HttpURLConnection使用GET下载zip文件
HttpURLConnection使用GET下载zip文件 http get下载zip文件MainActivity.javaAndroidMainfest.xmlactivity_main.xmllog http get下载zip文件 MainActivity.java 用HttpURLConnection GET方法进行需注意: 1、Android 9及以上版本需要设置这个,否则会有…...

phantom3D模体
phantom是人头模型,分为2D和3D两种,matlab中可直接调用phantom(size)生成2D数据,如图1,而三维需要对应函数文件,下载:3D 图1 2D phantom 3D模体为一个椭球体,只能生成xyz三个方向相同维度的模…...

贪心算法解决批量开票限额的问题
具体问题:批量订单开票 限制:1.开最少的张数 2.每张限额10w # 贪心算法 def split_invoice_by_item(items):items_sorted sorted(items, keylambda x: x.price, reverseTrue)invoices []for item in items_sorted:# 尝试将商品加入已有的发票中added …...

Unity后台登录/获取数据——BestHTTP的使用Get/Post
一、使用BestHTTP实现登录功能(Post) 登录具体的步骤如下: 1:传入你的用户名和密码,这是一条包括链接和用户名密码的链接 2:使用BestHTTP的Post功能将链接传到服务器后台 3:后台拿到了你传送…...

【Windows日志】记录系统事件的日志
文章目录 一、概要二、Windows日志介绍 2.1 应用程序日志2.2 系统日志2.3 安全日志 三、查看与分析日志四、常见事件ID 4.1 登录事件 4.1.1 4624登陆成功4.1.2 4625登陆失败 4.2 特权使用4.3 账户管理事件4.4 账户登录事件5.2 事件ID汇总 一、概要 Windows主要有以下三类日…...

物联网开发学习笔记——目录索引
什么是物联网? 物联网的英文名称是Internet of Things。IoT则是Internet of Things的缩写。 通俗地说,就是把设备与互联网连接起来,进行信息交互。 目录 一、开发环境配置 工欲善其事必先利其器,首先是开发环境配置。 开发环…...

Prometheus:优秀和强大的监控报警工具
文章目录 概述Prometheus的底层技术和原理数据模型数据采集数据存储查询语言数据可视化 Prometheus的部署Prometheus的使用配置数据采集目标查询监控数据设置警报规则 查看数据可视化总结 概述 Prometheus是一款开源的监控和警报工具,用于收集和存储系统和应用程序…...

Appium
# 获取元素和屏幕截图 echo on adb shell uiautomator dump /sdcard/app.uix adb pull /sdcard/app.uix F:\APP\app.uixadb shell screencap -p /sdcard/app.png adb pull /sdcard/app.png F:\APP\app.png卸载appium npm uninstall appium -g 重新安装appium npm install -g a…...

自动驾驶学习笔记(五)——绕行距离调试
#Apollo开发者# 学习课程的传送门如下,当您也准备学习自动驾驶时,可以和我一同前往: 《自动驾驶新人之旅》免费课程—> 传送门 《2023星火培训【感知专项营】》免费课程—>传送门 文章目录 前言 调试内容 打开在线编辑器 打开pl…...

【Android】VirtualDisplay创建流程及原理
Android VirtualDisplay创建流程及原理 Android DisplayManager提供了createVirtualDisplay接口,用于创建虚拟屏。虚拟屏可用于录屏(网上很多资料说这个功能),分屏幕(比如一块很长的屏幕,通过虚拟屏分出不…...

Linux服务器快速搭建pytorch
Linux服务器搭建pytorch 文章目录 Linux服务器搭建pytorch一、使用FileZilla传输Anaconda二、激活Anaconda环境1.创建一个虚拟环境2.使用已有项目生成requirements.txt3.在虚拟环境中使用requirements.txt安装其他项目相关库 总结 一、使用FileZilla传输Anaconda 提示…...

声音克隆,定制自己的声音,使用最新版Bert-VITS2的云端训练+推理记录
说明 本次训练服务器使用Google Colab T4 GPUBert-VITS2库为:https://github.com/fishaudio/Bert-VITS2,其更新较为频繁,使用其2023.10.12的commit版本:主要参考:B站诸多大佬视频,CSDN:https://blog.csdn.…...

LeetCode讲解篇之198. 打家劫舍
LeetCode讲解篇之198. 打家劫舍 文章目录 LeetCode讲解篇之198. 打家劫舍题目描述题解思路题解代码 题目描述 题解思路 该问题可以通过递推来完成 递推公式: 前n间房的最大金额 max(前n-1间房的最大金额, 前n-2间房的最大金额第n-1间房的最…...

【下载共享文件】Java基于SMB协议 + JCIFS依赖下载Windows共享文件(亲测可用)
这篇文章,主要介绍如何使用JCIFS依赖库,基于SMB协议下载Windows共享文件。 目录 一、搭建Windows共享文件服务 1.1、创建共享文件目录 1.2、添加文件...

【评分卡实现】应用Python中的toad.ScoreCard函数实现评分卡
逻辑回归已经在各大银行和公司都实际运用于业务。之前的文章已经阐述了逻辑回归三部曲——逻辑回归和sigmod函数的由来、...

【数据结构】双链表的相关操作(声明结构体成员、初始化、判空、增、删、查)
双链表 双链表的特点声明双链表的结构体成员双链表的初始化带头结点的双链表初始化不带头结点的双链表初始化调用双链表的初始化 双链表的判空带头结点的双链表判空不带头结点的双链表判空 双链表的插入(按值插入)头插法建立双链表带头结点的头插法每次调…...

解析找不到msvcp140.dll的5个解决方法,快速修复dll丢失问题
在使用计算机过程中,我们也会遇到各种各样的问题。其中,找不到msvcp140.dll修复方法是一个非常普遍的问题。msvcp140.dll是一个动态链接库文件,它是Microsoft Visual C 2015 Redistributable的一部分。这个文件包含了许多用于运行C程序的函…...

代码管理工具 gitlab实战应用
系列文章目录 第一章 Java线程池技术应用 第二章 CountDownLatch和Semaphone的应用 第三章 Spring Cloud 简介 第四章 Spring Cloud Netflix 之 Eureka 第五章 Spring Cloud Netflix 之 Ribbon 第六章 Spring Cloud 之 OpenFeign 第七章 Spring Cloud 之 GateWay 第八章 Sprin…...

小谈设计模式(27)—享元模式
小谈设计模式(27)—享元模式 专栏介绍专栏地址专栏介绍 享元模式模式结构分析享元工厂(FlyweightFactory)享元接口(Flyweight)具体享元(ConcreteFlyweight)非共享具体享元࿰…...

网络代理技术:隐私保护与安全加固的利器
随着数字化时代的不断演进,网络安全和个人隐私保护变得愈发重要。在这个背景下,网络代理技术崭露头角,成为网络工程师和普通用户的得力助手。本文将深入探讨Socks5代理、IP代理,以及它们在网络安全、爬虫开发和HTTP协议中的关键应…...

orgChart.js组织架构图
OrgChart.js是什么? 基于ES6的组织结构图插件。 特征 支持本地数据和远程数据(JSON)。 基于CSS3过渡的平滑扩展/折叠效果。 将图表对齐为4个方向。 允许用户通过拖放节点更改组织结构。 允许用户动态编辑组织图并将最终层次结构保存为…...

华纳云:SQL Server怎么批量导入和导出数据
在SQL Server中,您可以使用不同的方法来批量导入和导出数据,具体取决于您的需求和数据源。以下是一些常见的方法: 批量导入数据: 使用SQL Server Management Studio (SSMS) 导入向导: 打开SQL Server Management Stud…...