软件评测师笔记

目录

计算机系统构成及硬件基础知识

总线

码制

操作系统知识

三态模型

计算机网络基础知识

数据库技术

数据模型的三要素

安全性知识

安全防护策略

计算机病毒

知识产权

软件工程

结构化方法

软件过程模型

类图

设计模式

软件能力成熟度模型(CMM)

软件生命周期

聚合

耦合

软件配置管理

需求的层次

软件工程概述

维护

MVC

项目管理基础知识

风险

软件测试基础

测试模型

测试分类

基于规格说明的测试

判定表法

基于结构的测试

静态测试技术

控制流分析

动态测试技术

基于控制流设计用例

语句测试

分支测试

判定测试

分支条件测试

分支条件组合测试

修正条件判定测试(MCDC)

基于软件质量特性的测试

功能性测试

性能效率测试

易用性测试

可靠性测试

安全性测试

维护性测试

兼容性测试

可移植性测试

依从性测试

自动化测试技术

自动化测试的优点

自动化测试的缺点

自动化测试局限性领域

自动化测试不正确的期望

基于经验的测试技术


计算机系统构成及硬件基础知识

总线

芯片存储容量为512K*16位,则该芯片的地址线和数据线宽度分别为()

数据线宽度16位

地址线宽度19

码制

l 原码/反码/补码/移码

原码:最高位为符号位,0表示正,1表示负,其余n-1位表示数值的绝对值。

反码:最高位为符号位,0表示正,1表示负,正数的反码等于原码,负数的反码等于原码除符号位外按位取反

补码:最高位为符号位,0表示正,1表示负,正数的补码等于原码,负数的补码等于反码末尾加1(注意需要进位,且溢出将不被需要)

移码:补码的符号位取反

注:计算机中大多数情况下会用补码进行运算。 原码,反码和移码在计算过程中结果可能不符合预期,例如1+(-1)

操作系统知识

三态模型

计算机网络基础知识

3.2. TCP/IP 3.2.1 网络层协议

IP:网络层最重要的核心协议,在源地址和目的地址之间传从数据报,面向无连接,不可靠 ICMP:因特网控制报文协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息 IGMP:网络组管理协议,允许因特网中的计算机参加多播,是计算机用作向相邻多目路由器报告多目组成成员的协议,支持组播 ARP和RARP:地址解析协议,ARP是将IP地址转换为物理地址RARP是将物理地址转换为IP地址 3.2.2 传输层协议

TCP:整个TCP/IP协议族中最重要的协议之一,在IP协议提供的不可靠数据基础上,采用了重发技术,为应用程序提供了一个可靠的、面向全连接的,全双工的数据传输服务。一般用于传输数据量比较少,且对可靠性要求高的场合 UDP:是一种不可靠、无连接的协议,有助于提高传输速率,一般用于传输数据量大,可靠性要求不高,但要求速度快的场合 3.2.3 应用层协议

基于TCP的FTP,HTTP等都是可靠传输。基于UDP的DHCP、DNS等都是不可靠传输

FTP:可靠的文本传输协议,用于因特网上的控制文件的双向传输 HTTP:超文本传输协议,用于从www服务器传输超文本到本地浏览器的传输协议。使用SSL加密后的安全网页协议为HTTPS Telnet:远程连接协议,是因特网远程登录服务的标准协议和主要方式 TFTP:不可靠的、开销不大的小文件传输协议 SNMP:简单网络管理协议,由一组网络管理的标准协议,包含一个应用层协议、数据库模型和一组资源对象。该协议能够支持网络管理系统,用于监测连接到网络上的设备是否有引起管理师关注的情况,该协议封装在UDP中传送 DHCP:动态主机配置协议,基于UDP,基于C/S模型,为主机动态分配IP地址,有固定分配,动态分配,自动分配三种方式 客户端可以从DHCP服务器获得本机IP地址,DNS服务器地址,DHCP服务器地址,默认网关地址 DNS:域名解析协议,通过域名解析出IP协议 3.2.4 邮件相关协议

SMTP:简单邮件传输协议,是一组用于由源地址到目的地址传送邮件的规则,邮件报文采用ASCII格式表示 POP3:用于邮件接收的协议。邮件客户端通过与服务器之间建立TCP链接,采用Client/Server计算模式来传送邮件 MIME:提供多格式邮件服务(附加多媒体) PGP:安全邮件协议

数据库技术

数据模型的三要素

l 数据结构

是所研究的对象类型的集合,是对系统静态特性的描述。

