软件测试常用方法及解析
计科09-1班 姚伟 08093342
一、软件测试概述
软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试的目的,第一是确认软件的质量,其一方面是确认软件做了你所期望的事情(Do the right thing),另一方面是确认软件以正确的方式来做了这个事件(Do it right)。第二是提供信息,比如提供给开发人员或程序经理的反馈信息,为风险评估所准备的信息。第三软件测试不仅是在测试软件产品的本身,而且还包括软件开发的过程。如果一个软件产品开发完成之后发现了很多问题,这说明此软件开发过程很可能是有缺陷的。因此软件测试的第三个目的是保证整个软件开发过程是高质量的。
软件质量是由几个方面来衡量的:一、在正确的时间用正确的的方法把一个工作做正确(Doing the right things right at the right time.)。二、符合一些应用标准的要求,比如不同国家的用户不同的操作习惯和要求,项目工程中的可维护性、可测试性等要求。三、质量本身就是软件达到了最开始所设定的要求,而代码的优美或精巧的技巧并不代表软件的高质量(Quality is defined as conformance to requirements, not as “goodness” or “elegance”.)。四、质量也代表着它符合客户的需要(Quality also means “meet customer needs”.)。作为软件测试这个行业,最重要的一件事就是从客户的需求出发,从客户的角度去看产品,客户会怎么去使用这个产品,使用过程中会遇到什么样的问题。只有这些问题都解决了,软件产品的质量才可以说是上去了。
测试人员在软件开发过程中的任务:
1、寻找Bug;
2、避免软件开发过程中的缺陷;
3、衡量软件的品质;
4、关注用户的需求。
总的目标是:确保软件的质量。
二、常用的软件测试方法
(一) 黑盒测试
黑盒测试顾名思义就是将被测系统看成一个黑盒,从外界取得输入,然后再输出。整个测试基于需求文档,看是否能满足需求文档中的所有要求。黑盒测试要求测试者在测试时不能使用与被测系统内部结构相关的知识或经验,它适用于对系统的功能进行测试。
黑盒测试的优点有:
1)比较简单,不需要了解程序内部的代码及实现;
2)与软件的内部实现无关;
3)从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;
4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;
5)在做软件自动化测试时较为方便。
黑盒测试的缺点有:
1)不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%;
2)自动化测试的复用性较低。
(二) 白盒测试
白盒测试是指在测试时能够了解被测对象的结构,可以查阅被测代码内容的测试工作。它需要知道程序内部的设计结构及具体的代码实现,并以此为基础来设计测试用例。如下例程序代码:
HRESULT Play( char* pszFileName )
{
if ( NULL == pszFileName )
return;
if ( STATE_OPENED == currentState )
{
PlayTheFile();
}
return;
}
读了代码之后可以知道,先要检查一个字符串是否为空,然后再根据播放器当前的状态来执行相应的动作。可以这样设计一些测试用例:比如字符串(文件)为空的话会出现什么情况;如果此时播放器的状态是文件刚打开,会是什么情况;如果文件已经在播放,再调用这个函数会是什么情况。也就是说,根据播放器内部状态的不同,可以设计很多不同的测试用例。这些是在纯粹做黑盒测试时不一定能做到的事情。
白盒测试的直接好处就是知道所设计的测试用例在代码级上哪些地方被忽略掉,它的优点是帮助软件测试人员增大代码的覆盖率,提高代码的质量,发现代码中隐藏的问题。
白盒测试的缺点有:
1)程序运行会有很多不同的路径,不可能测试所有的运行路径;
2)测试基于代码,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;
3)系统庞大时,测试开销会非常大。
(三) 基于风险的测试
基于风险的测试是指评估测试的优先级,先做高优先级的测试,如果时间或精力不够,低优先级的测试可以暂时先不做。有如下一个图,横轴代表影响,竖轴代表概率,根据一个软件的特点来确定:如果一个功能出了问题,它对整个产品的影响有多大,这个功能出问题的概率有多大?如果出问题的概率很大,出了问题对整个产品的影响也很大,那么在测试时就一定要覆盖到。对于一个用户很少用到的功能,出问题的概率很小,就算出了问题的影响也不是很大,那么如果时间比较紧的话,就可以考虑不测试。
基于风险测试的两个决定因素就是:该功能出问题对用户的影响有多大,出问题的概率有多大。其它一些影响因素还有复杂性、可用性、依赖性、可修改性等。测试人员主要根据事情的轻重缓急来决定测试工作的重点。
(四) 基于模型的测试
模型实际上就是用语言把一个系统的行为描述出来,定义出它可能的各种状态,以及它们之间的转换关系,即状态转换图。模型是系统的抽象。基于模型的测试是利用模型来生成相应的测试用例,然后根据实际结果和原先预想的结果的差异来测试系统,过程如下图所示。
三、软件测试的类型
常见的软件测试类型有:
(一) BVT (Build Verification Test)
BVT是在所有开发工程师都已经检入自己的代码,项目组编译生成当天的版本之后进行,主要目的是验证最新生成的软件版本在功能上是否完整,主要的软件特性是否正确。如无大的问题,就可以进行相应的功能测试。BVT优点是时间短,验证了软件的基本功能。缺点是该种测试的覆盖率很低。因为运行时间短,不可能把所有的情况都测试到。
(二) Scenario Tests(基于用户实际应用场景的测试)
在做BVT、功能测试的时候,可能测试主要集中在某个模块,或比较分离的功能上。当用户来使用这个应用程序的时候,各个模块是作为一个整体来使用的,那么在做测试的时候,就需要模仿用户这样一个真实的使用环境,即用户会有哪些用法,会用这个应用程序做哪些事情,操作会是一个怎样的流程。加了这些测试用例后,再与BVT、功能测试配合,就能使软件整体都能符合用户使用的要求。Scenario Tests优点是关注了用户的需求,缺点是有时候难以真正模仿用户真实的使用情况。
(三) Smoke Test
在测试中发现问题,找到了一个Bug,然后开发人员会来修复这个Bug。这时想知道这次修复是否真的解决了程序的Bug,或者是否会对其它模块造成影响,就需要针对此问题进行专门测试,这个过程就被称为Smoke Test。在很多情况下,做Smoke Test是开发人员在试图解决一个问题的时候,造成了其它功能模块一系列的连锁反应,原因可能是只集中考虑了一开始的那个问题,而忽略其它的问题,这就可能引起了新的Bug。Smoke Test优点是节省测试时间,防止build失败。缺点是覆盖率还是比较低。
此外,Application Compatibility Test(兼容性测试),主要目的是为了兼容第三方软件,确保第三方软件能正常运行,用户不受影响。Accessibility Test(软件适用性测试),是确保软件对于某些有残疾的人士也能正常的使用,但优先级比较低。其它的测试还有Functional Test(功能测试)、Security Test(安全性测试)、Stress Test(压力测试)、Performance Test(性能测试)、Regression Test(回归测试)、Setup/Upgrade Test(安装升级测试)等。
四、我学过的软件测试知识
在软件工程这门课中,我们初步了解了白盒测试与黑盒测试的思想,也认识到了软件测试在软件开发中的重要性。今年暑假,在一位研究生学生的指导下,我掌握了一些软件测试的方法和工具。我们共同开发了一个小型的软件,软件可以对简单的程序进行轨迹分析、数据依赖分析、控制依赖分析等工作。通过这一系列的工作,我对白盒测试方法有了更深一步的了解和掌握。
下面是我们小软件的演示:
首先,对程序进行轨迹分析,跟踪程序运行的轨迹,这在软件测试中是相当重要的。我们的软件不但可以动态显示程序运行的轨迹,而且还可以直观的看到每一次运行的它是第几次运行。并且可以得到执行过的命令行数及行号。如图1所示。
图1
然后,我们对程序进行数据依赖分析。在数据依赖分析中,我们可以直观的看到程序中某行定义及用到的数据。当你在下拉菜单中选定行号后,程序会在文本框中显示出改行中的数据。如图2所示。
图2
之后,对程序进行控制依赖分析。我们可以直观的看到程序中行之间的依赖关系。如图3所示。
图3
同时,我们对程序中间表示进行分析。此步对之前的分析步骤进行整合,以便下一步应用。如图4.
图4
最后,对程序进行切片分析。如图5.
图5
五、成为优秀测试工程师的要求
要成为一名优秀的测试工程师,首先对计算机的基本知识要有很好的了解,精通一门或多门的编程语言,具备一定的程序调试技能,掌握测试工具的开发和使用技术。同时要比较细心,会按照任务的轻重缓急来安排自己的工作,要有很好的沟通能力。此外,还要善于用非常规的方式思考问题,尽可能多的参加软件测试项目,在实践中学习技能,积累经验,不断分析和总结软件开发过程中可能出错的环节。这样,一名优秀的测试工程师就从软件测试的实践中脱颖而出了。
参考文献:
[1] 软件工程-理论、方法与实践[M].北京:高等教育出版社,2005.
[2] 微软官方博客.
第二篇:学科前沿讲座论文
柔性交流输电系统的发展与应用
摘要
随着科技和经济的发展,人们对电网的可靠性和可控性的要求越来越高。要提高电网的安全运行水平和提供良好的电能质量,除了需要电网的合理规划和可靠的电力设备外,先进的调节控制手段也是必不可少的。随着电力电子技术的飞速发展,大容量电力电子技术开始在电力系统控制中得到应用。具有快速的、可频繁操作的、可靠动作的电力电子开关开始逐步取代机械开关,在电力系统中引起了一系列的革命,使现代电力系统的控制调节更加灵活和便捷,并由此诞生了柔性交流输电系统(Flexible AC Transmission Systems,FACTS)。本文主要阐述了FACTS技术的发展过程及基本概念,对FACTS的发展背景、应用优点、发展前景及主要FACTS控制器进行了概述。
关键词: 灵活交流输电 FACTS 柔性交流输电
一、FACTS的概念
FACTS是从综合电力电子技术、微处理和微电子技术、通信技术和控制技术而形成的用于灵活快速控制交流输电的新技术。这一概念是19xx年由美国电力科学院N.G.Hingorani博士提出。19xx年IEEE PES学会公布了FACTS及FACTS装置的定义和规范用语[1],根据这一文献,柔性交流输电系统是指装有电力电子型或其他静止型控制器以加强可控性和增加功率传输能力的交流输电系统。而FACTS装置是用于提供一个或多个控制交流系统参数的电力电子系统或其他静止设备。
二、FACTS技术的发展
FACTS技术的发展分为三个阶段[2]:
(1)第一代FACTS技术。从最早出现的静止无功补偿器(SVC)开始,主要是由晶闸管开关快速控制的电容器和电抗器组成的装置来提供动态电压支持,其技术基础是常规晶闸管整流器(SCR)。第一代FACTS装置是晶闸管控制的串联电容器,它利用SCR控制串联在输电线路中的电容器组来控制线路阻抗,从而提高电能输送能力。
(2)第二代FACTS技术。第二代FACTS技术同样具有支持电压和控制功率
等功能,在负荷外部回路中不需要加设大型电力设备(如电容器和电抗器组或者移相变压器等)。这些新装置,如静止同步补偿器(STATCOM)和静止同步串联补偿器(SSSC)等采用了门极可关断设备(GTO、IGBT)等全控型器件,用电子回路模拟出电容器和电抗器组的作用,因而装置造价大大降低,性能却明显提高。
(3)第三代FACTS技术。这一代FACTS技术将两台或多台控制器复合成一组FACTS装置,并使具有一个共同的、统一的控制系统。如由一台STATCOM和一台SSSC复合而成的统一潮流控制器(UPFC),它在控制线路阻抗、电压或功率角的同时,还可以控制输电线路的有功和无功潮流。
三、FACTS技术的功能作用[3]
(1)提高输电线路的输送容量。采用FACTS技术可提高输电线路的输送功率极限,使输送功率可以接近导线的热极限,从而可减缓新建输电线路的需要和提高输电线路的利用率。不仅节约输电成本和占地,而且有利于环境保护。FACTS的出现对电网的建设规划和设计将产生重大的影响。
(2)优化输电网络的运行条件。FACTS控制器有助于减少和消除环流或振荡等大电网弊端,解决输电网中“瓶颈”环节的问题,可以提高现有输电网的稳定性、可靠性和供电质量,减少网损和系统热备用容量,防止连锁性事故扩大,减少事故恢复时间及停电损失。
通过对FACTS装置的快速、平整调整,可以方便、迅速地改变系统潮流。这对于正常运行条件下控制功率走向,提高现有网络的传输能力,在事故情况下防止因某条线路过负荷引起的连锁跳闸是十分有利的。
(3)扩展了电网的运行控制技术。FACTS控制器一方面可对已有常规稳定或反事故控制的功能起到补充、扩大和改进的作用。另一方面,电网的能量管理系统(EMS)必然要将FACTS控制器的作用综合进去,使得EMS中的自动发电控制(AGC)、经济调度控制(EDC)和最优电力潮流(OPF)等功能的效益得到提高,有助于建设全网统一的实时控制中心。
(4)扩大了交流输电的传统应用范围。整套应用并协调控制的FACTS控制器将使常规交流输电灵活化,扩大交流输电的功能范围,使其在更多方面发挥作用,甚至原属于HVDC专有应用范围也可以采用交流输电,如定向传输电力、功率调整、延长水下或地下交流输电距离等。
(5)解决了大电网互联的问题。FACTS技术带来的灵活控制潮流和提高稳定性的能力为大电网互联运行提供了技术保障,从而实现了能源的优化配置,降低了整个电力系统的热备用容量和发电成本,提高了电力设备的使用效率。因此,FACTS技术在电网中的广泛应用,可以解决的主要问题包括互联大电网的稳定问题、输电网中瓶颈问题和负荷中心动态无功支撑问题。
四、主要FACTS控制器
1、并联型FACTS控制器
1)静止无功补偿器(SVC)
(1)晶闸管控制电抗器(TCR)
TCR是一种并联的晶闸管控制的电感,通过对晶闸管阀进行部分导通控制,从而控制流过并联电抗器的电流,进而改变其等效的基波电抗,达到调节补偿功率的大小。
(2)晶闸管投切电抗器(TSR)
TSR是一种并联的晶闸管投切的电感,通过对晶闸管阀进行全导通或全关断控制,可阶梯式改变其等效电抗,从而达到阶梯式改变所消耗的无功功率的目的。对晶闸管阀不使用触发角控制可以降低成本和消耗,其缺点是不能连续控制有效阻抗。
(3)晶闸管投切电容器(TSC)
TSC是一种并联的晶闸管投切的电容器,通过对晶闸管阀进行全导通或全关断控制,可阶梯式改变其等效容抗,从而达到阶梯式改变注入系统无功功率的目的。
2)静止同步补偿器(STATCOM)[4]
STATCOM是一种并联的、能进行无功补偿的静止同步“发电机”,其容性和感性输入电流可独立于注入点的电压而进行控制,它是FACTS的核心控制器之一,属于基于变换器型FACTS控制器,变换器可以采用电压型变换器(VSC)和电流型变换器(CSC)。
3)静止同步发电机(SSG)
SSG是一种由适当电源供电的静止自换流开关式功率变换器,可与交流电力系统并网运行,通过调节其多相输出电压而达到与电网交换可独立控制的有功和无功功率的目的。SSG是通过在STATCOM直流侧引入电源或大容量储能系统而发展出
来的一种广义并联控制器,即是STATCOM和一个既能吸收又能放出能量的储能设备的组合体。
2、串联型FACTS控制器
1)晶闸管控制串联电容器(TCSC)
TCSC是一种阻抗补偿设备,由一组电容器和一个晶闸管控制的电抗器并联组成,串联在传输线上用以提供连续可控的补偿容(感)抗。
2)晶闸管投切串联电容器(TSSC)
TSSC是一种容性阻抗补偿设备,由一组电容器组和一个晶闸管投切的电抗器并联组成,串联在传输线上应以提供阶梯式控制的补偿容抗。
3)晶闸管控制串联电抗器(TCSR)
TCSR是一种感性阻抗补偿设备,由电抗器和一个晶闸管控制的电抗器并联组成,串联在传输线上用以提供连续可控的补偿感抗。
4)静止同步串联补偿器(SSSC)[5]
SSSC是一种不含外部电源的静止式同步无功补偿设备,串联在输电线上并产生相位与线路电流正交、幅值可独立控制的电压,能通过增加或减少线路上的无功压降而控制传输功率的大小。
3、并联-串联组合型FACTS控制器
1)统一潮流控制器(UPFC)[6]
UPFC是由STATCOM和SSSC基于共同的直流链路耦合形成,允许有功功率在SSSC和STATCOM的交流输出端双向流动,并在无需任何附加储能或电源设备的情况下即可同时进行有功和无功功率补偿的一种并联-串联组合型FACTS控制器。它不但能提供独立可控的并联无功功率补偿,而且可以通过向线路注入相角不受约束的串联补偿电压,同时或有选择性地控制传输线上的电压、阻抗和相角,实现有功和无功潮流控制。
2)晶闸管控制移相变压器(TCPST)
TCPST是一种采用晶闸管开关调节、可提供快速可变相角的移相变压器,移相是通过在原有电压上叠加一个相位约与其垂直的电压相量来实现的。
3)相间功率控制器(IPC)
IPC是一种可对有功和无功功率进行控制的组合型FACTS控制器,它的每相包括
一组并联的、分别从属于独立移相单元的容性和感性支路,通过采用常规或电力电子电路来调整各支路的相移或阻抗,达到分别控制线路有功和无功功率的目的。
FACTS的应用开辟了提高交流输电运行整体控制能力的手段,为特高压交流输电系统性能的提高指出了方向。但随着FACTS技术在电网中应用的越来越普遍,其面临的问题也越来越凸显。如FACTS控制器的造价问题,FACTS对现有的试验和研究方法提出了新的要求,并且与FACTS相关的其他技术也会提出更高的要求等等。
相信随着科技的进步,随着新的FACTS装置的研制和应用成功,柔性输电技术会发展的越来越快,会提供更加可控的、更加稳定的电网系统,特别是随着国家智能电网工程的实施,随着风电等新能源的广泛应用,FACTS技术会迎来一个更加广阔的空间,会得到越来越普遍的应用。
参考文献:
[1] IEEE Transactions on Power Delivery,Vol.12, NO.4,October. 1997,Proposed Terms and Definitions For FACTS.
[2] 耿建风. 柔性交流输电系统应用技术. 北京:中国电力出版社,2010.12.
[3] 杨晓萍. 高压直流输电与柔性交流输电. 北京:中国电力出版社,2010.9.
[4] 王轩,赵国亮,周飞等. STATCOM在输电系统中的应用 . 电力设备,2008,9(10):14~18.
[5] 许维东,王辉,阳月令. 静止同步串联补偿器SSSC.电工技术,2001,2:9
(3):53~58.
[6] 朱鹏程,刘黎明,刘小元. 统一潮流控制器的分析与控制策略 . 电力系统自动化,2006,30(1):45~51.