1.软件的生命周期(prdctrm)

 

   计划阶段(planning)-〉需求分析(requirement)-〉设计阶段(design)-〉编码(coding)->测试(testing)->运行与维护(running maintrnacne)

 

2、问:你在测试中发现了一个bug,但是开发经理认为这不是一个bug,你应该怎样解决?

 

首先,将问题提交到缺陷管理库里面进行备案。

 

然后,要获取判断的依据和标准:根据需求说明书、产品说明、原型图、设计文档等,确认实际结果是否与计划有不一致的地方,提供缺陷是否确认的直接依据;

 

如果没有文档依据,

1)可以根据同行或类似软件的一般特性来说明是否存在不一致的地方,来确认是否是缺陷;

2)根据用户的一般使用习惯,来确认是否是缺陷;

3)与设计人员、开发人员和客户代表等相关人员探讨,确认是否是缺陷;

 

合理的论述,向测试经理说明自己的判断的理由,等待测试经理做出最终决定,如果仍然存在争议,可以通过公司政策所提供的渠道,向上级反映,并有上级做出决定。

 

3、给你一个网站,你如何测试?

 

首先,查找需求说明、网站设计等相关文档,分析测试需求。

 

制定测试计划,确定测试范围和测试策略,一般包括以下几个部分:功能性测试;界面测试;性能测试;数据库测试;安全性测试;兼容性测试

 

设计测试用例:

 

功能性测试可以包括,但不限于以下几个方面:

链接测试。链接是否正确跳转,是否存在空页面和无效页面,是否有不正确的出错信息返回。

提交功能的测试。

多媒体元素是否可以正确加载和显示。

多语言支持是否能够正确显示选择的语言等。

 

界面测试可以包括但不限于一下几个方面:

页面是否风格统一,美观

页面布局是否合理,重点内容和热点内容是否突出

控件是否正常使用

对于必须但未安装的控件,是否提供自动下载并安装的功能

文字检查

 

性能测试一般从以下两个方面考虑:

压力测试;负载测试;强度测试

数据库测试要具体决定是否需要开展。数据库一般需要考虑连结性,对数据的存取操作,数据内容的验证等方面。

 

安全性测试:

基本的登录功能的检查

是否存在溢出错误,导致系统崩溃或者权限泄露

相关开发语言的常见安全性问题检查,例如SQL注入等

如果需要高级的安全性测试,确定获得专业安全公司的帮助,外包测试,或者获取支持兼容性测试,

 

根据需求说明的内容,确定支持的平台组合:

浏览器的兼容性;

操作系统的兼容性;

软件平台的兼容性;

数据库的兼容性

 

开展测试,并记录缺陷。合理的安排调整测试进度,提前获取测试所需的资源,建立管理体系(

 

例如,需求变更、风险、配置、测试文档、缺陷报告、人力资源等内容)。

 

定期评审,对测试进行评估和总结,调整测试的内容。

 

4、问:一台客户端有三百个客户与三百个客户端有三百个客户对服务器施压,有什么区别?

 

300个用户在一个客户端上,会占用客户机更多的资源,而影响测试的结果。线程之间可能发生干扰,而产生一些异常。

 

300个用户在一个客户端上,需要更大的带宽。

IP地址的问题,可能需要使用IP Spoof来绕过服务器对于单一IP地址最大连接数的限制。

 

所有用户在一个客户端上,不必考虑分布式管理的问题;

 

而用户分布在不同的客户端上,需要考虑使用控制器来整体调配不同客户机上的用户。同时,还需要给予相应的权限配置和防火墙设置。

 

5、软件生存周期及其模型是什么?

 

软件生存周期(Software life cycle)又称为软件生命期,生存期。是指从形成开发软件概念起,所开发的软件使用以后,直到失去使用价值消亡为止的整个过程。一般来说,整个生存周期包括 :问题的定义及规划、需求分析/评审、软件设计、软件编码、测试阶段、运行维护 六个时期,每个时期又划分为若干个阶段。每个阶段有明确的任务。

 

周期模型(典型的几种):

 

1)瀑布模型

 

2)快速原型模型:快速原型模型允许在需求分析阶段对软件的需求进行初步而非完全的分析和定义,快速设计开发出软件系统的原型,该原型向用户展示待开发软件的全部或部分功能和性能;用户对该原型进行测试评定,给出具体改进意见以丰富细化软件需求;开发人员据此对软件进行修改完善,直至用户满意认可之后,进行软件的完整实现及测试、维护。

 

3)迭代模型:迭代包括产生产品发布(稳定、可执行的产品版本)的全部开发活动和要使用该发布必需的所有其他外围元素。在某种程度上,开发迭代是一次 完整地经过所有工作流程的过程:需求分析、设计、实施和测试工作流程。实质上,它类似小型的瀑布式项目。RUP认为,所有的阶段都可以细分为迭代。每一次 的迭代都会产生一个可以发布的产品,这个产品是最终产品的一个子集。

 

生命周期阶段:

软件计划与可行性分析

