1、什么是黑盒测试?
黑盒测试技术( Black Box Testing ):黑盒测试的内容主要有以下几个方面,但是主要还是功能部分。主要是覆盖全部的功能,可以结合兼容,性能测试等方面进行,根据软件需求,设计文档,模拟客户场景随系统进行实际的测试,这种测试技术是使用最多的测试技术涵盖了测试的方方面面,可以考虑以下方面:
- 正确性 (Correctness) :计算结果,命名等方面。
- 可用性 (Usability) :是否可以满足软件的需求说明。
- 边界条件 (Boundary Condition) :输入部分的边界值,就是使用一般书中说的等价类划分,试试最大最小和非法数据等等。
- 性能 (Performance) : 正常使用的时间内系统完成一个任务需要的时间,多人同时使用的时候响应时间在可以接受范围内。
- 压力测试(Stress) : 多用户情况可以考虑使用压力测试工具,建议将压力和性能测试结合起来进行。
- 错误恢复 (Error Recovery) :错误处理,页面数据验证,包括突然间断电,输入脏数据等。
- 安全性测试 (Security) :这个领域正在研究中,防火墙、补丁包、杀毒软件等的就不必说了,不过可以考虑。
- 兼容性(Compatibility) :不同浏览器,不同应用程序版本在实现功能时的表现不同的上网方式,如果你测试的是一个公共网站的话
2、什么是白盒测试?
白盒测试技术 (White Box Testing) : 深入到代码一级的测试,使用这种技术发现问题最早,效果也是最好的。该技术主要的特征是测试对象进入了代码内部,根据开发人员对代码和对程序的熟悉程度,对有需要的部分进行在软件编码阶段,开发人员根据自己对代码的理解和接触所进行的软件测试叫做白盒测试。这一阶段测试以软件开发人员为主,在 JAVA 平台使用 Xunit 系列工具进行测试, Xunit 测试工具是类一级的测试工具对每一个类和该类的方法进行测试。
3、什么是兼容性测试?兼容性测试侧重哪些方面?
兼容测试主要是检查软件在不同的硬件平台、软件平台上是否可以正常的运行,即是通常说的软件的可移植性。 兼容的类型,如果细分的话,有平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。 兼容测试的重点是,对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容。根据软件运行的需要,或者根据需求文档,一般都能够得出用户会在什么环境下使用该软件,把这些环境整理成表单,就得出做兼容测试的兼容环境了。 兼容和配置测试的区别在于,做配置测试通常不是 Clean OS 下做测试,而兼容测试多是在 Clean OS 的环境下做的。4、我现在有个程序,发现在 Windows 上运行得很慢,怎么判别是程序存在问题还是软硬件系统存在问题?
1、检查系统是否有中毒的特征; 2、检查软件/硬件的配置是否符合软件的推荐标准; 3、确认当前的系统是否是独立,即没有对外提供什么消耗 CPU 资源的服务; 4、如果是 C/S (C/S架构,即Client/Server(客户端/服务器)架构)或者 B/S (B/S架构,即Brower/Server(浏览器/服务器)架构)结构的软件,需要检查是不是因为与服务器的连接有问题,或者访问有问题造成的; 5、在系统没有任何负载的情况下,查看性能监视器,确认应用程序对 CPU/内存的访问情况。5、测试的策略有哪些?
黑盒/白盒,静态/动态,手工/自动,冒烟测试,回归测试,公测(Beta 测试的策略)6、TCP及UDP协议
TCP和UDP都是传输层的协议
- TCP:传输控制协议
- UDP: 数据报文协议
TCP和UDP的区别
UDP的特点如下:
- 1. 无链接
- 2. UDP使用尽最大努力交付,不保证可靠性
- 3. UDP是面向报文的,UDP对应用层交付下来的报文,既不合并,也不拆分,而是保留这些报文的边界。应用层交给UDP多长的报文,UDP就照样发送,即一次发送
- 一个报文
- 4. UDP没有拥塞控制
- 5. UDP支持一对一、一对多、多对一和多对多的交互通信
- 6. UDP的首部开销小,只有8字节
TCP的特点:
- 1. TCP是面向连接的
- 2. 每条TCP连接只能用于两个断点,一对一
- 3. TCP提供可靠交付的服务:连接传输数据、无差错、不丢失、不重复、并且按序到达
- 4. TCP提供全双工通信
- 5. 面向字节流。TCP根据对方给出的窗口和当前网络拥塞的程度来决定一个报文应该包含多少个字节
7、OSI七层模型
上三层---应用层,控制软件方面
- 应用层:文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet
- 表示层:数据格式化,代码转换,数据加密
- 会话层:解除或建立与别的接点的联系(会话)
下四层---数据流层,用来管理硬件
- 传输层:提供端对端的接口 TCP,UDP
- 网络层:为数据包选择路由 IP,ICMP,RIP,OSPF,BGP,IGMP
- 数据链路层 传输有地址的帧以及错误检测功能 SLIP,CSLIP,PPP,ARP,RARP,MTU
- 物理层 以二进制数据形式在物理媒体上传输数据 ISO2110,IEEE802,IEEE802.2 OSI七层模型及各层协议
8、三次握手和四次挥手
三次握手建立连接:client-----发送确认------server----返回确认----client------建立连接-------server
四次握手关闭练连接:client--------发送关闭连接------server-------返回等待关闭---------client
server------发送确认关闭连接-----client-----收到确认关闭连接----------server
9、mysql数据表连接
内连接:select * from a_table a inner join b_table b on a.a_id = b.b_id;
左连接:SELECT * FROM a_table a left join b_table b ON a.a_id = b.b_id;
右连接:SELECT * FROM a_table a right outer join b_table b on a.a_id = b.b_id;
全连接:SELECT * FROM a_table a left join b_table b ON a.a_id = b.b_id;
10、正交表测试用例设计方法的特点是什么?
用最少的实验覆盖最多的操作,测试用例设计很少,效率高,但是很复杂; 对于基本的验证功能,以及二次集成引起的缺陷,一般都能找出来;但是更深的缺陷,更复杂的缺陷,还是无能为力的; 具体的环境下,正交表一般都很难做的。大多数,只在系统测试的时候使用此方法11、python编写冒泡算法:
def bubble_sort(arr): n = len(arr) for i in range(n): for j in range(0, n-i-1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] arr = [12, 43, 8767,232,54] bubble_sort(arr) for i in range(len(arr)): print("%d" % arr[i])
12、描述测试用例设计的完整过程?
需求分析 + 需求变更的维护工作; 根据需求 得出测试需求; 设计测试方案,评审测试方案; 方案评审通过后,设计测试用例,再对测试用例进行评审;13、单元测试的策略有哪些?
逻辑覆盖、循环覆盖、同行评审、桌前检查、代码走查、代码评审、景泰数据流分析14、什么是并发?
在同一时间点,支持多个不同的操作。15、你所熟悉的软件测试类型都有哪些?请试着分别比较这些不同的测试类型的区别与联系(如功能测试、性能测试……)?
Compatibility Testing(兼容性测试),也称“Configuration testing(配置测试)”,兼容性测试是将验证软件与其所依赖的环境的依赖程度,包括对硬件的依赖程度,对平台软件,其它软件的依赖程度,来检查程序能正常的运行的测试 Functional testing (功能测试),也称为 behavioral testing(行为测试)或黑盒测试,根据产品特征、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。本地化软件的功能测试,用于验证应用程序或网站对目标用户能正确工作。使用适当的平台、浏览器和测试脚本,以保证目标用户的体验将足够好,就像应用程序是专门为该市场开发的一样。 Performance testing(性能测试),性能测试是指通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试 主要包括以下三个方面:应用在客户端性能的测试,应用在网络上性能的测试和应用在服务器端性能的测试16、测试活动中,如果发现需求文档不完善或者不准确,怎么处理?
应该立即和相关人员进行协调交流。17、在软件测试过程中,如何定义一个问题是不是bug
定义是否是bug可以从三方面来看,一是功能是否符合需求说明书;二是站在使用者的角度,功能是否易操作、易理解;三是系统压力指标是否达到质量要求。
18、你认为做好测试计划工作的关键是什么?
软件测试计划就是在软件测试工作正式实施之前明确测试的对象,并且通过对资源、时间、风险、测试范围和预算等方面的综合分析和规划,保证有效的实施软件测试; 做好测试计划工作的关键 :目的,管理,规范19、一套完整的测试应该由哪些阶段组成?
测试计划、测试设计与开发、测试实施、测试评审与测试结论20、单元测试的主要内容?
模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试21、bug生命周期管理
发现BUG-->提交BUG-->指派BUG-->研发确认BUG-->研发去修复BUG-->回归验证BUG-->是否通过验证-->关闭BUG22、简述集成测试与系统测试关系?
(1)集成测试的主要依据概要设计说明书,系统测试的主要依据是需求设计说明书; (2)集成测试是系统模块的测试,系统测试是对整个系统的测试,包括相关的软硬件平台、网络以及相关外 设的测试。23、软件系统中除用户文档之外,文档测试还应该关注哪些文档?
开发文档- 软件需求说明书
- 数据库设计说明书
- 概要设计说明书
- 详细设计说明书
- 可行性研究报告
- 项目开发计划
- 测试计划
- 测试报告
- 开发进度月报
- 开发总结报告
24、如何理解压力、负载、性能测试测试
- 性能测试是一个较大的范围,实际上性能测试本身包含了性能、强度、压力、负载等多方面的测试内容
- 压力测试是对服务器的稳定性以及负载能力等方面的测试,是一种很平常的测试。增大访问系统的用户数量、或者几个用户进行大数据量操作都是压力测试。而负载测试是压力相对较大的测试,主要是测试系统在一种或者集中极限条件下的相应能力,是性能测试的重要部分。100 个用户对系统进行连续半个小时的访问可以看作压力测试,那么连续访问 8 个小时就可以认为负载测试,1000 个用户连续访问系统 1 个小时也可以看作是负载测试。
- 实际上压力测试和负载测试没有明显的区分。测试人员应该站在关注整体性能的高度上来对系统进行测试。
25、什么是系统瓶颈?
瓶颈主要是指整个软硬件构成的软件系统某一方面或者几个方面能力不能满足用户的特定业务要求,“特定”是指瓶颈会在某些条件下会出现,因为毕竟大多数系统在投入前。 严格的从技术角度讲,所有的系统都会有瓶颈,因为大多数系统的资源配置不是协调的,例如 CPU 使用率刚好达到 100%时,内存也正好耗尽的系统不是很多见。因此我们讨论系统瓶颈要从应用的角度讨论:关键是看系统能否满足用户需求。在用户极限使用系统的情况下,系统的响应仍然正常,我们可以认 为改系统没有瓶颈或者瓶颈不会影响用户工作。 因此我们测试系统瓶颈主要是实现下面两个目的: -发现“表面”的瓶颈。主要是模拟用户的操作,找出用户极限使用系统时的瓶颈,然后解决瓶颈,这是性能测试的基本目标。 -发现潜在的瓶颈并解决,保证系统的长期稳定性。主要是考虑用户在将来扩展系统或者业务发生变化时,系统能够适应变化。满足用户目前需求的系统不是 最好的,我们设计系统的目标是在保证系统整个软件生命周期能够不断适应用户的变化,或者通过简单扩展系统就可以适应新的变化。26、功能测试用例需要详细到什么程度才是合格的?
实际上,软件测试用例的详细程度首先要以覆盖到测试点为基本要求。27、配置和兼容性测试的区别是什么?
配置测试的目的是保证软件在其相关的硬件上能够正常运行,而兼容性测试主要是测试软件能否与不同的软件正确协作。28、完全测试程序是可能的吗?
软件测试初学者可能认为拿到软件后需要进行完全测试,找到全部的软件缺陷,使软件“零缺陷”发布。实际上完全测试是不可能的。主要有以下一个原因: -完全测试比较耗时,时间上不允许; -完全测试通常意味着较多资源投入,这在现实中往往是行不通的; -输入量太大,不能一一进行测试; -输出结果太多,只能分类进行验证; -软件实现途径太多; -软件产品说明书没有客观标准,从不同的角度看,软件缺陷的标准不同; 因此测试的程度要根据实际情况确定。29、软件测试的风险主要体现在哪里?
我们没有对软件进行完全测试,实际就是选择了风险,因为缺陷极有可能存在没有进行测试的部分。 举个例子,程序员为了方便,在调试程序时会弹出一些提示信息框,而这些提示只在某种条件下会弹出,碰巧程序发布前这些代码中的一些没有被注释掉。在测试时测试工程师又没有对其进行测试。如果客户碰到它,这将是代价昂贵的缺陷,因为交付后才被客户发现。 因此,我们要尽可能的选择最合适的测试量,把风险降低到最小。