测试脚本
文章平均质量分 67
自动化测试_搜狗测试
探索测试奥义,交流测试技术,欢迎关注微信公众号“搜狗测试”
展开
-
图解测试之稳定性-合适的产品和功能
合适的产品我的观点当我们考虑到稳定性测试时,一般的产品都是需要进行的,如果我们使用排除方法的话,一些使用频次低,影响范围小或为了短期需求而产生的工具或系统是没有必要投入人力进行专门的稳定性测试。合适的功能我的观点当我们人力或时间有限的情况下,要进行稳定性测试,则需要挑选合适的原创 2015-10-14 15:15:30 · 729 阅读 · 0 评论 -
自动化软件测试的指导原则[译]
在最近与软件测试人员的谈话中,我不断听到同样的事情:测试自动化在大多数项目中是需要的。合理使用以下指导原则,可以有助于自动化测试工作的开展。指导原则1:避免过早开发测试脚本我们鼓励软件测试人员,在应用程序开发初期就开展自动化测试。但是,在程序功能还不齐全的情况下,编写自动化测试脚本,效果会大打折扣。如果在程序还在不停改动的情况下编写测试脚本的话,你不得不随时重写你的脚本。但原创 2015-04-16 11:28:39 · 856 阅读 · 0 评论 -
Python写自动化之Ftp上传下载
之前,有篇文章介绍了http文件的下载,有些情况下,我们会使用FTP服务器存储文件,这时,在脚本中,我们就会涉及到FTP的上传下载操作了。首先看下FTP文件的上传操作,整个过程大致可以拆分成登陆、打开本地文件、文件传输、退出几步,看下代码try: f = FTP(server) try: f.login(user, pwd) localFile = op原创 2015-03-23 20:34:22 · 1159 阅读 · 0 评论 -
Python写自动化之邮件发送(匿名)
为了能够实现邮件发送功能,首先,我们需要了解一下邮件的发送过程是什么样子的,此处不再详细说明,请大家自行搜索或查看http://www.sogouqa.com/?p=438在了解了邮件的发送过程后,为了实现邮件的全自动匿名发送,我们需要通过windows的命令行,解析邮件的匿名服务器,然后使用匿名服务器,发送邮件到相应的邮箱代码如下:def _get_mail_exchanger(do原创 2015-03-13 10:09:12 · 6097 阅读 · 0 评论 -
Python写自动化之SVN更新
在远程机器上执行脚本时,为了能够保证脚本的实时性,我们一般会将脚本存放到SVN上,远程机器通过SVN的操作去更新脚本;SVN更新脚本只需要2步就可以实现了,这个地方使用到pysvn库,看下实现# 初始化clientself.client = pysvn.Client()self.client.set_default_username(self.username)self.client原创 2015-03-09 09:59:40 · 13443 阅读 · 0 评论 -
Python写自动化之ini文件的读写
在我们写一些测试工具时,经常会需要使用到配置文件,此时一般选用ini文件是比较合适的标准并且可以通过参数命名知道参数的含义,那么使用Python如何进行ini文件的读写呢?首先看下,读取ini文件,我们直接使用Python自带的模块ConfigParser来进行配置文件的读写看下代码吧def ReadConfig(configPath): configDict = {}原创 2015-03-17 15:00:19 · 1000 阅读 · 0 评论 -
愚人节篇:搜狗两枚测试开发小屌的对话
首先声明,本故事纯属虚构,不,是半虚构,如有雷同纯属巧合~本故事由搜狗测试、搜狗QA、搜狗TEST冠名播出万万没想到,duang~~搜狗测试公众号出现了,duang~~它还成长的如此迅速,欢迎广大测友多多传播、尽情传播、传出新体验故事发生在搜狗测试团队的两个屌丝身上,愚人节快到了,来看看他们在唠什么。。。。。。提示:他们聊的很兴奋,时间有点长,需要一点耐心往原创 2015-03-27 11:18:58 · 626 阅读 · 0 评论 -
Python写自动化之注册表的读写操作
Windows上的自动化测试经常会接触到对于注册表的读写操作问题,比如,获取一个程序的安装目录,一般情况下,我们可以去注册表的App Paths下去查找,这时就涉及到了注册表的读取操作,我们使用Python的_winreg模块来实现,代码如下:def reg_query(path, key): try: path = path.replace("/", "\\")原创 2015-03-20 14:58:55 · 2465 阅读 · 0 评论 -
Python写自动化之以不同优先级启动进程
在windows上的进程,可以设置优先级,如下图那么,如果我们在自动化测试过程中,需要设置进程的优先级,如何来做呢?下面使用win32相关的接口实现此功能,代码如下:# 获取用户句柄 hToken = win32security.OpenProcessToken(win32api.GetCurrentProcess(), win32con.TOKEN_DUPLI原创 2015-03-16 11:31:25 · 1633 阅读 · 1 评论 -
Python写自动化之数据库操作
在软件测试中,涉及到数据存储时,经常会用到数据库,这是就需要使用测试脚本操作数据库了文件型数据库sqllite读写操作:def ExecSql(dbFileName,stats): """ | ##@函数目的: 执行sqlite语句 | ##@参数说明: | ##@返回值: sqlite数据库查询结果 | ##@函数逻辑: | ##@注意:原创 2015-03-06 11:48:07 · 1572 阅读 · 0 评论 -
[nodejs]svn命令行中避免进入用户交互出现卡住的情况
问题在服务器后台nodejs上使用svn导入变更记录出现“Error: spawn ENOMEM”错误提示,查了下发现是“底层抛了错误,并且设置了errno为ENOMEM,内存不够用”现象登录到后台系统,发现有很多svn进程驻留在了后台,于是想着应该是异常情况后svn进程出现了驻留不退出的情况过程调试发现了两种情况会出现驻留的情况,一种是用户名使用了邮箱全写,比原创 2015-04-17 09:56:42 · 2298 阅读 · 0 评论 -
单元测试之如何测试模板类
一、背景在搜狗内部对于C++项目进行单元测试,基本都是使用gtest进行的。无论是单元测试,还是接口测试我们都做了大量工作。具体来说,就是对函数进行单元测试或接口测试,对模块进行集成测试。但是,对于模板类并没有进行测试,而是对其上层调用进行测试。现在的问题是,对于模板类需不需要进行单元测试或接口测试?被写成模板类,说明这个类是比较通用且很多地方都在使用它,所原创 2015-04-30 17:32:02 · 2013 阅读 · 0 评论 -
图解测试之稳定性-设计测试场景
了解场景法何为场景法?简单的来说的话,场景法就是电影里的一幅幅画面。如何使用场景法进行测试设计呢?我们要转换自己的视角,站在用户的角度,从用户的使用习惯出发,结合系统的功能点,设计测试用例。稳定性测试场景关键点场景设计的关键词就是用户,产品或系统推向市场都是为了能够让用户满意,所以在设计稳定性场景时,要从用户使用角度思原创 2015-10-14 15:21:30 · 1068 阅读 · 0 评论 -
使用 gtest 给 DLL 工程编写单元测试
一、背景说明任何时候给你的代码增加单元测试(或接口测试)都不晚,对于 C/C++ 使用比较广泛的单元测试框架应该非 googletest莫属了。通常在工程代码中,使用 gtest 比较广泛的方式是以 lib 的形式来做单元测试,这种方式使用也比较简单直接,本文就不再赘述。但是,对于大部分工程代码而言,并不是只有 EXE 文件,通常这些 EXE 文件都会依赖至少一个 DL原创 2015-08-17 20:33:43 · 2760 阅读 · 1 评论 -
软件测试之独步武林系列(一)
开篇风吹过,卷起了漫天红叶。 剑气袭人,天地间充满了凄凉肃杀之意。。。 败了,终究还是败了,留给小明的只剩下身后的那万丈深渊。………………..最后的一点枫叶碎片已落下,枫林中又恢复了静寂,死一般的静寂。序幕一个月后,京城,位于水木之巅的狗厂门前熙熙攘攘,慎是热闹。一位少年正在和一位老者争论着些什么,仔细一瞧,不是小明又是谁?原来上次华山之巅的那一战,转载 2015-08-17 20:23:14 · 717 阅读 · 0 评论 -
[效率提升]工作中的那些命令行
工作中,如果我们能够将批处理使用的炉火纯青的话,对于效率的提升作用是非常明显的。今天,我们从日常工作的角度来给大家分享一些实例。一、运行测试脚本在完成一些Case编写后,为了比较方便的回归执行,我们一般会编写一个批处理脚本来完成脚本的启动执行。如果仅仅在我们自己的机器上执行的话,我们直接将路径写死就可以了,比如说…\runtest.exe -vl2 -xo原创 2015-08-17 20:30:58 · 952 阅读 · 0 评论 -
[Python自动化]使用C来扩展Python
一、需求背景Python 几乎能解决你所遇到的所有问题,但 Python 常被人提及的问题就是速度问题,这时如果想提升 Python 的速度,基本都会使用 C/C++ 来扩展 Python 接口,这种方法仅仅是提升 Python 速度的诸多方法中的一种而已。同时,对于一些使用 Python 来解决的问题比较棘手时,也可以考虑使用 C/C++ 来扩展 Python 接口,这样在调原创 2015-07-02 14:44:25 · 1455 阅读 · 0 评论 -
Objective-C中Copy和MutableCopy,你了解多少?
在iOS开发中,对于copy和mutableCopy都不陌生。如果您不知道它们之间区别的话,看完本文我相信您肯定会分的很清楚。接下来,就通过几个小例子来了解一下吧。NO.1NSArray * array = [[NSArray alloc] initWithObjects:@"sogouqa", nil];NSArray * retainArray = array;原创 2015-07-09 15:23:11 · 901 阅读 · 0 评论 -
memset函数导致内存泄露的问题
我们一般常说的内存泄漏是指堆内存的泄漏。程序从堆中分配的内存使用完毕后必须显式释放,否则这块内存就不能被再次使用,即这块内存泄漏了。内存泄漏导致软件在运行过程中占用越来越多的内存,程序的效率会越来越低,从而影响用户的体验,失去市场竞争力。 为了预防内存泄漏我们要求程序使用malloc、new等函数从堆中分配的内存必须在使用完后调用free、delete函数释放该内存。但是如果指向该内存指原创 2015-06-03 10:02:53 · 6889 阅读 · 0 评论 -
测试人员都应该是好的产品人员
“作为一款用户规模达到数亿的大众必备软件,任何一个微小的BUG都可能影响至少数百万的用户,因此不能放过每一个BUG”这句话是否是正确的?错误的!这是为什么呢?因为你没有对BUG的等级进行划分,有些BUG是用户感受不强烈的,比如在线翻译、字符表情、皮肤盒子等,存在一点BUG对我使用输入法打字没啥影响,我不太可能因为这个而卸载输入法,并且用户不至于写篇微博泄愤,那么这个BUG的严重等级就低,暂时可以放原创 2015-05-14 11:15:35 · 541 阅读 · 0 评论 -
windows虚机环境下,如何快速有效的删除大文件夹?
在调试稳定性测试过程中,由于有的机器C盘越来越小,就必须进行电脑清理,清理%tmp%目录和回收站是必须的。 现在我的虚机的%tmp%目录下有15万个文件,该如何快速有效删除呢?这些文件中有的是拒绝删除的。 方法1:直接删除Temp文件夹,它会一直扫描,最后会告诉你,不能删除,说什么有其他地方在用,而我压根就没有; 方法2:进入Temp文件夹,Ctrl+A选中所有文原创 2015-04-28 10:04:46 · 1129 阅读 · 0 评论 -
Python写自动化之图标锁定到任务栏或删除图标
这个功能在windows上测试安装卸载时,有时会用到,网上查到的两种语言的版本如下:C#版:Shell shell = new Shell();Folder folder = shell.NameSpace(Path.GetDirectoryName(appPath));FolderItem app = folder.ParseName(Path.GetFileName(appPath原创 2015-03-05 14:44:29 · 3136 阅读 · 0 评论 -
Python写自动化之启动进程并获取进程输出
当我们需要执行外部命令或自己写一个自动化执行器时,需要使用到启动进程并获取输出的操作首先,我们启动进程采用Python的subprocess模块,为了保证标准输出和标准错误输出能够正常运行,启动两个线程来检测输出结果部分class Daemon(threading.Thread): def __init__(self, workDir, logFunction=None, *arg原创 2015-03-04 10:28:40 · 2098 阅读 · 0 评论 -
Python写自动化之logging日志写入
日志写入是我们日常工作中常用到的功能,我们可以直接使用写文件的方式来以自己的方式写日志,另外,当我们在一个比较大的项目中,涉及到日志写入时,一般会使用logging模块来进行日志的写入,第一步,先写一个单例,创建一个logger对象:def _instance(): global logger if logger is None: logging.config.原创 2015-03-03 15:07:30 · 2253 阅读 · 0 评论 -
Python写自动化之http文件下载
在自动化脚本中,文件下载是比较常见的操作,一般情况下,我们会将文件放到某个http服务器上,这时,当脚本中需要这个文件时,就需要使用到http下载的功能了最基本的下载功能实现实现最基本的功能,传入文件下载路径和文件本地保存路径,下载到本地def DownloadFile(url,savePath): """ | ##@函数目的: 下载文件 | ##@参数说明:u原创 2015-02-09 11:11:46 · 3035 阅读 · 0 评论 -
Python写自动化之获取文件的MD5值
使用Python 获取文件的MD5 值是一件很简单的事情,Python 提供了md5 和 hashlib 两个模块,都可以获取到文件的md5值。代码如下:#获取文件的MD5值,适用于小文件 def getFileMD5(self,filepath): if self.isFile(filepath): f = open(filepath,'r原创 2015-02-10 08:42:00 · 8758 阅读 · 0 评论 -
Python写自动化之一种截图方法
在进行自动化测试时,很多时候需要通过图片对比来判断某个功能是否正常,通常情况下,使用Python 的第三方包 Image 可以 实现截取图片的功能。然而,有时候有些图片是flash或者其他,使用 Image 截取到的可能是一片空白,举个输入法的例子来说,输入法的状态栏,以及输入法的一些窗口,在桌面上可以看到,截图却截不到。针对这种情况,一种方法是首先通过调用windows 的系统功原创 2015-02-06 10:14:20 · 3689 阅读 · 0 评论 -
Python写自动化之文件、目录的一些操作(新增、移动、删除)
创建文件:os.mknod("test.txt") #创建孔文件open("test.txt",w) #直接打开一个文件,如果文件不存在则创建文件创建目录:os.mkdir("file")复制文件shutil.copyfile("oldfile","newfile") #oldfile 和 newfile 都只能是文件shutil.copy(原创 2015-02-17 10:29:13 · 1473 阅读 · 0 评论 -
【Web测试专栏】Selenium+JUnit自动化测试方案 (二)
在Selenium+JUnit自动化测试方案(一)中,介绍了Selenium和一种快速开始Selenium自动化测试的Firefox插件Selenium IDE。本文将介绍一种完整的Selenium框架 Selenium RC。Selenium RC 使用编程语言编写脚本,通过Selenium RC服务器作为代理服务器去访问应用从而达到测试的目的。由于Selen原创 2015-02-05 10:36:33 · 774 阅读 · 0 评论 -
QUnit在浏览器扩展API测试中的应用
一、背景每款浏览器都会给开发者提供一些API接口用于插件开发,这些API在发布给开发者使用前必须经过相应的测试,那么如何对这些API接口进行测试呢?搜狗浏览器开发者文档请见:http://ie.sogou.com/open/ 。二、使用QUnit前的测试方案从搜狗浏览器开发者文档可知,搜狗浏览器提供给开发者的API有很多种类,同时每种API又有很多接口。如何高效原创 2015-01-16 10:24:23 · 636 阅读 · 0 评论 -
搜狗输入法自动化性能测试
输入法自动化性能测试生活中、工作中使用一款软件的时候,我们很关注、但是又看起来好像从来没关注的是什么?UI?功能全?其他?这个问题换个角度可以理解为,什么方面在好的时候你没感觉,不好的时候简直无法容忍令人发指?我觉得是性能。多数软件的性能还算不错,所以我们使用的时候没感觉,但是一但卡顿、性能差的时候,感受是什么大家肯定都有体会。搜狗输入法作为被广大用户喜爱的软件,在测试的过程中原创 2015-01-15 10:03:45 · 910 阅读 · 0 评论 -
优化脚本执行时间
当我们编写黑盒自动化测试,特别是涉及到UI操作的脚本时,单个Case的执行时间,我们可能不会去关注;但当Case的数量变多时,整体执行一遍的时间会变的非常长,这时,我们就需要优化脚本以减少Case的整体执行时间了。去除盲等有时,为了保证脚本的稳定性,我们会在一些操作后,添加一些Sleep,但Sleep几秒都是由编写脚本的人主观决定的;而特定操作到底在这几秒后是否完成,还是不需要原创 2015-01-15 10:01:01 · 809 阅读 · 0 评论 -
搜狗浏览器升级策略自动化测试
背景一个产品在更迭发布了多个版本后,在每个版本、每个渠道上都积累了一定的用户,这时,当发布新产品时,会涉及到如何对现有用户进行软件升级的情况。当用户设置了自动升级,应该升级到什么版本,当用户手动点击升级,又升级到什么版本。当产品开发完成了对不同升级策略对应功能的开发后,测试如何来进行测试呢?手动测试如果采用手工测试,我们如果为了保证所有版本升级的正常,需要对所有可能的组合进原创 2015-01-14 20:53:22 · 890 阅读 · 0 评论 -
UI自动化中关闭远程桌面连接,鼠标键盘失效的解决方案
问题原因分析: 因为通过mstsc启动远程桌面连接时,被连接的Windows会启动一个会话(Session)。此时你对远程桌面窗口里面的所有操作(鼠标,键盘)将会‘翻译’成TCP包传输过去,被连接的Windows接收到这些包之后,‘还原’命令并且在当前的活动会话上面执行。而当你断开连接时(点X关闭),会话变成断开状态,Windows会自动关闭会话(这里这样说是不准确的,事实上会话还是在的,原创 2015-01-29 11:39:44 · 11078 阅读 · 3 评论 -
XP系统下使用UIA进行测试(加载类型库/DLL)
由于UIA是微软在.NET Framework3.5以后引入的,而xp上默认是没有.net framework的,如果想要使用UIA,则需要为xp安装一个补丁包到我的资源页面可以下载UIA补丁:下载来源:http://stackoverflow.com/questions/11915104/unable-to-load-dll-uiautomationcore-dll原创 2015-01-23 10:00:06 · 1090 阅读 · 0 评论 -
Python写自动化之文件的压缩及解压
当我们遇到大量小文件的传输时,一般会涉及到文件的压缩和解压,下面对zip的压缩解压直接上代码压缩:def zip_dir(dirname,zipfilename): """ | ##@函数目的: 压缩指定目录为zip文件 | ##@参数说明:dirname为指定的目录,zipfilename为压缩后的zip文件路径 | ##@返回值:无 | ##@函原创 2015-03-02 20:19:13 · 1028 阅读 · 0 评论 -
Python写自动化之设置Windows自动登录
在某些情况下,测试过程会涉及到操作系统的重启过程,比如说测试操作系统重启后,程序的启动时间评测;这时如果操作系统设置了用户名密码的情况下,就会涉及到如何实现Windows的自动登录。首先,看下Windows如何实现自动登录,看下如何手动操作吧,百度经验:http://jingyan.baidu.com/article/54b6b9c0d7bf6c2d583b47f2.html了解了手动操作原创 2015-03-25 15:16:34 · 4142 阅读 · 4 评论 -
Windows命令实现匿名邮件发送
在日常工具开发中,经常会有发送邮件的需求。在一些高级语言中,如Python,C#中,都有专门的邮件发送模块,如Python 中的 smtplib 模块。那么,一封邮件到底是如何发送到一个特定的邮箱呢?举个例子:使用test@163.com 发送一封邮件到 test@qq.com。首先,看下邮件系统的组成部分,如下图再看下邮件发送的整个过程,如下图:①发送原创 2015-03-19 09:34:07 · 2524 阅读 · 0 评论 -
【Web测试专栏】Selenium+JUnit自动化测试方案 (四)
上一篇文章介绍了Selenium+JUnit测试环境的搭建,和一条简单测试用例的编写方法,本文将在这个基础上介绍一些稍微复杂的用例,并对脚本的编写做出一些总结。借助XPath测试过程中,需要提取商品的价格,而商品每天会变的,如何固定取到结果呢?取商品的dom路径,如何快速定位呢?这里可以需要借助XPath。使用用到FireBug插件,可以得到商品原创 2015-02-15 10:11:18 · 698 阅读 · 0 评论 -
Python写自动化之构造Multipartform-data发请求
在HTTP协议的规范中会将http请求分为三个部分:状态行,请求头,请求体。在发送HTTP请求时,需要在请求头中注明发送的方法,这些方法包括:OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT。其中GET和POST是最为普遍被使用的。有关POST和GET的区别,知识库中已经有同学进行了表述,这里主要介绍一下multipart/form-data请求具体是怎原创 2015-02-13 10:56:28 · 2880 阅读 · 0 评论