简答题

5【简答】
1.使用Robot Framework编写一个简单测试库,提供关键字实现如下功能
1) 提供关键字的Documentation说明使用方法
2) 关键字的实现内容为:返回随机生成的8位整型;且该数字在整个测试过程中保持唯一。




#2.RF包含几种类型的测试库?简单谈一下你对RF测试库的理解。
RF包含内置库(不需要导入),标准库、扩展库、第三方库等。


3.请使用RequestsLibrary中关键字向http://80.80.41.177:8080/iptvepg/admin/test/setuserinfo.jsp发送一个get请求,并将响
应打印






4.RF中有哪些变量标识符,如何使用他们表示变量?


5.Robot Framework中的远程库接口技术实际就是把原来的测试库变成了三部分,简述这三部分的名字及主要功能


6.Robot Framework中的Selenium2Library是常用的Web自动化测试库,他是基于Selenium 2开发,请介绍下Selenium,WebDriver,S
elenium 2的 关系。




#7.Jenkins是什么?主要功能有哪些?
Jenkins是一个开源软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
1.软件的持续构建和测试,Jenkins提供了一个系统,使开发人员可以很容易的将改变集成到工程中。自动化的,持续的构建有利于提高开发效率。
2.监视job的执行,如下图所示,job可以实现很多的功能,Jenkins可以对这些项目进行显示,让用户更清楚的注意到这些 损毁的job。
3.项目源代码修改的检测,jenkins能够从项目的Subversion/CVS生成最近修改的集合列表,且不会增加Subversion/CVS Repository的负载。
4.分布式构建,Jenkins可以将工程构建到多台机器,更好地利用硬件资源,节省时间。
5.Jenkins代码开源,用户可以自己编写插件。




Jenkins(原hudson)是基于Java开发的一种持续集成工具,用于监控持续重复的工作,功能包括:
1、持续的软件版本发布/测试项目。
2、监控外部调用执行的工作。




#8.持续集成的核心价值是什么?
就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到主干之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。


9.你都知道哪些RF扩展库,列举三种并简单描述他们的主要作用.




10.已知“190702视频文件查看”关键字的功能是查看视频文件,入参为[ **sce_dict ]类型, 支持按照videoid查询,出参为list类
型;请使用Robot Framework写一个用例实现以下功能:等待videoid为1478的内容删除成功,如果2分钟依然没有删除则用例执行失
败。


11.请介绍下如何在windows环境搭建Jenkins的slave机器.
准备一台装有windows的机器作为slave;
在slave机器安装Jdk  1.6;
联系技术部获取客户端程序,解压缩到本地目录,如:d:\slave\hudson 
将on.bat的快捷方式拖到启动栏里面,做成开机自启动
联系技术部,在持续集成服务端新建Slave机器和Job
























#22.在Python中,只用一行代码求出两个列表a,b的交集并对结果去重
交集+去重:{i for i in a if i in b} or [i for i in set(a) if i in set(b)]


#2.请简要描述一下Robot Framework是什么?
Robot Framework是一款Python编写的功能自动化测试框架,具备良好的可扩展性,支持关键字驱动,可以同时测试多种类型的客户端或接口,可以进行分布式测试执行,主要用于版本回归测试或轮次很多的验收测试。
Robot Framework是开源软件,由Nokia Siemens Networks开发并提供支持。
 
#3.代码模块无论是被导入还是被直接执行都会运行,如何判断是作为模块导入还是被直接执行?
通过__name__变量判断,如果模块是被导入, __name__ 的值为模块名字
如果模块是被直接执行, __name__ 的值为 '__main__'


#4.软件测试是由“验证(Verification)”和“有效性确认(Validation)”活动构成的整体,请简述这两个V的具体含义
“验证”是检验软件是否正确地实现了产品规格书所定义的系统功能和特性;
“有效性确认”是确认所开发的软件是否满足永和真正需求的活动。


#5.什么是回归测试(Regression Testing)?在什么情况下需要执行回归测试?(answer from baidu)
回归测试是指在发生修改之后重新测试先前的测试以保证修改的正确性。
在之前的代码基础或软件功能上添加了新的代码或代码,需要执行回归测试。


#6.请简述自动化测试和手工测试各自的优缺点
手工测试:发现缺陷率高,容易实施,创造性灵活性高,覆盖率量化困难,重复测试效率低,不一致性,可靠性低,依赖人力资源;
自动化测试:高效率,高复用性,覆盖率容易度量,准确可靠,不知疲劳,激励团队士气,但是机械,难以发现缺陷,一次性投入大。


#7.未打印
猜的:RF测试库的搜索路径包括那些,搜索顺序是怎样的
RF中定义的PYTHONPATH(命令行选项-P将覆盖RIDE配置),当前路径,系统环境变量PYTHONPATH,python环境中的sys.path