需求分析

软件设计

编码

软件测试

运行与维护

 

6、什么是软件测试?软件测试的目的与原则

 

定义:

在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。

 

目的:

测试是程序的执行过程,目的在于发现错误

软件测试为了发现程序中存在的代码或业务逻辑错误

软件测试为了检验产品是否符合用户的需求

软件测试为了提高用户体验

 

软件测试的原则:

测试应尽早启动、介入(需求分析阶段),所有的测试应追溯到用户需求,测试证明软件存在缺陷,不可能执行穷尽测试,完全测试是不可能的,测试需要终止。

 

二八原则,测试发现的错误中80%很可能的起源于20%的模块中。(缺陷存在群集现象)

对错误结果要进行一个确认的过程(测试的详细数据,截图,前置条件等),制定严格的测试计划;妥善保管测试过程中的所有文档;程序员尽量避免自己的检查程序;设计测试用例是应该考虑到合法的输入和不合法的输入

 

7、什么是软件质量?

 

概括地说,软件质量就是“软件与明确的和隐含的定义的需求相一致的程度”。具体地说,软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述 的开发标准、以及所有专业开发的软件都应具有的隐含特征的程度。 影响软件质量的主要因素,这些因素是从管理角度对软件质量的度量。可划分为三组,分别反应用户在使用软件产品时的三种观点。正确性、健壮性、效率、完整性、可用性、风险(产品运行);可理解性、可维修性、灵活性、可测试性(产品修改);可移植性、可再用性、互运行性(产品转移)。

 

8、目前主要的测试用例设计方法是什么?

 

白盒测试:逻辑覆盖、循环覆盖、基本路径覆盖

 

黑盒测试:边界值分析法、等价类划分、错误猜测法、因果图法、状态图法、测试大纲法、随机测试、场景法

 

9、软件的安全性应从哪几个方面去测试?

 

软件安全性测试包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。

 

用户认证安全的测试要考虑问题: 

1)明确区分系统中不同用户权限 、系统中会不会出现用户冲突 、系统会不会因用户的权限的改变造成混乱 

2)用户登陆密码是否是可见、可复制 、是否可以通过绝对途径登陆系统(拷贝用户登陆后的链接直接进入系统)

3)用户退出系统后是否删除了所有鉴权标记,是否可以使用后退键而不通过输入口令进入 系统 

 

系统网络安全的测试要考虑问题 :

1)测试采取的防护措施是否正确装配好

2)有关系统的补丁是否打上 

3)模拟非授权***

4)看防护系统是否坚固 

5)采用成熟的网络漏洞检查工具检查系统相关漏洞(即用最专业的******工具***试一下,现在最常用的是 NBSI 系列和 IPhacker IP ) 

6)采用各种***检查工具检查系统***情况 

7)采用各种防外挂工具检查系统各组程序的外挂漏洞

 

数据库安全考虑问题: 

1)系统数据是否机密(比如对银行系统,这一点就特别重要,一般的网站就没有太高要求)

2)系统数据的完整性(我刚刚结束的企业实名核查服务系统中就曾存在数据 的不

3)完整,对于这个系统的功能实现有了障碍) 、系

4)统数据可管理性 、

5)系统数据的独立性 、

6)系统数据可备份和恢复能力(数据备份是否完整,可否恢复,恢复是否可以完整)

 

10、什么是测试用例 什么是测试脚本 两者的关系是什么?

 

用例:

未实施测试而编制的一组测试输入、执行条件、各种环境设置以及预期结果以及期望结果的一个特定的集合。

 

脚本:

测试脚本是为了进行自动化测试而编写的脚本。

测试脚本的编写必须对应相应的测试用例

 

11、简述什么是静态测试、动态测试、黑盒测试、白盒测试、α测试 β测试

 

静态测试:是不运行程序本身而寻找程序代码中可能存在的错误或评估程序代码的过程。 

 

动态测试:是实际运行被测程序,输入相应的测试实例,检查运行结果与预期结果的差异,判定执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。

 

黑盒测试:一般用来确认软件功能的正确性和可操作性,目的是检测软件的各个功能是否能得以实现,把被测试的程序当作一个黑盒,不考虑其内部结构,在知道该程序的输入和输出之间的关系或程序功能的情况下,依靠软件规格说明书来确定测试用例和推断测试结果的正确性。

 

白盒测试:根据软件内部的逻辑结构分析来进行测试,是基于代码的测试,测试人员通过阅读程序代码或者通

过使用开发工具中的单步调试来判断软件的质量,一般黑盒测试由项目经理在程序员开发中来实现。

 

α测试:是由用户在开发环境下进行的测试,也可以是公司内部的用户在模拟实际操作环境下进行的受控测试,Alpha测试不能由程序员或测试员完成。

 

β测试:由软件的一个或多个用户在实际使用环境下进行的测试, 开发者通常不在测试现场,Beta测试不能由程序员或测试员完成。

 

软件测试面试题集合(下)

https://www.songqinnet.com/article/831