软件评测师 综合测试 真题笔记

计算机组成原理

用作科学计算为主的计算机,其对主机的运算速度要求很高,应该重点考虑 CPU的主频和字长,以及内存容量;

用作大型数据库处理为主的计算机,其对主机的内存容量、存取速度和外存储器的读写速度要求较高;

对于用作网络传输的计算机,则要求有很高的I/O速度

计算机系统的存储器按所处的位置可分为内存和外存。

按构成存储器的材料可分为磁存储器、半导体存储器和光存储器。

按存储器的工作方式可分为读写存储器和只读存储器。

按访问方式可分为按地址访问的存储器和按内容访问的存储器。

按寻址方式可分为随机存储器、顺序存储器和直接存储器。

相联存储器是一种按内容访问的存储器。

处理机主要由处理器、存储器和总线组成,总线包括: 数据总线、地址总线、控制总线

程序计数器(PC)用于存储指令的地址,CPU根据该寄存器的指令从内存读取待执行的指令,该寄存器可以由程序员访问。

指令寄存器对用户是完全透明

循环冗余校验码(CRC)利用生成多项式进行编码。设数据位为k位,校验位为r位,则CRC码的格式为:k个数据位之后跟r个校验位

操作系统

文件级安全管理,是通过系统管理员或文件主对文件属性的设置来控制用户对文件的访问。通常可设置以下几种属性:

•只执行:只允许用户执行该文件,主要针对.exe和.com文件。

•隐含:指示该文件为隐含属性文件。

•索引:指示该文件是索引文件。

•修改:指示该文件自上次备份后是否还被修改。

•只读:只允许用户读该文件。

•读/写:允许用户对文件进行读和写。

•共享:指示该文件是可读共享的文件。

•系统:指示该文件是系统文件。

网络

数据库

软件工程

软件定义时期的任务是确定软件开发工程必须完成的总目标,这个时期通常进一步划分成三个阶段,即问题定义、可行性研究和需求分析。

在这个阶段需要完成制定软件项目计划、进行需求分析和制定验收测试计划等任务。

可行性分析和项目开发计划主要确定软件的开发目标及其可行性,要进行问题定义、可行性分析,制定项目开发计划。

需求分析阶段的任务是准确地确定软件系统必须做什么,确定软件系统必须具备哪些功能。

软件设计是软件工程的技术核心,其任务是确定如何实现软件系统,包括模块分解,确定软件的结构,模块的功能和模块间的接口,以及全局数据结构的设计,设计每个模块的实现细节和局部数据结构。

编码的任务是用某种程序语言为每个模块编写程序。

敏捷方法中,重构是一种重新组织技术,重新审视需求和设计,重新明确地描述它们以符合新的和现有的需求,可以简化构件的设计而无须改变其功能或行为。

RUP应用了角色、活动、制品和工作流4种重要的模型元素,其中角色表述"谁做",制品表述"做什么",活动表述"怎么做",工作流表述"什么时候做"。

初启阶段结束时产生一个构想文档、一个有关用例模型的调査、一个初始的业务用例、一个早期的风险评估和一个可以显示阶段和迭代的项目计划等制品:

精化阶段结束时产生一个补充需求分析、一个软件架构描述和一个可执行的架构原型等制品;

构建阶段结束时的成果是一个准备交到最终用户手中的产品,包括具有最初运作能力的在适当的平台上集成的软件产品、用户手册和对当前版本的描述;

移交阶段结束时产生移交给用户产品发布版本。

数据流图描述数据在系统中如何被传送或变换,以及描述如何对数据流进行变换的功能或子功能,用于功能建模;

实体关系图描述数据对象及数据对象之间的关系,用于数据建模;

状态迁移图描述系统对外部事件如何响应,如何动作,用于行为建模。

软件设计必须依据软件的需求来进行,结构化分析的结果为结构化设计提供了最基本的输入信息,其关系为:

根据加工规格说明和控制规格说明进行过程设计;

根据数据字典和实体关系图进行数据设计;

根据数据流图进行接口设计;

根据数据流图进行体系结构设计。

数据流图中加工的常用描述方法有结构化语言、判定树和判定表。