l 数据操作

对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及操作规则。是对系统动态特性的描述。

l 数据的约束

是一组完整性规则的集合。也就是说,对于具体的应用数据必须遵循特定的语义约束条件,以保证数据的正确、有效、相容。

权限管理语句

GRANT on to

安全性知识

安全防护策略

是软件系统对抗攻击的主要手段。

安全日志;入侵检测;隔离防护;漏洞扫描。

计算机病毒

宏病毒:主要感染office文件,如:docx(word文档)。

脚本病毒:针对脚本语言。

防火墙对病毒无能为力。

知识产权

软件工程

结构化方法

结构化方法总的指导思想是自顶而下、逐层分解,基本原则是功能的分解与抽象。适合于数据处理领域的问题,但不适合解决规模大的、特别复杂的项目,而且难以适应需求的变化。

  • 数据字典:描述了在目标系统中使用和生成的所有数据对象。

    数据字典下有四类条目:数据流、数据项、数据存储和基本加工

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

    数据流图基本要素:加工、数据流、数据存储(文件)、外部实体(源/宿)

    数据流图建模应该遵循自外向内、自顶向下、从抽象到具体的原则。数据流而不是控制流。

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

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

面向对象开发方法

软件过程模型

瀑布模型:需求清晰

螺旋模型:风险,瀑布+演化原型

V模型:开发测试并行

增量模型:先开发核心模块功能。每一次增量版本都可独立交付。

原型模型:软件系统小规模且需求不明确

喷泉模型:面向对象

基于构件的开发模型:构件,复用性强,成本较高

类图

一般化关系:表示为类与类之间的继承关系,接口与接口之间的继承,类对接口的实现关系。

表示方法: 用一个空心箭头+实线,箭头指向父类。或空心箭头+虚线,如果父类是接口。

关联关系:类与类之间的联接,它使一个类知道另一个类的属性和方法。在代码实现时,被拥有者通常作为拥有者的属性。

表示方法:用 实线+箭头, 箭头指向被使用的类。

聚合关系:是关联关系的一种,是强的关联关系。聚合关系是整体和个体的关系。关联关系的两个类处于同一层次上,而聚合关系两个类处于不同的层次,一个是整体,一个是部分。

表示方法:空心菱形+实线+箭头,箭头指向整体。

组合关系:是关联关系的一种,是比聚合关系强的关系。它要求普通的聚合关系中代表整体的对象负责代表部分的对象的生命周期,合成关系不能共享。

表示方法:实心菱形+实线+箭头,

依赖关系:是类与类之间的连接,表示一个类依赖于另一个类的定义。例如如果A依赖于B,则B体现为局部变量,方法的参数、或静态方法的调用。在代码实现时,被使用者为使用者的某个方法的参数/返回值/局部变量

表示方法:虚线+箭头 箭头指向被依赖的一方,也就是指向局部变量。

设计模式

command命令模式:将一个请求封装成一个对象,从而使得可以用不同的请求对客户进行参数化。

strategy策略模式:定义一系列算法,把它们封装起来,并且使它们可以相互替换。

state状态模式:

decorator装饰模式:动态地给一个对象附加额外的职责,不必通过子类就能灵活地增加功能。

abstraction桥接模式:将抽象部分与它的实现部分分离,使它们都可以独立地变化。

Proxy代理模式:为一个对象提供代理以控制该对象的访问。

adapter适配器模式:将一个类的接口适配成用户期望的另一个接口,使得原本不匹配的接口而无法合作的类可以一起工作。

handle责任链模式:使多个对象都有机会处理同一个请求,从而避免请求的发送者和接收者之间的耦合关系。

软件能力成熟度模型(CMM)

l 初始级

软件过程的特点是无序的,有时甚至是混乱的。

l 可重复级

已经建立了基本的项目管理过程,可用于对成本、进度和功能特性进行跟踪。

l 已定义级

用于管理和工程的软件过程均已文档化、标准化,并形成整个软件组织的标准软件过程。

l 已管理级

软件过程和产品质量有详细的度量标准。管理层寻求更主动地应对系统的开发问题。

l 优化级

通过对来自过程、新概念和新技术等方面的各种有用信息的定量分析,能够不断地、持续地进行过程改进。

软件生命周期

l 可行性分析与项目开发计划:可行性分析报告和项目开发计划

l 需求分析:软件需求说明书

l 概要设计:概要设计说明书

l 详细设计:详细设计文档

l 编码

l 测试:软件测试计划、测试用例和软件测试报告

l 维护

