金九银十,分享一波用例设计、数据库、编程笔试题!
金九银十来了,很多小伙伴又双叒叕找工作了,最近收到一些求职小伙伴反馈过来的笔试题,摘取其中一些比较经典且常被考核到的用例设计题、数据库、编程题来给大家做个分享,望有助于大家的高薪求职之路!
金九银十来了,很多小伙伴又双叒叕找工作了,最近收到一些求职小伙伴反馈过来的笔试题,摘取其中一些比较经典且常被考核到的用例设计题、数据库、编程题来给大家做个分享,望有助于大家的高薪求职之路!
一、用例设计题
1、某公司生产自动售卖机如下图所示,这款产品交给您测试,请写出您能够想到的所有需要测试的测试用例或测试点(注:只要您认为需要测试的点都可以列出来)。

测试点如下:
1)功能测试:
商品选择测试
测试各种商品是否能在屏幕上正确显示。
测试商品图片与实际商品是否一致。
测试商品信息(如价格、名称、库存量)是否准确。
支付功能测试
测试现金、银行卡、移动支付等多种支付方式是否支持。
测试支付过程中是否出现卡顿、延迟或支付失败的情况。
测试支付成功后,金额是否正确扣除。
出货功能测试
测试支付成功后,商品是否能正确出货。
测试出货口是否有障碍物时,机器是否能正确提示。
测试出货过程中是否出现卡顿、延迟或不出货的情况。
找零功能测试
测试现金支付时,找零是否准确。
测试找零口是否有障碍物时,机器是否能正确提示。
退货退款功能测试
测试商品质量问题或其他原因退货时,退款流程是否正常。
测试退款金额是否正确返回至原支付账户。
2)性能测试
响应时间测试
测试从选择商品到支付成功,再到出货的整个流程的响应时间。
测试在高并发场景下,售卖机的响应时间和性能表现。
稳定性测试
测试售卖机长时间运行后是否出现卡顿、死机或重启的情况。
测试在断电、断网等异常情况下,售卖机的恢复能力。
3)安全测试
支付安全测试
测试支付过程中是否存在泄露用户支付信息的风险。
测试支付密码输入时是否有防窥视措施。
防作弊测试
测试是否有防止重复扫码、盗刷等作弊行为的措施。
测试商品被替换或偷盗时,售卖机是否能正确识别并报警。
4)兼容性测试
不同支付方式兼容性测试
测试不同品牌、型号的银行卡、移动支付APP等是否能正常支付。
不同尺寸商品兼容性测试
测试售卖机是否能适应不同尺寸、形状的商品。
5)用户界面与体验测试
界面设计测试
测试界面是否简洁明了,易于操作。
测试字体大小、颜色等是否便于阅读。
交互体验测试
测试用户操作流程是否顺畅,是否符合用户习惯。
测试是否有必要的提示和反馈,如支付成功提示、出货提示等。
异常处理测试
当出现异常情况(如缺货、支付失败等),售卖机是否能给出明确的提示和解决方案。
6)安装与维护测试
安装过程测试
测试售卖机的安装过程是否简单明了,是否提供详细的安装指南。
测试安装过程中可能出现的问题及解决方案。
维护过程测试
测试售卖机的日常维护和保养流程是否便捷。
测试维护过程中是否容易更换零部件或进行维修。
2、现有一个app,然后需要对app中的充值功能编写测试案例,客户有多张卡,实际的扣款渠道是银联支付、建行直连支付。
充值解释:客户通过app,输入金额,选择对应的银行后,将银行卡中的资金充值到app的钱包中。

用例设计如下:
1、正常充值流程1:选择扣款渠道(建行直连)--> 输入金额-0.01 --->输入正确6位交易密码 ---> 查看充值结果,是否充值成功,及各项数据展示正常(扣款状态-扣款成功、计算收益时间/到账时间、交易详情-扣款金额-扣款渠道);银行卡扣款成功;
2、正常充值流程2:选择扣款渠道(银联支付)--> 输入金额-单笔限额---5万 --->输入正确6位交易密码 ---> 查看充值结果,是否充值成功,及各项数据展示正常;银行卡扣款成功;
3、正常充值流程3:选择扣款渠道(银联支付)--> 输入金额-银行卡最大余额 --->输入正确6位交易密码 ---> 查看充值结果,是否充值成功,及各项数据展示正常;银行卡扣款成功;
4、不选择银行卡,不能进入下一步
5、充值异常测试:0、负数、单笔限额--5万+0.01元、 银行卡最大余额+ 0.01元、非数字、不输入;
6、弱网络环境,充值多次提交,是否只被执行一次;输入交易密码,长时间未提交是否合理提示;
7、交易密码输入异常:5位、密码错误、错误密码次数超过一定限制是否锁定账号、为空;
8、点击忘记交易密码 -- 是否正常重置密码流程;
9、关注跨天、跨月、跨年的时间节点,例如23:59:59充值,查看充值结果是否正常;
二、数据库题
1、现有学生表、课程表、成绩表,表结构如下:

1)查询课程编号“01” 课程比“02” 课程 成绩高的所有学生的学号
答案:
SELECT s1.sid FROM score s1 JOIN score s2 ON s1.sid = s2.sid WHERE s1.cid = '01' AND s2.cid = '02' AND s1.grade > s2.grade;
2)查询所有同学的学号、姓名、选课数、总成绩
答案:
SELECT student.sid, student.sname, COUNT(score.cid) , SUM(score.grade) FROM student,score Where student.sid = score.sid GROUP BY student.sid, student.sname;
2、Oracle数据库中现有两个表:发票明细表、发票明细清单表。表信息如下:

1)已知购方纳税人识别号 140301123456789,查询所有该纳税人所开发票明细及明细清单。答案:
select * from 发票明细表 a join 发票明细清单表 b on a.发票代码 = b.发票代码 and a.发票号码 =b. 发票号码 where a.购方纳税人识别号 = "140301123456789";
2)已知购方纳税人识别号 140301123456789,删除该纳税人所有发票明细及明细清单。
答案:
因为发票明细表与发票明细清单表有外键约束,先删除发票明细清单表的记录,再删除发票明细表。
delete from 发票明细清单表 where 发票代码 in (select 发票代码 from 发票明细表 where 购方纳税人识别号 = "140301123456789" )and 发票号码 in (select 发票号码 from 发票明细表 where 购方纳税人识别号 = "140301123456789");
delete from 发票明细表 where 购方纳税人识别号 = "140301123456789" ;
三、编程题
1、现有一个程序实现这样的功能:读入三个整数值,这三个整数值表示三角形的三个边长,该程序打印信息表明三角形是不等边三角形、等腰三角形或等边三角形。画出程序流程图,并用任意一种程序设计语言设计该程序(请注明语言)。
答案:Python实现如下:
def classify_triangle(a, b, c):
# 检查输入是否为正整数
if not (isinstance(a, int) and isinstance(b, int) and isinstance(c, int) and a > 0 and b > 0 and c > 0):
raise ValueError("输入错误:边长必须是正整数")
# 检查是否能构成三角形
if a + b <= c or a + c <= b or b + c <= a:
return "无法构成三角形"
# 判断等边三角形
if a == b == c:
return "等边三角形"
# 判断等腰三角形
if a == b or a == c or b == c:
return "等腰三角形"
# 否则是不等边三角形
return "不等边三角形"2、现有两个json字符串s1、s2如下:

1)打印出s1中的AppllicationVol的值
答案:
先通过json库中json.load把json字符串转成字典,再通过Python字典取值:
json_s1=json.loads(s1)
ApplicationVol_value = json_s1["detail"]["ApplicationVol"]2)比较s1、s2,打印出不一致的地方
答案:
# 将 JSON 字符串加载为字典
json_s1 = json.loads(s1)
json_s2 = json.loads(s2)
# 手动比较 s1 和 s2 并打印出差异
def compare_json(json1, json2, path=""):
differences = []
for key in json1:
if key not in json2:
differences.append(f"在路径 {path} 中,第二个 JSON 缺少键 '{key}'")
else:
if isinstance(json1[key], dict):
differences.extend(compare_json(json1[key], json2[key], path + f".{key}"))
elif json1[key] != json2[key]:
differences.append(f"在路径 {path}.{key} 中发现差异: '{json1[key]}' vs '{json2[key]}'")
for key in json2:
if key not in json1:
differences.append(f"在路径 {path} 中,第一个 JSON 缺少键 '{key}'")
return differences
# 比较两个 JSON 对象
differences = compare_json(json_s1, json_s2)
if differences:
print("发现的差异如下:")
for diff in differences:
print(diff)
else:
print("未发现差异")学无止境,行以致远。
来源:testingpai