结构化语言是一种介于自然语言和形式化语言之间的半形式化语言,并没有严格的语法。其结构通常分为内层和外层,外层用来描述控制结构,采用顺序、选择和重复三种基本结构,而内层可以用接近自然语言的描述。在加工的一组动作依赖于多个逻辑条件的取值时用自然语言和结构化语言不易清晰表达,

自然语言具有二义性,不适合用来描述加工。流程图不用于描述加工。

而判定树和判定表则可以很好的表示。

N-S盒图、PAD图和程序流程图主要用于表示软件模块的执行过程。

软件设计要遵循的基本原则包括

①模块化 ②抽象 ④信息隐蔽

对象的属性表示了对象特有的与其他对象相互区分的特性。

功能内聚是指一个模块中各个部分都是完成某一个具体功能必不可少的组成部分。

信息内聚模块中可以完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。

逻辑内聚模块把几种相关的功能组合在一起,每次被调用时,根据传送给模块的判定参数来确定该模块应执行哪一种功能。

若一个模块在访问另一个模块时,通过简单数据参数来交换输入、输出信息,则这种耦合称为数据耦合。

若一组模块通过参数表传递记录信息,则这些模块之间存在标记耦合。

若一个模块通过传送开关、标志和名字等控制信息,明显地控制另一个模块的功能,则这两个模块之间的耦合为控制耦合。

若一组模块都访问同一个全局简单变量,则这组模块之间存在外部耦合。

若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合;

若一个模块直接访问另一个模块的内部数据、一个模块不通过正常入口转到另一个模块内部、两个模块有一部分程序代码重叠或者一个模块有多个入口,上述几个情形之一发生则两个模块之间就发生了内容耦合

可维护性是所有软件都应具有的基本特点,必须在开发阶段保证软件具有可维护的特点。

在系统分析阶段的复审过程中,应该指出软件的可移植性问题以及可能影响软件维护的系统界面;

在系统设计阶段的复审期间,应该从容易修改、模块化和功能独立的目的出发,评价软件的结构和过程:

在系统实施阶段的复审期间,代码复审应该强调编码风格和内部说明文档这两个影响可维护性的因素。

可测试性是可维护性的一个评价指标。

软件风险一般包括不确定性和损失,其中

不确定性是指风险可能发生,也可能不发生;

损失是当风险确实发生时,会引起的不希望的后果和损失。

在风险管理中,包括风险评价和风险控制两大步骤,其中

风险评价又包括风险识别、风险分析和风险优先级分配,

而风险控制包括风险降低、风险管理计划和风险化解。

TMM制定了5个成熟度等级:初始级,阶段定义级,集成级,管理和度量级,优化、缺陷预防和质量控制级。

正确性维护是指改正在系统开发阶段已经发生而在系统测试阶段尚未发生的错误。

适应性维护是指使应用软件适应信息技术变化和管理需求变化而进行的修改。

完善性维护为扩充功能和改善性能而进行的修改。

预防性维护是为了改进应用软件的可靠性和可维护性,为了适应未来的软硬件环境的编号,主动增加预防性的新的功能,以使应用系统适应各类变化而不被淘汰。

软件评价过程的特性包括可重复性、可再现性、公正性和客观性。

可重复性指由同一评价者按同一评价规格说明对同一产品进行重复地评价,应产生同一种可接受的结果;

可再现性指由不同评价者按同一评价规格说明对同一产品进行评价,应产生同一种可接受的结果;

公正性指评价应不偏向任何特殊的结果;

客观性指评价结果应是客观事实,不带有评价者的感情色彩或主观意见。软件评价过程的特性不包括正确性。

程序语言

一般的编译程序工作过程包括词法分析、语法分析、语义分析、中间代码生成、代码优化、目标代码生成,以及出错处理和符号表管理。

词法分析阶段是编译过程的第一阶段,这个阶段的任务是对源程序从前到后(从左到右)逐个字符地扫描,从中识别出一个个"单词"符号。

语法分析的任务是在词法分析的基础上,根据语言的语法规则将单词符号序列分解成各类语法单位,如"表达式"、"语句"和"程序"等。

