什么是好的测试用例

《软件测试的艺术》原书第三版 - 第二章

# 第二章 软件测试的心理学和经济学 > 即使一个看起来非常简单的程序,其可能的输入与输出组合可达到数百种甚至数千种,对所有的可能情况都设计测试用例是不切合实际的。 ## 软件测试的心理学 > “软件测试就是证明软件不存在错误的过程。” > > “软件测试的目的在于证明软件能够正确完成其预定的功能。 ......
软件测试 第二章 艺术 软件

web渗透测试(14):文件上传漏洞

在本节中,我们将介绍如何使用文件上载功能来获取代码。 在Web应用程序(尤其是使用文件系统来确定应运行哪些代码的应用程序)中,如果您设法上传具有正确文件名的文件(通常取决于扩展名),则可以在服务器上执行代码。在本节中,我们将看到这些类型的攻击的基础知识。 首先,由于我们正在开发一个PHP应用程序,我 ......
漏洞 文件 web 14

web渗透测试(13):LDAP 攻击

在本节中,我们将介绍LDAP攻击。LDAP通常用作身份验证的后端,尤其是在单点登录(SSO)解决方案中。LDAP有自己的语法,我们将在以下示例中更详细地看到。 如有不懂什么是LDAP请查看 Example 1 在第一个示例中,使用您的用户名和密码连接到LDAP服务器。在这种情况下,LDAP服务器不会 ......
LDAP web 13

web渗透测试(12):命令注入

命令注入来自缺乏对作为命令一部分使用的信息的过滤和编码。最简单的示例来自使用函数system(运行命令)并将HTTP参数作为此命令的参数。 有很多方法可以利用命令注入: 例如,通过在反引号内注入命令 `id` 通过将第一个命令的结果重定向到第二个命令 | id 如果由第一个成功运行的另一个命令:&& ......
命令 web 12

RPA开发复杂流程-为什么使用编码自动化而不是低代码?

答:编码自动化可以让任何熟悉编码或脚本的人都能体验到更高的生产力、更好的复杂性管理、更高的协作和可审查性、改进的可读性和更高的性能。 ......
编码 流程 代码 RPA

使用nativephp开发桌面应用测试

2023年7月21日10:29:03 官网:https://nativephp.com/ 源码:https://github.com/NativePHP/laravel 看起像laravel团队的作品 安装:注意需要php8.1以上,laravel10以上 ``` composer create-p ......
nativephp 桌面

SpringBoot 单元测试不执行:maven-surefire-plugin 版本问题

SpringBoot 单元测试不执行:maven-surefire-plugin 版本问题 问题现象 Spring Boot 项目,在编写单元测试时,使用了 JUnit 4.13.2 以上的版本。 为了让 Maven 能自动运行单元测试,需要引入 Maven Surefire 或 Maven Fai ......

(笔记)信号完整性:差分信号——什么是差分对

一,什么是差分对 说到差分信号首先想到的是PCB或线缆上的差分对,这是差分信号的物理承载形式;那差分对是什么呢?从本质上来说仍然是传输线之间的相互关系,只是它相比于串扰更加特殊一点,更加有趣一点。 从定义来说差分对指的是:存在耦合的一对传输线。在差分对上承载的信号就是差分信令:用两个输出驱动器去驱动 ......
信号 完整性 笔记

2.为什么析构函数一般写成虚函数

# 2.为什么析构函数一般写成虚函数 在C++实现多态里,有一个关于 析构函数的重写问题:基类中的析构函数如果是虚函数,那么派生类的析构函数就重写了基类的析构函数。这里他们的函数名不相同,看起来违背了重写的规则,但实际上编译器对析构函数的名称做了特殊处理,编译后析构函数的名称统一处理成destruc ......
函数

24.vector的增加删除都是怎么做的?为什么是1.5或者是2倍?

# 24.vector的增加删除都是怎么做的?为什么是1.5或者是2倍? size()函数返回的是已用空间大小,capacity()返回的是总空间大小,capacity()-size()则是剩余的可用空间大小。当size()和capacity()相等,说明vector目前的空间已被用完,如果再添加新 ......
vector 1.5 24

