软件测试实习笔记1

  • 格式:doc
  • 大小:178.00 KB
  • 文档页数:11

***************************学习性能测试,掌握课程内容性能测试知识点总结:--典型性能指标虚拟并发用户数(Total Virtual Users)单位:个交易响应时间(Response Time)单位:second/ millisecond并发用户/响应时间图负载图每分钟交易数(Trans Rate)吞吐量图(ThroughOut)--服务器负载压力指标操作系统CPU内存硬盘数据库* User Connections :用户连接数,也就是数据库的连接数量;* Number of deadlocks:数据库死锁;* Butter Cache hit :数据库Cache的命中情况--应用系统的指标应用系统根据自身功能性能要求确定的指标:比如支持的画面数量TAG点的数量一幅画面中支持的最多控件数量检控更新周期能够管理的IP数量--性能测试系统的性能是一个很大的概念,覆盖面非常广泛,对一个软件系统而言包括执行效率、资源占用、稳定性、安全性、兼容性、可扩展性、可靠性等等,我们这里重点讨论的负载压力是系统性能的一个重要方面。

性能测试用来保证产品发布后系统的性能满足用户需求。

性能测试在软件质量保证中起重要作用。

--负载测试负载测试是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等如何决定系统的性能,例如稳定性和响应等。

负载测试通常描述一种特定类型的压力测试,即增加用户数量以对应用程序进行压力测试。

--压力测试压力测试通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大的服务级别的测试。

通俗地讲,压力测试是为了发现在什么条件下您的应用程序的性能会变得不可接受。

--负载压力测试负载压力测试是性能测试的重要组成部分,负载压力测试包括:并发性能测试(重点)疲劳强度测试大数据量测试--并发性能测试考察客户端应用的性能,测试的入口是客户端并发性能测试的过程,是一个负载测试和压力测试的过程。

即逐渐增加并发虚拟用户数负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标、资源监控指标等来确定系统并发性能的过程。

并发性能测试是负载压力测试中的重要内容。

--疲劳强度测试通常是采用系统稳定运行情况下能够支持的最大并发用户数或者日常运行用户数,持续执行一段时间业务,通过综合分析交易执行指标和资源监控指标来确定系统处理最大工作量强度性能的过程。

--大数据量测试大数据量测试的两种类型独立的数据量测试针对某些系统存储、传输、统计、查询等业务进行大数据量测试综合数据量测试和压力性能测试、负载性能测试、疲劳性能测试相结合的综合测试方案--考察系统配置连接到系统的用户数应用程序客户端计算机的配置情况(硬件、内存、操作系统、软件、开发工具等)使用的数据库和Web 服务器的类型(硬件、数据库类型、操作系统、文件服务器等)服务器与应用程序客户端之间的通信方式前端客户端与后端服务器之间的中间件配置和应用程序服务器可能影响响应时间的其他网络组件(调制解调器等)--分析使用模型考虑哪些用户使用系统每种类型用户的数量每个用户的典型任务确定活动峰值期的发生时间负载峰值期间的典型活动--并发用户估算结合某类软件高峰期,范围,做一个推论形的方案,比如30:1,前指在线用户,后指并发用户。

用得频繁,比率就变为如15:1最大200:1 最小15:1--选择测试工具的策略自动负载测试开放资源(OpenSource)测试自主开发代码测试--开放资源(OpenSource)测试开放系统测试体系-OpenSTA /)TestMaker(/)Apache JMeter (/jmeter/)--性能测试成功标志系统运行正常重复三次,每次结果在误差允许之内。

如目标值的上下20%之内。

资源监控指标能够获取有效值。

--WEB 测试注意点***************************掌握用户验收测试课程内容--定义用户验收测试是软件开发结束后,用户对软件产品投入实际应用以前进行的最后一次质量检验活动。

它要回答开发的软件产品是否符合预期的各项要求,以及用户能否接受的问题。

由于它不只是检验软件某个方面的质量,而是要进行全面的质量检验,并且要决定软件是否合格,因此验收测试是一项严格的正式测试活动。

需要根据事先制订的计划,进行软件配置评审、功能测试、性能测试等多方面检测。

--用户验收测试的准入条件在真正进行用户验收测试之前一般应该已经完成了以下工作(也可以根据实际情况有选择地采用或增加):软件开发已经完成,并全部解决了已知的软件缺陷。

验收测试计划已经过评审并批准,并且置于文档控制之下。

对软件需求说明书的审查已经完成。

对概要设计、详细设计的审查已经完成。

对所有关键模块的代码审查已经完成。

对单元、集成、系统测试计划和报告的审查已经完成。

所有的测试脚本已完成,并至少执行过一次,且通过评审。

使用配置管理工具且代码置于配置控制之下。

软件问题处理流程已经就绪。