#8.请简述软件测试中的正反两方面的争辩,即软件测试的正向思维和逆向思维是什么?并举例说明。
正向和逆向的理念又分别被称为“证实”和“证伪”。 “证实”和“证伪”至今依然是软件测试领域重要的理念,对软件测试工程师有着深远的影响。
正向思维:验证软件正常工作,评价一个程序或系统的特性或能力并确定是否达到预期的结果。在设计规定的环境下运行软件的所有功能,直至全部通过。
逆向思维:假定软件有错误,测试是为发现错误而针对某个程序或系统的执行过程。寻找容易犯错误的地方和系统的薄弱环节,视图破坏系统,直至找不出问题。


#9.为什么要进行软件测试?
1)软件总是存在缺陷。只有通过测试,才可以发现软件缺陷。也只有发现了缺陷,才可以将软件缺陷从软件产品或软件系统中清理出去。
2)软件中存在的缺陷给我们带来的损失是巨大的,这样说明软件测试的必要性和重要性。
3)测试是所有工程科学的基本组成单元,自然也是软件开发的重要组成部分。
4)测试人员水平越高,找到软件问题的时间就越早,软件就越容易更正,产品发布之后越稳定,公司赚的钱也越多,微软就是一个典型的例子。


#10.如何扩展已有的测试库?
修改源码,使用继承,直接调用其他测试库,从RF框架获取库实例。


#11.字符串“ab2b3n5n2n67mm4n2”,请用两种方法编程统计字符串中字母n出现的次数
方法1:
s="ab2b3n5n2n67mm4n2"
count=0
for x in s:
    if x == “n”:
        count += 1
print x 
方法2:print s.count(“n”)


#12.在Python中,单引号,双引号,三引号有什么区别
单引号和双引号是等效的,如果要换行,需要符号(\),三引号则可以直接换行,并且可以包含注释.


#13.Python中pass语句的作用是什么?
pass语句不会执行任何操作,一般作为占位符或者创建占位程序,whileFalse:pass


#14.简述RobotFramework中测试用例的Documentation、Tags、Setup、Teardown、Template、Timeout属性都是什么意思?
Documentation:用于测试用例的注释。
Tags:用于标记测试用例。
SetUp:制定测试用例的环境准备
Teardown:制定测试用例的清理
Template:用于制定测试用例模板,这个用例本身将只包含数据,被用于制定关键字的参数。
Timeout:设置测试用例的可能超时。


#15.简述Robot Framework的三层开发架构  ??
测试用例的集合叫做Testsuites,测试用例保存在Resource Files中,这就构成了Robot Framework的三层开发架构。


Testsuites:测试用例(或检查点)在这里被实现。每一个项目至少有一个TestSuite。在大一点的项目中,不同的测试功能会被放入不同的TestSuite。
Resource Files: 定义高级别的keywords。Resource Files是可以复用的。
Test Library: 每一个Technical Keyword需要一个新的Test Library实现。但是除非你用的是非常特殊的技术,一般来说不需要写新的technical keywords。而且实现一个Test Library并不费力。


#16.请简述RobotFramework有哪些特点?
1)易于使用:采用表格式的语法,统一测试用例格式
2)丰富的测试库:内置库、系统库、python库、外部测试库、自定义库,通过测试库与被测系统交换,RF平台和被测系统没有关联性
3)强力的执行引擎:支持对测试集或测试用例执行前后的操作接口
4)易于持续集成:提供了命令行方式的用例执行接口pybot,jybot和基于xml的日志输出
5)可重用性好:利用已有的关键字可以组合成新的关键字
6)日志便于阅读:html格式
7)支持打标签:支持针对测试集或测试用例打标签,执行时可以选择某些标签的用例
8)支持分布式测试
9)支持变量文件


#17.编写函数的作用?
最大化的代码重用和最小化的代码冗余、流程的分解


#18.Python变量的解析顺序是什么? local-enclosing-global-buildin
LEGB法则并说明了每个字母所代表的意思。
L:local 函数内部作用域 
E:enclosing 函数内部与内嵌函数之间 
G:global 全局作用域 
B:build-in 内置作用域


首先,是local,先查找函数内部 
然后,是enclosing,再查找函数内部与嵌入函数之间(是指在函数内部再次定义一个函数) 
其次,是global,查找全局 
最后,是build-in,内置作用域


#19.使用lambda定义什么?什么情形下使用?
匿名函数lambda ,通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用。 


#20.假设有两个整数列表a,b使用Python语言一行代码求出两者的并集并对结果去重,排序.
并集+排序:sorted(list(set(a+b)))


#21.Python中,请说明
def f(x, l=[]):
    for i in range(x):
        l.append(i * 2)
    print(l)
f(2)
f(3, [3, 2, 1])
f(3)
的输出,并说明原因.


a.[0, 2] [3, 2, 1, 0, 2, 4] [0, 2, 0, 2, 4]
]python函数参数传递是传递对象的引用




#22.写一个Python函数装饰器,装饰器的作用打印当前执行的函数.如:
@decorate
def test():
.....
会输出test is running.请实现decorate.
  
def decorate(f):
    def fn(*args,**kw):
        print f.__name__ + ' is running.'
        return f(*args,**kw)
    return fn       