22.STL中hash table扩容发生什么?

# 22.STL中hash table扩容发生什么? 在 C++ STL 中,`std::unordered_map` 和 `std::unordered_set` 是两个使用哈希表 (hash table) 作为其底层实现的容器。 当哈希表的元素数量增长到某个阈值时,就需要进行扩容。这个阈值通常是 ......
table hash STL 22

分布式测试插件 pytest-xdist 使用详解

使用背景: 大型测试套件:当你的测试套件非常庞大,包含了大量的测试用例时,pytest-xdist可以通过并行执行来加速整体的测试过程。它利用多个进程或计算机的计算资源,可以显著减少测试执行的时间。 高计算资源需求:某些测试场景可能需要大量的计算资源,例如进行复杂的计算、模拟或数据处理。在这种情况下 ......
分布式 pytest-xdist 插件 pytest xdist

Java面试题 P43:框架篇:Spring-什么是AOP,你们项目中有没有使用AOP

引入切面类依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId> </dependency> Log.class 1 import jav ......
AOP 框架 项目 Spring Java

优秀测试同学的12条准则

**一、独立且公正** 测试过程和开发过程是独立的,彼此之间没有重叠或冲突,而是互相补充。测试人员要保持公正的态度, 不轻易被业务、产品、开发说服,因为他们未必想的全。对于质量底线,要坚守,对于严重缺陷,要勇于提出反对意见。 **二、质量第一,效率第二** 质量是生命线,测试的目标是保障产品交付质量 ......
准则 同学

14.map、set是怎么实现的,红黑树是怎么能够同时实现这两种容器? 为什么使用红黑树?

# 14.map、set是怎么实现的,红黑树是怎么能够同时实现这两种容器? 为什么使用红黑树? 1.他们的底层都是以红黑树的结构实现,因此插入删除等操作都在O(lgn)时间内完成,因此可以完成高效的插入删除; 2.在这里我们定义了一个模版参数,如果它是key那么它就是set,如果它是map,那么它就 ......
容器 同时 map set 14

10.STL 中vector删除其中的元素,迭代器如何变化?为什么是两倍扩容?释放空间?

# 10.STL 中vector删除其中的元素,迭代器如何变化?为什么是两倍扩容?释放空间? size()函数返回的是已用空间大小,capacity()返回的是总空间大小,capacity()-size()则是剩余的可用空间大小。当size()和capacity()相等,说明vector目前的空间已 ......
元素 vector 空间 STL 10

Golang反射type和kind有什么区

一、前言 Go语言中的反射是由 reflect 包提供支持的,它定义了两个重要的类型 Type 和 Value 。任意值在反射中都可以理解为由 reflect.Type 和 reflect.Value 两部分组成,并且 reflect 包提供了 reflect.TypeOf 和 reflect.Va ......
Golang type kind

1.什么是STL?

# 1.什么是STL? C++STL从广义来讲包括了三类:算法,容器和迭代器。 - 算法包括排序,复制等常用算法,以及不同容器特定的算法。 - 容器就是数据的存放形式,包括顺序容器和关联式容器,顺序式容器就是list,vector等,关联式容器就是set,map等。 - 在C++中,迭代器是一种用于 ......
STL

2.解释一下什么是trivial destructor

# 2.解释一下什么是trivial destructor 什么是 trivial destructor和 non-trivial destructor 如果用户不定义析构函数,而是用系统自带的,则说明,析构函数基本没有什么用(但默认会被调用)我们称之为trivial destructor。反之,如 ......
destructor trivial

4.迭代器:++it、it++哪个好,为什么

# 4.迭代器:++it、it++哪个好,为什么 1.前置返回一个引用,后置返回一个对象 ```C++ // ++i实现代码为: int& operator++() { *this += 1; return *this; } ``` 2.前置不会产生临时对象,后置必须产生临时对象,临时对象会导致效率 ......
it

10.为什么是不可预期的问题?

