设计用例测试下面的python程序def do_富途网络科技系统测试工程师面试题记录

本文记录了富途网络科技系统测试工程师的面试笔试题,包括选择题和问答题,涉及边界值分析、栈操作、递归函数、Python程序测试用例设计、SQL查询及随机礼物分配算法等。通过解答分析,展示了测试工程师应有的技能和思考过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.笔试题:

做笔试题的公司遇见的比较少,不过这也是筛选人才的一种方式吧,富途的测试笔试还是对于我来言有点难度,其中选择题比问答题要难,大概的讲一下我不确定的几道题。

1.对于一个含有n个变量的程序,采用基本边界值分析法测试程序会产生()个测试用例。

A、6n+1          B、7n            C、4n+1           D、5n

答:C,做测试这么久,还真没有了解过边界值能产生多好条用例,然后我百度了一下

作者:whylaughing,https://www.cnblogs.com/whylaughing/p/5821898.html ,里面讲的很到位,基本边界值产生4n+1条用例,健壮性测试生成的测试用例个数为6n+1,最坏情况的测试生成测试用例 5^n,健壮性最坏情况的测试生成的测试为7^n

2.一堆数据进行入栈出栈操作,入栈顺序为{a,b,c,d,e,f,g},可能的出栈顺序为()

A、{c,d,e,f,a,g,b}           B、{e,f,d,g,b,c,a}        C、{d,e,c,f,b,g,a}       D、{f,e,g,d,b,a,c}

答:C,看了半个小时的入栈,出栈大概了解了,a-g入栈时,a-f可以随时都可以出栈,但是必须保证后进先出,

A,   a入,b入,c入,c出,d入,d出,e入,e出,f入,f出,a不能出,因为b还没有出。

B. a入,b入,c入,d入,e入,e出,f入,f出,d出,g入,g出,b不能出,因为c还没有出

C. a入,b入,c入,d入,d出,e入,c出,f入,f出,b出,g入,g出,a出  这样是ok的

D.a入,b入,c入,d入,e入,f入,f出,e出,g入,g出,d出,b不能出,因为c还没有出

3.当 n =5时,下列函数的返回值是()

int func(int n){

if(n<=2){  return n;  }

return func(n-1) + func(n-2);

}

A、8  B、13   C、5  D、6

答:A,这是一道java的题,虽然我是java的小菜鸟,但是基本上还是看得懂,其实就是一个递归的用法,类似于python的

def func(n):if n<=2:returnnreturn func(n-1)+func(n-2)

print(func(5))

#8

# 解释:5传入函数func(5)中,因为5大于2,所以 return func(4)+func(3)

# func(4)中4又大于2,func(3)+func(2),func(3)中的 3大于2,所以就变成 func(2)+func(1)

# 合起来就是 func(2)+func(1)+func(2)+func(1)+func(2)+=2+1+2+1+2=8

4.已知三角形三边abc,现有个程序能判断这个三角形的类别(比如等腰三角形),请为这个程序设计测试用例。

这个题比较简单,考虑到三角形的定义就能做出来,任意两边之和大于第三边的是三角形,其余特殊情况,三条边相等就是等边三角形,两两相等就是等腰三角形,任意两边的平方等于第三边的平方就是直角,其余的就不是三角形了

5.设计用例测试下面的Python程序

def Do(a,b,x):if(a>1) and (b==0):

x=x/aif (a==2) or (x>1):

x= x+2

return x

解题思路:可以用上unittest来进行单元测试,可能有错误,这块还得完善

importunittestclassMyTest(unittest.TestCase):def setUp(self) ->None:pass

def tearDown(self) ->None:pass

deftest_a_1xiaoyu1(self):

self.assertEqual(Do(0.5,1,1),1)deftest_a_2dengyu0(self):

with self.assertRaises(ValueError):

Do(0,0,1)deftest_a_3dengyu2_1(self):

self.assertEqual(2,1,1)deftest_a_4dengyu2_2(self):

self.assertEqual(2,1,2)if __name__ == '__main__':

unittest.main()

6.公司数据库的在职人员表有name和deptment两个字段,分别表示员工姓名和所属部门。请写出一条SQL语句查出每个部门的人数。

解题思路,查询出每个部门的人数,就是说得通过group by 来查询出部门对应的人数

select deptment,COUNT(name) from zhiyuan group by deptment

7、圣诞节到了,公司举行交换礼物活动,参加的员工每人准备一个礼物。

交换完成后,自己的礼物会随机给到另一个人,自己也能随机获得一个其他人准备的礼物。不要求A拿了B的礼物.,B就一定要拿A的,只要自己不拿自己的即可。为公平起见,请你写一个随机程序来决定礼物何分配。

答:

暂时没有做出来

---------------------------------------------------------------2020年3月28日-------------------------------------------------------------------------------------------------------------

想了一晚上终于想出来了一种方式:

import random,time

k = {'a':'苹果','b':'梨子','c':'香蕉','d':'菠萝'} # 将每个人有自己的物品变为一个字典,这个字典可以灵活增加,暂不扩展,只做举例

x = list(k.values()) # 将所有物品集中放入一个列表

k1 ={} # 创建一个空字典,将交换成功的数据存入字典

print("交换中......")

for key in k.keys(): # 将人都遍历出来

while True:

if x !=[]:      # 跑到最后列表为空,随机会报错,所以在此判断

x1 = random.choice(x) # 随机在列表中抽取一个数据

if k[key]!=x1: # 如果从原字典对应的value不等于随机取出来的数,则存入k1

k1[key]=x1

x.remove(x1)  # 将取出来的数据从列表x中剔除

break

else:

break

for key in k1.keys():

time.sleep(1)

print("{}交换到了:{}".format(key,k1[key])) #遍历去除k1的数据

目前这个程序有bug,原因是当a、b、c交叉交换以后,只留下了d造成死循环,如果有感兴趣的,可以针对此进行修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值