#23.Python中关键字is与==的区别
Python中的对象包含三要素:身份、类型、值,is判断的是两个对象是否是同一个对象,是通过id来判断的,
==判断的是两个对象的值是否相同




#24.使用Python编程实现九九乘法表
for i in xrange(1, 10):
    for j in xrange(1, i + 1):
        print '{}*{}={}\t'.format(i, j, i * j),
    print


#25.使用Python,编程实现1+2+3...+100的求和运算
sum = 0
for i in xrange(1, 101):
    sum += i
print sum






#26.使用Python,编程实现用户登录检查功能,当用户输入正确的用户名和密码时提示登录成功,否则给予提示信息,直到给出正确的登录信息
def check_user_pwd(u, p):
    if u == "James" and p == "123":
        return True
    else:
        return False


def input_test():
    count = 0
    while True:
        username = raw_input("Please Input username")
        passwd = raw_input("Please Input password")
        if check_user_pwd(username, passwd):
            print 'Login success!'
            break


        count += 1
        if count == 3:
            print 'Login failed!'
            break


input_test()


#27.在RobotFramework中有多种变量赋值的方式,请举例说明.
1)在测试用例中赋值,如:测试集下、资源文件中、测试用例中


2)执行用例时赋值:
-v val:Helloworld


3)变量文件中赋值导入使用


#49.Robot Framework中,在通常情况下,每个变量默认都是局部变量,在case、userkeyword、文件型suite、目录型suite中都可以添加变量,请简
要描述在默认情况下这些变量的作用域.
一个case里的变量,作用域在case内部;
一个用户关键字里的变量,作用域在这个关键字内部;
一个文件型suite里的变量,作用域在suite内部,suite里的测试用例可以直接使用;
一个目录型suite里的变量,作用域在这个目录内,但是里面文件型suite及用例无法使用。


#50.简述部门推荐的五层架构及其调用原则
部门推荐的是五层结构(测试用例层、测试流程层、组件层、元素层、测试库层),各层之间原则上禁止跨层调用,下层只提供适当的接口,并隐藏实现细节。


30.假设C:\test.txt中文本内容如下
优美胜于丑陋(Python 以编写优美的代码为目标)
明了胜于晦涩(优美的代码应当是明了的,命名规范,风格相似)
简洁胜于复杂(优美的代码应当是简洁的,不要有复杂的内部实现)
复杂胜于凌乱(如果复杂不可避免,那代码间也不能有难懂的关系,要保持接口简洁)
扁平胜于嵌套(优美的代码应当是扁平的,不能有太多的嵌套)
间隔胜于紧凑(优美的代码有适当的间隔,不要奢望一行代码解决问题)
可读性很重要(优美的代码是可读的)
即便假借特例的实用性之名,也不可违背这些规则(这些规则至高无上)
不要包容所有错误,除非你确定需要这样做(精准地捕获异常,不写 except:pass 风格的代码)
当存在多种可能,不要尝试去猜测
而是尽量找一种,最好是唯一一种明显的解决方案(如果不确定,就用穷举法)
虽然这并不容易,因为你不是 Python 之父(这里的 Dutch 是指 Guido )
做也许好过不做,但不假思索就动手还不如不做(动手之前要细思量)
如果你无法向人描述你的方案,那肯定不是一个好方案;反之亦然(方案测评标准)
命名空间是一种绝妙的理念,我们应当多加利用(倡导与号召)
用户可以输入一个字符串xx:xx如当用户输入13:21时候则打印文本13行到21行的内容。输入:21则打印前21行内容,输入21:则从第21行开始到文件结尾内容。不考虑异常情况,即用户的输入都是在行数范围之内。


def get_line_start_end(start_end, length):
    str_list = start_end.split(":")
    if str_list[0] == '':
        start = 1
    else:
        start = int(str_list[0])


    if str_list[1] == '':
        end = length
    else:
        end = int(str_list[1])


    return start, end




def read_file():
    file_list = []
    with open('test.txt', 'r') as f:
        for l in f:
            file_list.append(l)


    while True:
        start_end = raw_input("Please input:")
        start, end = get_line_start_end(start_end, len(file_list))
        print start, end


        for i in xrange(start-1, end):
            print file_list[i]




read_file()










60.python实现一个字符串a,如果其中包含"ZTE"(zte不区分大小写)则输出ZTE,否则输出False.例如:a = "asdasdQEWQEZtE"
则输出:ZTE.
主要考察字符串匹配:
print "ZTE" if "ZTE" in a.upper() else "False"






使用evaluate关键字生成一个长度为10的随机字符串。
${str} Evaluate string.ascii_letters string
${len} Evaluate len("${str}")
${num} Set Variable 10
${newstr} Set Variable ${EMPTY}
:FOR ${index} IN RANGE ${num}
${i} Evaluate random.randint(0,${len}-1) random
${temp} Set Variable ${str[int(${i} -1)]}
${newstr} Set Variable ${newstr}${temp}
log ${newstr}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Web魔法师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值