# 10.为什么是不可预期的问题? delete this之后不是释放了类对象的内存空间了么,那么这段内存应该已经还给系统,不再属于这个进程。照这个逻辑来看,应该发生指针错误,无访问权限之类的令系统崩溃的问题才对啊?这个问题牵涉到操作系统的内存管理策略。delete this释放了类对象的内存空间, ......
问题 10

6.关于this指针你知道什么?全说出来

## 6.类的\*this指针有以下特点 #### 1.每个对象都有一个隐藏的this指针,但不属于对象,是编译器添加的 #### 2.this只能在成员函数中使用。全局函数、静态函数都不能使用this。 实际上,成员函数默认第一个参数为T \*const this。 如: ``` class A ......
指针 this

14.this指针调用成员变量时,堆栈会发生什么变化?

# 14.this指针调用成员变量时,堆栈会发生什么变化? 当在类的非静态成员函数访问类的非静态成员时,编译器会自动将对象的地址传给作为隐含参数传递给函数,这个隐含参数就是this指针。 即使你并没有写this指针,编译器在链接时也会加上this的,对各成员的访问都是通过this的。 例如你建立了类 ......
堆栈 指针 变量 成员 this

11.如果在类的析构函数中调用delete this,会发生什么?

# 11.如果在类的析构函数中调用delete this,会发生什么? 会导致堆栈溢出。原因很简单,delete的本质是“为将被释放的内存调用一个或多个析构函数,然后,释放内存”。显然,delete this会去调用本对象的析构函数,而析构函数中又调用delete this,形成无限递归,造成堆栈溢 ......
函数 delete this 11

9.在成员函数中调用delete this会出现什么问题?对象还可以使用吗?

# 9.在成员函数中调用delete this会出现什么问题?对象还可以使用吗? 在类对象的内存空间中,只有数据成员和虚函数表指针,并不包含代码内容,类的成员函数单独放在代码段中。在调用成员函数时,隐含传递一个this指针,让成员函数知道当前是哪个对象在调用它。当调用delete this时,类对象 ......
函数 对象 成员 delete 问题

3.什么是内存池,如何实现

# 3.什么是内存池,如何实现 内存池(Memory Pool) 是一种**内存分配**方式。通常我们习惯直接使用new、malloc 等申请内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。内存池则是在真正使用内存之前,先申请分配一定数量的、大小相 ......
内存

为什么有了gil锁还要互斥锁、 进程,线程和协程 、什么是鸭子类型

[toc] # 1 为什么有了gil锁还要互斥锁 gil:全局解释器锁,线程要执行,必须先获得到gil锁,才能执行 互斥锁:为了保证多线程并发操作数据(变量)而设置的锁,保证在加锁和释放锁之间,其他线程不能操作 gil本质也是大的互斥锁 # 出现了数据错乱,出现了多条线程操作变量,出现的并发安全问题 ......
线程 鸭子 进程 类型 gil

133.为什么不能把所有的函数写成内联函数?

# 133.为什么不能把所有的函数写成内联函数? 内联函数以代码复杂为代价,它以省去函数调用的开销来提高执行效率。所以一方面如果内联函数体内代码执行时间相比函数调用开销较大,则没有太大的意义;另一方面每一处内联函数的调用都要复制代码,消耗更多的内存空间,因此以下情况不宜使用内联函数: - 函数体内的 ......
函数 133

134.为什么C++没有垃圾回收机制?这点跟Java不太一样

# 134.为什么C++没有垃圾回收机制?这点跟Java不太一样 1. 性能:垃圾回收机制需要额外的内存和计算资源,这会引入一定的开销。C++的设计目标之一是提供高效的性能,垃圾回收机制可能会对程序的性能产生负面影响。因此,C++没有内置的垃圾回收机制,以便程序员自行管理内存等资源。 2. 控制:C ......
机制 垃圾 Java 134

124.什么是一致性哈希?

# 124.什么是一致性哈希? **一致性哈希** 一致性哈希是一种哈希算法,就是**在移除或者增加一个结点时,能够尽可能小的改变已存在key的映射关系** 尽可能少的改变已有的映射关系,一般是沿着顺时针进行操作,回答之前可以先想想,真实情况如何处理 一致性哈希将整个哈希值空间组**织成一个虚拟的圆 ......
一致性 124