语义分析阶段主要分析程序中各种语法结构的语义信息,包括检查源程序是否包含语义错误,并收集类型信息供后面的代码生成阶段使用。只有语法和语义都正确的源程序才能被翻译成正确的目标代码。

由于编译器将源程序翻译成中间代码的工作是机械的、按固定模式进行的,因此,生成的中间代码往往在时间上和空间上有很大的浪费。当需要生成高效的目标代码时,就必须进行优化。

编译是将高级语言源程序翻译成机器语言程序(汇编形式或机器代码形式),反编译是编译的逆过程。

反编译通常不能把可执行文件还原成高级语言源代码,只能转换成功能上等价的汇编程序。

汇编程序将汇编语言编写的程序翻译成机器语言程序。

编译程序的翻译方式是将高级语言源程序翻译成目标程序(汇编语言或机器语言形式),进行汇编及连接后在计算机上执行。

解释程序直接执行高级语言源程序或先翻译成某种中间代码形式再执行,不形成与源程序功能等价的目标 程序。

程序错误可分为两类:语法错误和语义错误,语法描述语言的结构(形式或样子),语义表达语言的含义。

语法错误会在编译阶段检查出来,程序中有语法错误时不能通过编译。

语义错误分为静态的语义错误和动态语义错误,

静态的语义错误是指在编译阶段发现的错误,

动态的语义错误在程序运行时出现。

加密、防火墙、安全

防火墙的基本功能是包过滤,能对进出防火墙的数据包包头中的IP地址和端口号进行分析处理,从而可以控制对特殊站点的访问、能对进出的数据包进行过滤、能对部分网络攻击行为进行检测和报笞;

但对于数据包的内容一般无法分析处理,所以防火墙本身不具备防范病毒入侵的功能,防火墙一般与防病毒软件一起部署。

安全防护策略主要有安全日志、入侵检测、隔离防护和漏洞扫描等。

安全日志是记录非法用户的登录、操作等信息,以便发现问题并提出解决措施。

入侵检测是主动采集信息,从中分析可能的网络入侵或攻击。

漏洞扫描是对软件系统及网络系统进行与安全相关的检测,找出安全隐患和可被黑客利用的漏洞。

入侵检测能够主动采集信息,分析网络攻击行为和误操作的实时保护策略。

数据安全包括存储设备(SAN)、存储优化、存储保护(双机容错)和存储管理(异地容灾)等

基本安全防护系统一般采用防火墙、入侵检测、漏洞扫描、安全审计等。针对不同的安全技术,进行测试时的测试点考虑是不同的。

在采用防火墙的应用系统中,设计的测试点主要应包括:

是否支持对HTTP、FTP、SMTP等服务类型的访问控制、

是否支持交换和路由两种工作模式、

是否考虑到防火墙的冗余设计、

是否支持对日志的统计分析功能;

对防火墙本身或受保护网段的非法攻击系统,是否提供多种警告方式以及多种级别的告警。

但是否在检测到入侵事件时,自动执行切断服务、记录入侵过程等动作是属于入侵检测系统的功能。

测试

确认是想证实在一个给定的外部环境中软件的逻辑正确性,并检查软件在最终的运行环境上是否达到预期的目标,而不是检查软件是否符合某些事先约定的标准。验证注重"过程' 确认注重"结果"。

正确的测试原则概念如下:

•测试应尽早地不断地执行。

•测试是不完全的。

•测试用例覆盖测试需求的程度称为测试覆盖度,可能存在一个用例可以覆盖多个测试需求;一个需求对应多个测试用例的情况。

•程序员应避免测试自己的程序。

功能测试用例概念如下:

•业务流程测试用例包括通过测试用例和失败测试用例。

•功能测试用例一般包括业务流程测试用例和功能点测试用例。

•通过测试用例是验证需求能否正确实现,打通流程的一类测试。

•失败测试用例是模拟一些异常业务操作,测试系统是否具备容错性。

功能测试用例的主要元素包括测试步骤、测试数据和预期结果。

要设计有效的功能测试用例,应该做到:

•测试用例应该100%地覆盖测试业务需求。

•利用场景法模拟核心业务流程的正确执行。

•利用场景法设计测试用例时,往往是一个业务流程需要多条验证数据。