已经制定、评审并批准验收测试完成标准。

--用户验收测试(UAT)的目的:从最终用户的角度,验证软件系统符合需求定义的各种功能和技术需求,验证各业务流程执行情况,为用户是否接受软件系统提供决策依据。

***************************了解测试自动化,JUnit,TDDJunitJUnit是由Erich Gamma 和Kent Beck 编写的一个回归测试框架(regression testing framework)。

Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。

Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。

JUnit是一个开放源代码的Java测试框架,用于编写和运行可重复的测试。

他是用于单元测试框架体系xUnit的一个实例(用于java语言)。

它包括以下特性:1、用于测试期望结果的断言(Assertion)2、用于共享共同测试数据的测试工具3、用于方便的组织和运行测试的测试套件4、图形和文本的测试运行器另外junit是在xp编程和重构(refactor)中被极力推荐使用的工具,因为在实现自动单元测试的情况下可以大大的提高开发的效率,但是实际上编写测试代码也是需要耗费很多的时间和精力的,那么使用这个东东好处到底在哪里呢?笔者认为是这样的:1、对于xp编程而言,要求在编写代码之前先写测试,这样可以强制你在写代码之前好好的思考代码(方法)的功能和逻辑,否则编写的代码很不稳定,那么你需要同时维护测试代码和实际代码,这个工作量就会大大增加。

因此在xp 编程中,基本过程是这样的:构思-》编写测试代码-》编写代码-》测试,而且编写测试和编写代码都是增量式的,写一点测一点,在编写以后的代码中如果发现问题可以较块的追踪到问题的原因,减小回归错误的纠错难度。

2、对于重构而言,其好处和xp编程中是类似的,因为重构也是要求改一点测一点,减少回归错误造成的时间消耗。

3、对于非以上两种情况,我们在开发的时候使用junit写一些适当的测试也是有必要的,因为一般我们也是需要编写测试的代码的,可能原来不是使用的junit,如果使用junit,而且针对接口(方法)编写测试代码会减少以后的维护工作,例如以后对方法内部的修改(这个就是相当于重构的工作了)。

另外就是因为junit有断言功能,如果测试结果不通过会告诉我们那个测试不通过,为什么,而如果是想以前的一般做法是写一些测试代码看其输出结果,然后再由自己来判断结果使用正确,使用junit的好处就是这个结果是否正确的判断是它来完成的,我们只需要看看它告诉我们结果是否正确就可以了,在一般情况下会大大提高效率。

安装JUnit安装很简单,先到以下地址下载一个最新的zip包:/junit/下载完以后解压缩到你喜欢的目录下,假设是JUNIT_HOME,然后将JUNIT_HOME下的junit.jar包加到你的系统的CLASSPATH环境变量中,对于IDE环境,对于需要用到的junit的项目增加到lib中,其设置不同的IDE有不同的设置,这里不多讲。

如何使用JUnit写测试?最简单的范例如下:1、创建一个TestCase的子类package junitfaq;import java.util.*;import junit.framework.*;public class SimpleTest extends TestCase {public SimpleTest(String name) {super(name);}2、写一个测试方法断言期望的结果public void testEmptyCollection() {Collection collection = new ArrayList();assertTrue(collection.isEmpty());}注意:JUnit推荐的做法是以test作为待测试的方法的开头,这样这些方法可以被自动找到并被测试。

3、写一个suite()方法,它会使用反射动态的创建一个包含所有的testXxxx 方法的测试套件public static Test suite() {return new TestSuite(SimpleTest.class);}4、写一个main()方法以文本运行器的方式方便的运行测试public static void main(String args[]) {junit.textui.TestRunner.run(suite());}}5、运行测试以文本方式运行:java junitfaq.SimpleTest通过的测试结果是:.Time: 0OK (1 tests)Time上的小点表示测试个数,如果测试通过则显示OK。

否则在小点的后边标上F,表示该测试失败。

每次的测试结果都应该是OK的,这样才能说明测试是成功的,如果不成功就要马上根据提示信息进行修正了。

如果JUnit报告了测试没有成功,它会区分失败(failures)和错误(errors)。

失败是你的代码中的assert方法失败引起的;而错误则是代码异常引起的,例如ArrayIndexOutOfBoundsException。

以图形方式运行:java junit.swingui.TestRunner junitfaq.SimpleTest通过的测试结果在图形界面的绿色条部分。

以上是最简单的测试样例,在实际的测试中我们测试某个类的功能是常常需要执行一些共同的操作,完成以后需要销毁所占用的资源(例如网络连接、数据库连接,关闭打开的文件等),TestCase类给我们提供了setUp方法和tearDown 方法,setUp方法的内容在测试你编写的TestCase子类的每个testXxxx方法之前都会运行,而tearDown方法的内容在每个testXxxx方法结束以后都会执行。