聚合

衡量模块内部各元素结合的紧密程度。

l 偶然聚合

模块完成的动作之间没有任何关系,或者仅仅是一种非常松散的关系。

l 逻辑聚合

模块内部的各个组成在逻辑上具有相似的处理动作,但功能用途上彼此无关。

l 时间聚合

模块内部的各个组成部分所包含的处理动作必须在同一时间内执行。

l 过程聚合

模块内部各个组成部分所要完成的动作虽然没有关系,但必须按特定的次序执行。

l 通信聚合

模块的各个组成部分所完成的动作都使用了同一个数据或产生同一输出数据。

l 顺序聚合

模块内部的各个部分,前一部分处理动作的最后输出是后一部分处理动作的输入。

l 功能聚合

模块内部各个部分全部属于一个整体,并执行同一功能,且各部分对实现该功能都必不可少。

耦合

度量不同模块间互相依赖的程度。

l 非直接耦合

两个模块之间没有直接关系,它们的联系完全是通过主模块的控制和调用来实现的。

l 数据耦合

两个模块彼此间通过数据参数交换信息。

l 标记耦合

一组模块通过参数表传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量。

l 控制耦合

两个模块彼此间传递的信息中有控制信息。

l 外部耦合

一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。

l 公共耦合

两个模块之间通过一个公共的数据区域传递信息。

l 内容耦合

一个模块需要涉及到另一个模块的内部信息。

软件配置管理

软件配置管理(Software Configure Management,SCM)用于整个软件工程过程。其主要目标是标识变更;控制变更;确保变更正确地实现;报告有关变更。SCM是一组管理整个软件生存周期中各阶段变更的活动。

涉及:基线、软件配置项、版本控制。

需求的层次

l 业务需求

指反映企业或客户对系统高层次的目标要求;可以确定项目视图和范围。

l 功能需求

规定了开发人员必须在系统中实现的软件功能

l 非功能需求

指系统必须具备的属性和品质;可细分为:软件质量属性(如:可维护性、可靠性、效率等)和其他的非功能需求。

l 设计约束

限制条件或补充规约;通常是对系统的一些约束说明;如:必须采用国有自主知识产权的数据库系统,必须运行在UNIX操作系统之下等。

软件工程概述

三要素

方法:是指完成软件开发的各项任务的技术方法。

工具:是指为运用方法而提供的软件工程支撑环境。

过程:是指为获得高质量的软件所需要完成的一系列任务的框架。

维护

 影响维护的因素 可维护性:是指理解、改正、改动、改进软件的难易程度。 可理解性:指维护人员理解软件的结构、接口、功能和内部过程的难易程度。 可测试性:是指测试和诊断软件错误的难易程度。 可修改性:是指修改软件的难易程度。  维护分类(ISO/IEC14764) 更正性维护:更正交付后发现的错误。 适应性维护:使软件产品能够在变化后或变化中的环境中继续使用。 完善性维护:改进交付后产品的性能和可维护性。 预防性维护:在软件产品中的潜在错误成为实际错误前,检测并更正它们。

MVC

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,是用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。

l 控制器

负责转换请求,对请求进行处理;主要负责Model和View的交互。

l 视图

代表用户交互界面,对于Web应用来说,可以概括为HTML界面,但有可能为XHTML、XML和Applet;主要负责呈现,也就是用户界面。

l 模型

就是业务流程/状态的处理以及业务规则的制定。业务模型的设计可以说是MVC最主要的核心;主要负责数据和业务逻辑。

项目管理基础知识

风险

风险包含两个特性:不确定性和损失

在项目管理中,风险是不可避免的。

规避风险是项目管理中至关重要的一环。通过识别和评估风险,建立风险管理计划,采取风险管理措施,并持续监控和控制风险,项目团队可以最大限度地降低风险对项目的影响,提高项目的成功率。

软件测试基础

测试模型

V模型

W模型

H模型

敏捷测试模型

测试分类

1.按工程阶段划分的测试

单元测试

集成测试

确认测试

系统测试

验收测试

2.按是否执行代码划分的测试

动态测试

静态测试

3.按测试实施主体划分的测试

开发方测试(也称验证测试或Alpha测试)

用户方测试(Beta测试)

第三方测试

α测试是公司内部,专业人员测试

β测试是公司外部,非专业人员(最终用户)测试

4.按是否关联代码划分的测试

白盒测试

黑盒测试

5.按软件质量特性划分的测试

功能性测试

性能效率测试

兼容性测试

易用性测试