•利用边界值法设计测试用例,能够验证界面输入值的边界处理是否正确。

边界值法既可以用于黑盒测试用例设计,也可以用于白盒测试用例设计。

回归测试应该执行初测时所用的全部测试用例。

接口数据测试、模块间时序测试以及全局数据测试是集成测试的内容。

缺陷的类型包括:

①功能不满足隐性需求

②功能实现不正确

③功能不符合相关的法律法规

交易执行吞吐量、交易执行响应时间以及每秒点击率是衡量业务执行效率的指标。

逻辑表达式(A&&B||C)

判定覆盖只关心判定表达式的值,即真、假分别取到即可,所以是两个测试用例。

软件错误(error)的结果是导致软件缺陷的发生;

软件故障(fault)一种内部状态;

软件失效(failure)是一种外部行为结果。

软件测试配置管理包括的4个基本活动为:配置项标识、配置项控制(变更控制)、配置状态报告、配置审计

配置项变更控制要规定测试基线,对每个基线进行描述

配置状态报告要确认过程记录、跟踪问题报告、更改请求以及更改次序等

数据库测试一般包括:数据库连接测试、数据库的健壮性,容错性和恢复能力测试、 数据库的安全测试、数据库的性能测试、数据库的容量测试、数据库对象的测试(包括定义的存储过程,视图,触发器,约束,规则等等)、数据库接口测试。

安全测试方法包括安全功能验证、安全漏洞扫描、模拟攻击实验和数据侦听。

软件质量

软件质量是软件特性的总和,是软件满足规定或潜在用户需求的能力。

产品质量

产品质量由 质量模型、外部度量、内部度量、使用质量度量 四部分组成。

外部质量和内部质量的质量模型软件的质量属性划分为六种:功能性、可靠性、易用性、效率、维护性以及可移植性

功能性是与一组功能及其指定的性质的存在有关的一组属性,包括适应性、准确性等;

软件可靠性包括成熟性、容错性、易恢复性、可靠性依从性等质量子特性。

可移植性包括以下质量子特性:适应性、易安装性、共存性、易替换性和可移植性依从性。

软件可维护性表示维护人员理解、改正、改动和改进这个软件的难易程度,其评价指标包括可理解性、可测试性和可修改性。

使用质量是从用户角度看待的质量,其属性分为四种:有效性、生产率、安全性和满意度,

功能性测试是检验适合性、准确性、互操作性、安全保密性、功能依从性的测试工作

效率测试是指在规定条件下产品执行其功能时,对时间消耗及资源利用的测试工作 .

•成熟性测试是检验软件产品是否具备为避免由软件中错误而导致失效的能力。

•易学性测试是检验软件产品是否具备使用户能学习它的应用的能力。

软件质量保证是通过预防、检查与改进来保证软件质量,是软件生命周期的管理以及验证软件是否满足规定的质量和用户的需求。它着眼于软件开发活动中的过程、步骤和产物,而不是对软件进行剖析,找出问题或进行评估。

相关推荐
Love__Tay1 小时前
【学习笔记】Python金融基础
开发语言·笔记·python·学习·金融
半导体守望者1 小时前
ADVANTEST R3764 66 R3765 67爱德万测试networki connection programming网络程序设计手册
经验分享·笔记·功能测试·自动化·制造
柠石榴2 小时前
【论文阅读笔记】《A survey on deep learning approaches for text-to-SQL》
论文阅读·笔记·深度学习·nlp·text-to-sql
田梓燊3 小时前
数学复习笔记 27
笔记
Lester_11013 小时前
嵌入式学习笔记 - freeRTOS xTaskResumeAll( )函数解析
笔记·stm32·单片机·学习·freertos
jackson凌3 小时前
【Java学习笔记】Math方法
java·笔记·学习
Humbunklung3 小时前
PySide6 GUI 学习笔记——常用类及控件使用方法(多行文本控件QTextEdit)
笔记·python·学习·pyqt
取酒鱼食--【余九】3 小时前
rl_sar实现sim2real的整体思路
人工智能·笔记·算法·rl_sar
sealaugh323 小时前
aws(学习笔记第四十三课) s3_sns_sqs_lambda_chain
笔记·学习·aws