软件测试分类:
按开发阶段划分:单元测试、集成测试、系统测试、确认测试、验收测试
单元测试的主要测试内容:模块接口、局部数据结构、执行路径、错误处理和边界;
按测试技术划分:白盒测试、黑盒测试、灰盒测试
按实施组织划分:开发方测试、用户测试、第三方测试
按测试实施组织划分:
开发方测试:开发方测试通常也叫“验证测试”或“Alpha测试”主要是之软件开发完成后,开发方要对提交的软件进行全面的自我检查与验证。
用户测试:指在用户的应用环境下,用户通过运行和使用软件,检测与验证软件是否符合自己的预期要求。用户测试不是指用户的”验收测试“,而是指用户的使用性测试,常用的用户测试有“Beta测试”。
第三方测试:也叫独立测试,它是指在技术、管理和财务上与开发方和用户方相对独立的组织进行的软件测试。
测试执行过程的阶段为:初测期、细测期和回归测试期。
初测期-----测试主要功能和关键的执行路径,排除主要障碍。
细测期-----依据测试计划和测试用例,逐一测试大大小小的功能、方方面面的特性、性能、用户界面、兼容性、可用性等;
回归期-----系统已达稳定,在一轮测试中发现的错误已十分有限;复查已知错误的纠正情况,未引发任何新的错误时,终结回归测试。
网络测试类型包括负载测试、可靠性测试(确定软件的可靠性目标在软件的需求分析阶段)、可接受性测试、吞吐量测试、网络瓶颈测试等。
主动攻击会导致某些数据流的篡改和虚假数据流的产生。这类攻击可以分为篡改、伪造消息数据和终端(拒绝服务);被动攻击中的攻击者不对数据信息做任何修改,而是在未经用户同意和认可的情况下,攻击者获得了信息或相关数据。通常包括窃听、流量分析、破解弱加密的数据流等攻击方式。
按标准符合性测试的分类:①数据内容类标准②通信协议类标准③开发接口类标准④信息编码类标准
集成测试的集成方式包括:一次性集成、自底向上、自顶向下、混合式等。
链接测试的目的是确保Web应用功能够成功实现。
链接测试的主要测试内容:(1) 每个链接是否能够链接到目标页面;(2) 被链接的页面是否存在;(3) 是否存在孤立页面。
Web应用安全体系测试可以从部署与基础结构、输入验证、身份验证、授权、配置管理、敏感数据、会话管理、加密、参数操作、异常管理、审核和日志记录等多个方面进行。
常见的Web应用兼容性测试有平台的兼容性测试、浏览器兼容性测试、分辨率测试、连接速度测试、打印机测试、数据库兼容性测试和应用软件之间的兼容性测试。
兼容性测试矩阵示例:
防止SQL注入的方法主要有:拼接SQL之前对特殊符号进行转义,使其不作为SQL 语句的功能符号。
软件工程是一种层次的技术,从底向上分别是质量、过程、方法和工具;软件工程的基本要素包括方法、工具和过程。
风险的概念:风险分析在软件项目开发种具有重要作用,它包括风险识别、风险预测、风险评估和风险控制等。而风险控制又包括风险降低、风险管理计划和风险化解等。
软件产品功能性测试标准:适合性、准确性、互操作性、保密安全性、功能依从性,不包括易用性。
数字证书的基础知识:
用户的数字证书由某个可信的证书发放机构(Certification Authority, CA)建立,并由CA或用户将其放入公共目录中。在X.509标准中,一般格式的数字证书包含以下数据域:
(1)版本号:用于区分X.509的不同版本
(2)序列号:由同一发行者(CA)发放的每个证书的序列号是唯一的
(3)签名算法:签署证书所用的算法及其参数
(4)发行者:指建立和签署证书的CA的X.509名字
(5)有效期:包括证书有效期的起始时间和终止时间
(6)主体名:指证书持有者的名称及有关信息
(7)公钥:证书持有者的公钥以及其使用方法
(8)发行者ID:任选的名字唯一地标识证书的发行者
(9)主体ID:任选的名字唯一地标识证书的持有者
(10)扩展域:添加的扩充信息
(11)认证机构的签名:用CA私钥对证书的签名
从上述描述可知,数字证书用CA私钥做数字签名,从用户的数字证书中可以获得用户的公钥。
测试结束的标准:常见的测试停止准则包括如下:
测试超过了预定时间;执行了所有的测试用例,没有发现新的故障;釆用特定的测试用例设计方案;查出某一预定数目的故障;单位时间内查出故障的数量少于预定值。
一个标准的URL的格式如下:协议://主机名.域名.域名后缀或IP地址(:端口号)/目录/文件名,其中目录可能存在多级目录。
软件测试的对象:根据软件的定义,软件包括程序、数据和文档,所以测试对象包括软件、数据和文档。
自动化测试技术包括自动测试执行、输出的比较、测试的录制与回放、测试用例自动生成等,其中,测试用例生成是最需要智力和创造力的活动,而这正是自动化工具最不擅长的事情。
自动化测试的优势:提高测试质量、提高测试效率、提高测试覆盖率、执行手工测试不能完成的测试任务、更好地利用资源、增进测试人员与开发人员之间的合作伙伴关系。
风险有两个特点,一个是不确定性,一个是损失。
软件测试质量包括哪些管理要素:
•测试过程,例如技术过程、管理过程、支持过程。
•测试人员及组织。
•测试工作文档,例如测试计划、测试说明、测试用例、测试报告、问题报告。
软件测试质量控制的主要方法:
•测试文档评审。
•测试活动审核。
•制定质量保证计划。
•采取背靠背测试。
企业衡量软件测试的质量经常采用两个指标:测试用例覆盖率和缺陷修复率.(测试用例覆盖率=测试需求对应数目/测试需求数目。缺陷修复率=累计关闭的缺陷数/累计打开的缺陷数)
备注:
功能性测试是检验适合性、准确性、互操作性、安全保密性、功能依从性的测试工作。
效率测试是指在规定条件下产品执行其功能时,对时间消耗及资源利用的测试工作 .
成熟性测试是检验软件产品是否具备为避免由软件中错误而导致失效的能力。
易学性测试是检验软件产品是否具备使用户能学习它的应用的能力。
•软件可靠性包括成熟性、容错性、易恢复性、可靠性依从性等质量子特性,
特性的概念:
功能性是指软件在指定条件下满足明确或隐含要求的能力。
可靠性指软件在指定条件下维持规定的性能级别的能力。
易用性指软件在指定条件下被理解、学习使用和吸收用户的能力。
可维护性是指在规定条件下,规定的时间内,使用规定的工具或方法修复规定功能的能力;
可移植性是指软件从一种环境迀移到另一种环境的能力。
可靠性测试由可靠性目标确定、测试用例设计、测试实施等活动组成,最好是在受控自动测试环境下,由专业测试机构完成,可靠性测试不能保证软件残存的
缺陷数最少,并且需要考虑对软件开发进度和成本的影响。
软件工程
系统设计的主要内容包括概要设计和详细设计。
概要设计又称为系统总体结构设计,主要任务是将系统的功能需求分配给软件模块,确定每个模块的功能和调用关系,形成软件的模块结构图,即系统结构图。
为每个具体任务选择适当的技术手段和处理方法的过程称为详细设计。
软件产品质量可以通过测试内部属性(典型地对中间产品的静态测度),外部属性(典型地是通过测量代码执行时的行为)和使用属性来进行测量。
软件需求规格说明书是软件设计和实现的基础,是软件开发项目的规划、软件价格的估算,为软件维护提供重要的信息,是测试和用户验收软件系统的重要依据。
人机交互“黄金三原则”:置于用户控制之下、减少用户的记忆负担、保持界面的一致性。
IDEF是一系列建模、分析和仿真方法的统称,从IDEF0到IDEF14(包括IDEF1x在内)共有16套方法。
功能建模:IDEF0 信息建模:IEDF1 数据建模:IDEF1X 仿真建模设计:IDEF2 过程描述获取:IDEF3 面向对象设计:IDEF4
Web服务的典型技术包括:用于传递消息的简单对象访问协议SOAP、用于描述服务的web服务描述语言WSDL、用于web服务的注册的统一描述、发现及集成UDDI、用于数据交换XML;ETL用于数据提取、转换和加载、UML用于统一建模语言。
计算机网路基础知识:
网络三层:核心层、汇聚层、接入层。
核心层:主要实现骨干网络之间的优化传输,骨干层设计任务的重点通常是冗余能力、可靠性和高速的传输。
汇聚层:功能主要是连接接入层节点和核心层中心。汇聚层设计为连接本地的逻辑中心,仍需要较高的性能和比较丰富的功能。
接入层:我们在核心层和汇聚层的设计主要考虑的是网络性能和功能性要求,接入层设计上主张使用性能价格比较高的设备。接入层是最终用户与网络的接口,它应该提供即插即用的特性,同时应该非常易于使用和维护。
路由器可以分割广播风暴,交换机可以分割冲突域。
Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式;Gopher是Internet上一个非常有名的信息查找系统,它将Internet上的文件组织成某种索引,很方便地将用户从Internet的一处带到另一处。在WWW出现之前,Gopher是Internet上最主要的信息检索工具,Gopher站点也是最主要的站点,使用tcp70端口。
常见的加密机制包括VPN技术、对称加密、非对称加密、HASH算法等,不同加密机制或算法的用途、强度是不相同的,一个软件或系统中的加密机制使用得是否合理,强度是否满足当前要求,是需要通过测试来完成的,通常模拟解密是测试的一个重要手段。
常用的加密算法依据所使用的秘钥数分为单钥和双钥加密体制,也称私钥和公钥加密算法。ECC、DSA和RSA都属于公开密钥加密算法,DES是典型的私钥加密体制。
网络测试的类型为:网络可靠性测试、网络可接受性测试、网络瓶颈测试、网络容量规划测试、网络升级测试、网络功能/特性测试、网络吞吐量测试、网络响应时间测试、衰减测试、网络配置规模测试、网络设备评估测试等
性能:
性能测试中负载测试与压力测试的目的:
负载测试模拟系统真实使用环境执行性能测试,考核系统在日常业务运行和高峰期运行期间的性能是否满足需求。
负载压力测试的目的是在应用实际部署前评估性能、在真实环境下评估系统服务等级满足情况、预测系统负载压力承受力、分析系统的瓶颈,为了得到准确的数据,必须是在真实环境下而不能是模拟环境。
压力测试模拟系统的性能极限点执行性能测试,用来发现系统的性能瓶颈点。
应用服务器和数据库服务器性能评价的关键指标:
应用服务器关键指标:操作系统指标、缓存状况、连接池、执行队列等。
数据库服务器关键指标:操作系统指标、缓存命中率、数据库进程占用的CPU时间、数据库进程使用的内存量、锁资源使用情况。
网络测试指标:常见测试指标包括网络可用性、网络带宽、吞吐量、延时、丢包率等。
二叉树:
二叉树的基本概念。二叉树或者为空集,或者至多有两颗子树。二叉树的子树有左右之分,因此若某个结点只有一个孩子结点,也需要指明是左孩子还是右孩子。二叉树中,除了根结点之外,其他每个结点只有一个父结点。
网络知识:
RARP协议是反向地址转换协议,作用是将局域网中某个主机的物理地址(MAC:地址)转换为IP地址。
软件体系结构:
分布式体系结构是目前软件系统最常用的软件体系结构,采用分布式体系结构可以有效地进行资源共享、具有较好的经济性和健壮性,但是系统的复杂度并没有降低。
常见的C/S和B/S是典型的分布式体系结构。CORBA是指公共对象请求代理体系结构,也是一种分布式体系结构。
在分层体系结构中,表示层是应用系统的用户界面部分,负责用户与应用程序的交互:控制层接收用户请求,选择适当的逻辑层构件处理并接收处理结果,选择适当的界面展示给用户;模型层访问数据层的数据对象,并根据要求进行查询或更新数据,实现业务逻辑功能,Java EE体系结构中,常用EJB技术实现;数据层负责数据的存储。
逻辑内聚:指模块内执行若下个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
时间内聚:把需要同时执行的动作组合在一起形成的模块。
通信内聚:也称为信息内聚,指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或产生相同的输出数据。
功能内聚:指模块内的所有元素共同作用完成一个功能,缺一不可。
偶然聚合:模块完成的动作之间没有任何关系,或者仅仅是一种非常松散的关系。
逻辑聚合:模块内部的各个组成在逻辑上具有相似的处理动作,但功能用途上彼此无关。
时间聚合:模块内部的各个组成部分所包含的处理动作必须在同一时间内执行。
过程聚合:模块内部各个组成部分所要完成的动作虽然没有关系,但必须按特定的次序执行。
通信聚合:模块的各个组成部分所完成的动作都使用了同一个数据或产生同一输出数据。
顺序聚合:模块内部的各个部分,前一部分处理动作的最后输出是后一部分处理动作的输入。
功能聚合:模块内部各个部分全部属于一个整体,并执行同一功能,且各部分对实现该功能都比不可少
非直接耦合:两个模块之间没有直接关系,它们的联系完全是通过主模块的控制和调用来实现的。
数据耦合:两个模块彼此间通过数据参数交换信息。
标记耦合:一组模块通过参数表传递记录信息,这个记录是某一个数据结构的子结构,而不是简单变量。
控制耦合:两个模块彼此间传递的信息中有控制信息。
外部耦合:一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。
公共耦合:两个模块之间通过一个公共的数据区域传递信息。
内容耦合:一个模块需要涉及到另一个模块的内部信息。
命令:
windows系统:
1.获取某个网络开放端口所对应的应用程序信息,可以使用命令:netstat
Linux系统:
安全问题:
- 你负责的系统和应用中,在认证、授权和审计方面,分别做了哪些工作?又起到了怎样的保护效果?
答:认证:集成动态口令(OTP)、生物识别(如指纹/人脸)与硬件令牌,覆盖内部系统及云平台登录场景,减少身份冒用风险;通过统一身份平台实现跨应用单点登录,降低密码泄露概率;自动化流程控制员工入职/离职时的账户创建、权限分配及注销,避免“幽灵账户”残留。
授权:基于角色的访问控制,按岗位限制用户仅访问必要资源,防止越权操作;权限分离与最小特权原则,杜绝单点权限滥用。
审计:实时日志监控与行为分析;定期合规审计与报告;
保护效果:减少身份冒用、防止越权操作、快速攻击溯源、合规达标率提升。 - 安全问题如何进行管理和推动?答:需要自上而下的方式去进行管理和推广,因为只有企业高层理解了安全,才有可能有效推动安全的发展。
- 结合你们公司的业务系统情况,和我分享下你理解的安全是什么?
答:安全是通过系统性风险管理实现关键资产(数据、服务、流程)的可用性、完整性与保密性保障。 - 怎么做好认证?(答题思路:目前存在哪些认证—认证问题的存在可能导致的后果—如何解决这些认证问题)
- 有了身份认证,还需要授权和审计吗?答:需要,通过身份认证,我们只能够确认用户的身份,而对用户的操作和访问行为的把控,就是授权和审计的任务了。
- 需应对的常见安全攻击手段并简要说明?对网络侦听、冒充攻击、拒绝服务攻击、web安全攻击
答:
网络侦听:对数据窃听截取分析,从而实现对用户支付帐号及口令数据的非授权获取和使用。
冒充攻击:伪装骗权,通过欺骗从而获取对系统的非授权访问。
拒绝服务攻击:通过海量请求耗尽目标服务器资源,导致服务瘫痪。
web安全攻击:植入恶意代码或表单中提交恶意sql命令,从而正常访问控制或恶意盗窃用户信息。 - 安全测试,需采用哪些基本的安全测试方法?答:功能验证、漏洞扫描、模拟攻击试验、侦听测试。
- 针对密钥管理功能进行功能测试和性能测试各自应包含的基本测试点?
答:功能测试
①系统是否具备密钥生成、密钥发送、密钥存储、密钥查询、密钥撤销、密钥恢复等基本功能;
②密钥库管理功能是否完善;
③密钥管理中心的系统、设备、数据、人员等安全管理是否严密;
④密钥管理中心的审计、认证、恢复、统计等系统管理是否具备;
⑤密钥管理系统与证书认证系统之间是否采用基于身份认证的安全通信协议。
性能测试
①检查证书服务器的处理性能是否具备可伸缩配置及扩展能力利用并发压力测试工具测试受理点连接数、签发在用证书数目、密钥发放并发请求数是否满足业务需求;
②测试是否具备系统所需最大量的密钥生成、存储、传送、发布、归档等密钥管理功能;
③是否支持密钥用户要求年限的保存期;
④是否具备异地容灾备份;
⑤是否具备可伸缩配置及扩展能力;
⑥关键部分是否采用双机热备和磁盘镜像。 - 针对加密服务功能进行功能测试和性能测试各自应包含的基本测试点?
答:功能测试
①系统是否具备基础加解密功能;
②能否为应用提供相对稳定的统一安全服务接口;
③能否提供对多密码算法的支持;
④随着业务量的逐渐增加,是否可以灵活增加密码服务模块,实现性能平滑扩展。
性能测试
①各加密算法使用的密钥长度是否达到业内安全的密钥长度;
②RSA、ECC等公钥算法的签名和验证速度以及AES等对称密钥算法的加解密速度是否满足业务要求;
③处理性能如公钥密码算法签名等是否具备可扩展能力。