【软考】错题分析1105
错题分析:
设计模式分为类设计和对象设计两种
自动化测试脚本工具:
自动化测试脚本的基本结构通常包括以下几个部分:
- 导入模块:根据需要导入测试框架和测试工具的库文件。
- 测试数据:定义测试数据,可以是硬编码在脚本中,也可以是从外部文件(如Excel、数据库)读取。
- 测试函数/方法:编写具体的测试逻辑,包括测试步骤和断言。
- 测试用例:调用测试函数/方法,执行测试。
- 结果报告:生成测试报告,显示测试结果。
接下来,我将解释你提到的几种脚本类型:
-
线性脚本(Linear Script):
- 线性脚本是
最简单
的自动化脚本形式,它按照编写的顺序执行测试步骤,没有循环或条件判断。每个步骤都是顺序执行的,一旦开始执行,就会一直运行到结束。
- 线性脚本是
-
结构化脚本(Structured Script):
- 结构化脚本使用
控制结构(如循环、条件判断)
来组织测试逻辑,使其更加灵活和强大。这种脚本可以根据测试条件动态地改变测试流程,例如,基于某个条件选择不同的测试路径。
- 结构化脚本使用
-
共享脚本(Shared Script):
- 共享脚本是指可以在多个测试用例或测试套件中
重复使用的代码
。这些脚本通常包含通用的函数或方法
,比如登录、导航到特定页面等,可以被多个测试用例调用以减少代码重复。
- 共享脚本是指可以在多个测试用例或测试套件中
-
数据驱动脚本(Data-Driven Script):
- 数据驱动脚本将
测试逻辑与测试数据
分离,测试数据通常存储在外部文件中(如CSV、Excel、数据库)。脚本在执行时会从这些数据源读取数据,并根据数据执行测试用例。这种方式使得测试用例更加灵活,可以通过改变数据来重用测试逻辑。
- 数据驱动脚本将
-
关键字脚本(Keyword Script):
- 关键字脚本是一种
高层次
的脚本编写方式,它将复杂的测试操作封装成简单的关键字
。测试人员可以使用这些关键字来构建测试用例,而不需要深入了解底层的实现细节。关键字脚本通常与数据表
结合使用,数据表中包含关键字和对应的参数。
- 关键字脚本是一种
每种脚本类型都有其适用场景,选择合适的脚本类型可以提高测试效率和维护性。在实际的自动化测试实践中,可能会根据项目需求和团队习惯混合使用这些脚本类型。
构件根据外部形态分为五类
软件构件根据外部形态可以分为以下五类:
-
独立而成熟的构件:这类构件已经得到了实际运行环境的多次检验,
隐藏了所有接口
,用户只需用规定好的命令进行使用。例如,数据库管理系统和操作系统等。 -
有限制的构件:这类构件提供了接口,指出了
使用的条件和前提
,这种构件在装配时可能会产生资源冲突、覆盖等影响,在使用时需要加以测试
。例如,各种面向对象程序设计语言中的基础类库等。 -
适应性构件:适应性构件进行了
包装或使用了接口技术,把不兼容性、资源冲突等进行了处理
,可以直接使用。这种构件可以不加修改地使用在各种环境中。例如ActiveX等。 -
装配的构件:装配的构件在安装时,已经装配在操作系统、数据库管理系统或信息系统不同层次上,使用
胶水代码
(glue code)就可以进行连接使用。目前一些软件商提供的大多数软件产品都属这一类。 -
可修改的构件:可修改的构件可以进行
版本替换
。如果对原构件修改错误、增加新功能,可以利用重新“包装”或写接口来实现构件的替换。这种构件在应用系统开发中使用得比较多。
面向对象的Solid原则
面向对象编程(OOP)中的SOLID原则是五个面向对象设计原则的首字母缩写,由罗伯特·C·马丁(Robert C. Martin)在21世纪初提出,用于提高软件的设计质量,使其易于理解和维护。这五个原则分别是:
-
单一职责原则(Single Responsibility Principle, SRP):
- 一个类应该只有一个引起它变化的原因。这意味着一个类应该只负责一个功能,或者一个职责。如果一个类承担了多个职责,这些职责就耦合在了一起,当其中一个职责需要改变时,可能会影响其他职责。
-
开闭原则(Open/Closed Principle, OCP):
- 软件实体(类、模块、函数等)应该对扩展开放,对修改关闭。这意味着在不修改现有代码的情况下,可以通过扩展来增加新功能。
-
里氏替换原则(Liskov Substitution Principle, LSP):
子类对象应该能够替换其基类对象被使用
。即在程序中使用到基类的地方,都可以无缝替换为子类对象
,而不影响程序的正确性。
-
接口隔离原则(Interface Segregation Principle, ISP):
- 不应该强迫客户依赖于它们不使用的方法。一个类对另一个类的依赖应该建立在最小的接口上。如果一个接口太大,应该将其拆分成更小的、特定的接口。
-
依赖倒置原则(Dependency Inversion Principle, DIP):
高层模块不应该依赖于低层模块,两者都应该依赖于抽象
;抽象不应该依赖于细节,细节应该依赖于抽象。这意味着在设计时,应该依赖于接口或抽象类,而不是具体的类。
SOLID原则是面向对象设计的核心原则,它们帮助开发者构建松耦合、高内聚的系统,使得软件更容易维护和扩展。遵循这些原则可以减少软件的复杂性,提高代码的可重用性和灵活性。
DNS配置文件
/etc/resolv.conf,包含主机的域名搜索顺序和DNS服务器的地址。
理解区块链和挖矿
区块链是一种分布式账本技术
,它通过加密算法
将数据块按顺序链接起来,形成一个不可篡改、去中心化的数据链
。每个区块包含一定数量的交易记录,一旦添加到链上,就无法更改或删除,确保了数据的安全性和透明性。
挖矿是区块链网络中的一种机制,特别是在比特币等加密货币系统中。挖矿者使用计算机硬件和软件解决复杂的数学问题,以验证和记录交易
,这个过程被称为“工作量证明
”。成功挖矿的矿工会获得新生成的货币作为奖励,同时确保了区块链网络的安全和交易的一致性。简而言之,区块链是安全的数据记录方式,而挖矿是维护这一系统并产生新货币
的过程。
段页式存储
段页式内存管理是一种结合了段式管理和页式管理优点的内存管理
策略。它旨在提高内存的使用效率和程序的运行性能
。段页式管理将虚拟内存分为两个层次:段和页。以下是段页式内存管理的基本概念和工作原理:
-
段(Segment):
- 段是按照程序的逻辑结构将
虚拟内存划分为若干个段
。每个段都有自己的段基址和段长度
。段的划分通常基于程序的自然分界,如代码段、数据段、堆和栈等。
- 段是按照程序的逻辑结构将
-
页(Page):
- 页是将
每个段进一步划分为固定大小的页
。页的大小通常是2的幂次方,如4KB、8KB等。每个页都有自己的页号和页内偏移
。
- 页是将
-
段表(Segment Table):
- 段表用于存储每个段的控制信息,包括段基址、段长度等。操作系统通过段表来管理各个段。
-
页表(Page Table):
- 页表用于存储每个页的控制信息,包括页框号(物理内存中的页帧号)、页状态等。每个段都有自己的页表。
-
段页式地址结构:
- 段页式管理的虚拟地址通常由
段号、页号和页内偏移
组成。例如,一个虚拟地址可以表示为(段号,页号,页内偏移)。
- 段页式管理的虚拟地址通常由
-
地址转换:
- 地址转换过程首先通过段号访问段表,获取该段的控制信息,包括段基址和段长度。然后,通过页号访问该段的页表,获取页框号。最后,将页框号、页内偏移组合成物理地址。
-
优点:
- 灵活性:段页式管理允许程序按照逻辑结构划分内存,提高了内存的灵活性和利用率。
- 保护性:每个段和页都可以设置访问权限,增强了内存的保护性。
- 共享和保护:不同的进程可以共享相同的段,同时每个进程都有自己的页表,实现了共享和保护的结合。
-
缺点:
- 复杂性:段页式管理涉及到多层次的地址转换,增加了硬件和软件的复杂性。
- 性能开销:多层次的地址转换可能会增加访问内存的时间,影响性能。
总的来说,段页式内存管理是一种有效的内存管理策略,它结合了段式管理和页式管理的优点,提高了内存的使用效率和程序的运行性能。然而,它也带来了一定的复杂性和性能开销。
操作系统微内核架构
操作系统去掉尽可能多的东西,就是微内核:
1、统一的接口,用户态和核心态无需进程识别
2、可伸缩性好
3、可一致性好
4、实时性好
5、安全可靠性高
6、支持分布式系统
缺点:难以进行良好的整体优化,进程间的相互通信开销大,内核功能代码不能被相互调用,从而服务的效率地。
原文地址:https://blog.csdn.net/LeonNo11/article/details/143534339
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!