软件测试的学习方法

发布时间:2017-02-16 08:55

软件测试就是利用测试工具按照测试方案和流程对产品进行功能和性能测试,那么如何学习软件测试呢?别走开,接下来,小编就和大家分享软件测试的学习方法,希望对大家有帮助!

软件测试的学习方法

软件测试的学习方法:

一、抓包工具各自的特点:

1、httpwatch

特点:嵌入浏览器的抓包工具,结合浏览器使用界面清晰,方便易用,且提供自动化api,打开--录制--保存结果文件;但只能查看抓取的信息,不能自定义修改;

2、fiddler

特点:客户端抓包工具,通过代理方式获取浏览器信息,且支持自定义请求(composer),自定义服务器返回等;但界面不太直观,且只能抓取http协议;

3、firebug

特点:fixfox自带的插件,与httpwatch功能非常相似,且支持控制跟踪审查元素,可以修改控件名字等,功能十分强大,抓包只是firebug其中很小一个功能;

4、科来

特点:此工具直接监视网卡,既能抓还能修改,抓取内容更多更详细,不仅仅支持http协议,还支持tcp/udp/ftp/pop3等协议,适合对协议要求相对较高的抓包活动;

二、阐述操作系统中的系统调用、中断、上下文切换这三个概念的含义

系统调用:

在操作系统上如果想要运行你的程序,就得靠自己从面向底层硬件的代码编起,但这件事太枯燥,且不是每个人都能做到,这样操作系统就替我们做这些事情,把硬件封装,统一提供一套接口,这些接口就是系统调用;

系统调用把应用程序的请求传给内核,当操作系统接收到系统调用请求后,会让处理器进入内核模式,调用相应的内核函数完成所需的处理,当处理完成后,操作系统会让处理器返回用户模式,来执行用户代码,提高了我们写程序的效率,所以系统调用此时充当的角色就是一个接口,外面由用户程序调用,内部连接内核的其他部分,共同实现用户的请求;

上下文:

上下文简单来说就是一个环境,相对于进程而言,就是进程执行时的环境,具体来说就是各个变量和数据,包括进程打开的文件,内存信息等;当发生进程调度时,导致进程切换时,进程的运行环境也应及时切换,CPU切换到另外一个进程需要保存当前进程的状态并恢复另一个进程的状态:当前运行任务转为就绪状态,另一个被选定的就绪任务成为当前任务,上下文切换包括保存当前任务的运行环境,恢复将要运行任务的运行环境;上下文切换就是这样一个过程,他允许CPU记录并恢复各种正在运行程序的状态,使它能够完成切换操作;

通常在三种情况下可能会发生上下文切换:中断处理,多任务处理,用户态切换;

中断:

中断是为了设备与CPU之间的通信,是实现多道程序设计的必要条件,是CPU对系统发生的某个事件作出一种反应,CPU暂停正在执行的程序,保留现场后自动转去处理相应的事件,处理完该事件后,到适当的时候返回断点,继续完成被打断的程序;例如:读盘,读一半,盘有问题,无法读了,产生中断,解决后,程序恢复,软件错误也会中断;特点:中断是随机的,可恢复的,自动进行处理的;

三、操作系统中的进程的概念和进程都有哪些状态

进程是操作系统结构的基础,是一次程序的执行,是一个程序及其数据在处理机上顺序执行时发生的活动;程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。

进程状态:

就绪状态:进程已获取处理器外的所需资源,等待分配处理器资源,只要分配了处理器进程就可执行。

运行状态:进程占用处理器资源;

阻塞状态:由于进程等待某种条件(如I/O操作或进程同步),在条件满足之前无法继续执行

四、 DNS根服务器的概念是什么?

当客户端通过浏览器访问网站时候,输入的是域名需要把域名转化为网络识别的ip地址(即DNS解析),首先会查找本地域名缓存,如果不存在,向上一级当地ISP的DNS查找,比如你用的联通网络,会去查找联通的本地缓存,如果仍然查不到,继续上一级,最终到根目录服务器,其实根目录服务器并没有具体的域名对应信息,但他可以告诉你去哪台服务器去找,直到最终找到为止;

至于全球的13组根域名服务器,1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本,由互联网域名与号码分配机构ICANN统一管理。

五、网络拓扑结构一般分几层,具体叫什么?

分三层,接入层,汇聚层,核心层;

六、性能测试的概念是什么?负载测试、压力测试、配置测试呢?

性能测试:在一定的负载情况下,系统的相应时间等特性是否满足特定的性能需求;

负载测试:通过测试系统在资源超负荷情况下的表现,以发现设计上的错误或验证系统的负载能力;Linux系统中通过top命令查看,load average:第一分钟内平均负载(待处理的线程数),第五分钟内平均负载,第十五分钟内平均负载;业界定义值超过cpu核数的4倍,这个时候负载就重了;