可靠性测试

信息安全性测试

维护性测试

可移植性测试

质量保证:在规定条件下使用时,软件产品满足明确的或隐含的要求的能力

功能性:在指定条件下使用时,产品或系统满足明确的或隐含的要求的功能的能力

使用质量:有效性、生产率、安全性和满意度。

基于规格说明的测试

判定表法

判定表通常由四个部分组成

  • 条件桩:列出了问题的所有条件

  • 动作桩:列出了问题规定可能采取的操作

  • 条件项:列出针对它所列条件的取值

  • 动作项:列出在条件项的各种取值情况下应该采取的动作

建立判定表的步骤

1.确定规则个数,假如有n个条件,每个条件有两个取值(0, 1), 则有 2n 种规则 2.列出所有条件桩和动作桩 3.填入条件项 4.填入动作项,制定初始判定表 5.简化,合并相似规则或相同动作

基于结构的测试

静态测试技术

控制流分析

McCabe圈复杂度

V(g)=边的数量-节点数量+2

V(g)=判断节点数+1

V(g)=封闭区域数+1

动态测试技术

基于控制流设计用例
语句测试

语句测试:选择足够多的测试数据,使被测程序中每条语句都要被经历到

测试条件:每个可执行语句

测试覆盖项:每个可执行语句

分支测试

分支测试:使得程序中的每个分支都要被经历到——哪怕这个分支上没有语句

测试条件:每个分支(控制流图的边)

测试覆盖项:每个分支

判定测试

判定测试:使得程序中的每个判定语句的取值都要被经历到

测试条件:每个判定语句

测试覆盖项:每个判定语句的每个结果值

分支条件测试

分支条件测试:设计足够的测试用例,使得每个判定语句的取值,以及每个判定条件的取值都能被覆盖到

测试条件:每个判定语句

测试覆盖项:每个判定语句中所有判定条件的取值

分支条件组合测试

分支条件组合测试:设计足够的测试用例,使得每个判定语句中的所有判定条件的各种可能组合都至少出现一次

测试条件:每个判定语句

测试覆盖项:每个判定中所有判定条件的布尔值的每个唯一可行组合

修正条件判定测试(MCDC)

修正条件判定测试:每个判定条件都要可以单独的影响整个测试结果,假如有n个判定条件则需要n+1个用例就可以做到MCDC的100%覆盖

测试条件:每个判定语句

测试覆盖项:单个布尔条件可以独立影响判定结果的判定条件,其布尔值的每个唯一可行组合

基于软件质量特性的测试

质量特性:功能性;性能效率;兼容性;易用性;可靠性;信息安全性;维护性;可移植性。

功能性测试

完备性;正确性;适合性。

性能效率测试

时间特性;资源利用率;容量。

负载压力测试(在真实环境下)

易用性测试

可辨识性;易学性;易操作性;用户差错防御性;用户界面舒适性;易访问性。

可靠性测试

成熟性,可用性;容错性;易恢复性

安全性测试

保密性;完整性;抗抵赖性;可核查性;真实性。

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

测试内容:用户认证机制、加密机制、数据备份与恢复、预防病毒系统。

维护性测试

模块化;可重用;易分析性;易修改性;易测试性。

兼容性测试

共存性;互操作性。

可移植性测试

适应性;易安装性;易替换性。

依从性测试

评估产品或系统遵循八个质量特性有关的标准、约定和法规以及类似规定的程度。

自动化测试技术

自动化测试的优点

提高测试质量

提高测试效率,缩短测试工作时间

提高测试覆盖率

执行手工测试不易完成的测试任务

更好地重现软件缺陷的能力

更好地利用资源

增进测试人员与开发人员之间的合作伙伴关系

能执行测试步骤更长,综合性更强的测试用例

更快地反馈软件质量情况

提高系统的稳定性和可靠性

自动化测试的缺点

产生开发成本

需要测试技术团队

脚本维护成本高

无创造性

引入更多的复杂性

容易出现偏离原始的测试目标

可能引入额外的错误

自动化测试局限性领域

定制型项目

周期很短的项目

业务规则复杂的对象

人体感观与易用性测试

不稳定的软件

涉及物理交互

自动化测试不正确的期望

自动化测试可以完成一切测试工作

测试工具可适用于所有的测试

测试工具能使工作量大幅度降低

测试工具能实现百分之百的测试覆盖率

自动化测试工具容易使用

自动化测试能发现大量的新缺陷

基于经验的测试技术

基于文档检查表的测试

探索性测试

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值