压力测试:指被测系统在一定资源(CPU/内存)饱和的情况下,系统的运行情况;与负载测试的区别是没有超负荷,在性能允许的范围内测试;

可靠性测试:被测系统在一定负载情况下长时间运行下运行情况;

配置测试:通过调整被测试系统软硬件的不同配置,找到一个最合适被测系统的配置或者获得被测系统在不同配置下的运行情况;比如配置线程数,由于系统本身的特性,比如上下文切换影响性能的考虑,并不是越多越好,而多少合适,是通过配置测试实验出哪个配置性能最好;

七、 用自己的话描述TPS、PV、UV的基本含义

TPS:每秒事务数,单位时间内被系统处理的事务数量,这里的事务只指一个动作;

PV:访问一个URL产生一个PV,不管此用户是同一个还是多个,只要点击了URL就有一个PV,即页面访问量;

UV:独立用户访问量,单个用户访问站点的所有页面,此用户可以产生多个PV,但算一个UV;日志分析中一般通过user-agent和IP来判断是否是一个用户;

八、并发用户数和在线用户数的区别是什么?

并发用户数:多个用户同时操作,会对系统造成负载;

在线用户数:系统在线人数,包括操作的人数和只登陆不操作(对系统不会造成负载)的用户;

九、用自己的话描述选择性能测试工具需要关注哪些方面

1、从成本上考虑,包括工具成本和学习成本,工具成本是工具是否开源,因为购买工具也是很花钱的,不是每个公司都可以支撑得了。学习成本就是在职人员是否具备使用这个工具的能力,相应的语言编写能力等,如果没有需要花费多久时间去学习等等,这都需要成本的;选择成本要在可接受范围内去选择工具;

2、通信协议的考虑,性能测试工具都是基于协议的,如果被测系统是基于标准的TCP/IP协议,那可以有很多工具选择,如SMTP/FTP/HTTP等可以选择相应的工具;如果被测系统是基于自有协议的,性能测试工具可能不支持,那就需要自己想办法去实现;

3、生命力,选择性能测试工具需要考虑他的活力,软件更新周期,市场占有率等,就是发展前途如何,可以持久使用,避免不必要的损失;

4、跨平台 ,类似于JAVA的跨平台能力,适合更多平台的客户;

软件测试的原则:

1.软件开发人员即程序员应当避免测试自己的程序不管是程序员还是开发小组都应当避免测试自己的程序或者本组开发的功能模块。若条件允许,应当由独立于开发组和客户的第三方测试组或测试机构来进行软件测试。但这并不是说程序员不能测试自己的程序,而且更加鼓励程序员进行调试,因为测试由别人来进行会更加有效、客观,并且容易成功,而允许程序员自己调试也会更加有效和针对性。

2. 应尽早地和不断地进行软件测试

应当把软件测试贯穿到整个软件开发的过程中,而不应该把软件测试看作是其过程中的一个独立阶段。因为在软件开发的每一环节都有可能产生意想不到的问题,其影响因素有很多,比如软件本身的抽象性和复杂性、软件所涉及问题的复杂性、软件开发各个阶段工作的多样性,以及各层次工作人员的配合关系等。所以要坚持软件开发各阶段的技术评审,把错误克服在早期,从而减少成本,提高软件质量。

3.对测试用例要有正确的态度:第一,测试用例应当由测试输入数据和预期输出结果这两部分组成;第二,在设计测试用例时,不仅要考虑合理的输入条件,更要注意不合理的输入条件。因为软件投入实际运行中,往往不遵守正常的使用方法,却进行了一些甚至大量的意外输入导致软件一时半时不能做出适当的反应,就很容易产生一系列的问题,轻则输出错误的结果,重则瘫痪失效!因此常用一些不合理的输入条件来发现更多的鲜为人知的软件缺陷。

4.人以群分,物以类聚,软件测试也不例外,一定要充分注意软件测试中的群集现象,也可以认为是“80-20原则”。不要以为发现几个错误并且解决这些问题之后,就不需要测试了。反而这里是错误群集的地方,对这段程序要重点测试,以提高测试投资的效益。

5.严格执行测试计划,排除测试的随意性,以避免发生疏漏或者重复无效的工作。

6.应当对每一个测试结果进行全面检查。一定要全面地、仔细地检查测试结果,但常常被人们忽略,导致许多错误被遗漏。

7.妥善保存测试用例、测试计划、测试报告和最终分析报告,以备回归测试及维护之用。

在遵守以上原则的基础上进行软件测试,可以以最少的时间和人力找出软件中的各种缺陷,从而达到保证软件质量的目的。

软件测试的学习方法的评论条评论