武林小秘籍

本文介绍了后端项目中的合同系统、影像传输系统和机构运营系统的功能,以及JavaWeb项目的运营流程。重点讨论了自动化测试工具TestNG的使用,包括配置、注解和编写自动化脚本,以及SQL基础操作和MySQL事务管理。
摘要由CSDN通过智能技术生成

项目:

后端项目:
合同系统:
1、系统介绍:合同系统主要用于域内所有合同预览,创建,签署,生成,归档。提供标准化合同模板,也支持自定义模板,支持上游定制化合同填充项内容。系统提供RPC写接口2个,支持单个,批量创建合同,历史合同重签。提供查询接口8个,主要功能为不同条件查询合同签署状态,查询模板信息,查询合同PDF文件。
影像传输系统
1、主要用于将贷款授信支用过程中产生的影像文件(人脸照片,身份证照片,合同文件)进行传输归档。支持资方,产品,场景定制传输,支持配置传输时效,传输路径,命名格式。系统提供RPC写接口2个,一个异步传输,一个同步传输接口。提供查询接口3个,用于查询机构影像件配置信息,影像件传输结果查询。
javaWeb项目:
机构运营系统:
1、系统介绍:主要用于微贷贷后运营,主要包含功能:
对公还款:用户由于银行卡冻结、App无法登陆、银行卡限额、特殊减免等原因无法通过线上还款,故提供给用户指定银行账户,由用户线下转账至银行账户进行还款,用户转账成功后,在对公还款系统操作入账,也支持给用户减免息费,减免违约金,减免罚息等操作。
呆账核销:用于对微贷借款逾期超150天的借据,公司认定无法回款的款项进行账务核销动作
贷后材料下载:用户获取客户借款时产生的的相关合同,人脸,身份证照片,实名信息,催收记录等贷后材料,也作为账务核销的材料补充。
客诉反馈:用于对接银行和美团之前,有客户贷后问题,催收,客诉等问题的反馈处理。

自我介绍:
您好,我叫金汉生,来自于江西景德镇。已从事软件测试行业多年,工作期间负责过服务端项目,App项目,Web项目。
目前所在的项目是美团网贷,项目组17人,分为3个方向。我主要负责机构能力方向,负责3个服务端系统,一个web项目。
日常工作主要为需求测试和自动化指标运营,负责系统的测试环境运维和治理。

项目相关问题:
1、紧急需求明天就要上
1、评估测试内容,确定是否能完成。如果实在无法完成建议还是延期上线。如果必须上线可挑选主要功能测试,告知业务风险。
2、拆分功能模块,部分功能上线。做功能开关,上线可以退回原逻辑
3、拆分需求测试点,增加人力共同测试
4、加班
2、最有印象的缺陷:
账务核销中流程中调用了两个账务的接口,一个查询用户借据信息,一个核销接口。我们是先从查询接口中查询到借据信息,然后使用查询到的借据信息进行核销。
出问题在于查询返回是个list,历史代码写个是写死get(0),联合贷同时返回美团借据和资方借据,如果我们要核销资方借据,但是list是无序的,get0之后可能得到美团借据,也可能得到资方借据。如果借据不匹配的话则核销失败

自动化:

问题1:如何搭建一个自动化项目?
本质上自动化项目和业务项目无任何区别,自动化项目也是一个标准的Java项目。
步骤1:在公司代码仓申请新建一个代码仓,用于存放自动化项目代码。
步骤2:使用maven命令生成一个公司模板工程。
mvn archetype:指定模板生成maven项目
其中groupId、artifactId、version填写创建的固件的坐标信息和版本号,后面的groupId、artifactId填自己需要创建的项目的坐标号。

mvn archetype:generate  -DarchetypeGroupId=<groupId>  
			  -DarchetypeArtifactId=<artifactId>  
			  -DarchetypeVersion=<version>
 			  -DgroupId=<groupId> 
 			  -DartifactId=<artifactId> -X

步骤3:修改项目的配置文件信息
pom.xml:配置项目信息,引入项目所需的jar包(如TestNG,业务代码,fastJSON,log,spring等等)
applicationContext.xml:这是Spring框架的主配置文件,用于配置Spring的各种元素,如Bean、AOP、数据库连接等。
applicationContext-database.xml:这个文件通常用于配置数据库相关的内容,如数据源、事务管理器、Hibernate或MyBatis的配置等。
testng.xml:这个文件用于配置TestNG测试框架,可以定义测试套件、测试类、测试方法等。
spring-aop.xml:这个文件通常用于配置Spring的AOP(面向切面编程)相关内容,如切面、切点、通知等。
spring-common.xml:这个文件名没有固定的约定,可能用于配置一些通用的或者公共的Bean。

步骤4:依次执行git命令

git add --all     添加所有
git commit -m 'Initail'    暂存区的更改提交到本地仓
git remote add origin ssh://xxxxxxx     在本地Git仓库中添加一个新的远程仓库的引用,
										remote:这是一个占位符,表示远程仓库的名称,通常默认为 origin。
										url:远程仓库的URL(ssh://xxxxxxx )。这可以是HTTP(S)地址或SSH地址,取决于你的访问权限和偏	好。
git push origin master     推送代码到远程仓库,第一次推送master,需要仓库管理员权限。

步骤6:以上仓库搭建完毕,可以开始编写自动化代码了。

问题2:TestNG相关
1、TestNG常用注解

注解描述
@BeforeSuite在该套件的所有测试都运行之前运行,仅运行一次
@AfterSuite在该套件的所有测试都运行之后运行,仅运行一次
@BeforeTest注释的方法将在属于test标签内的类的所有测试方法运行之前运行,只对@Test标记的方法生效
@AfterTest注释的方法将在属于test标签内的类的所有测试方法运行之后运行,只对@Test标记的方法生效
@BeforeClass在调用当前类的第一个测试方法之前运行,注释方法仅运行一次
@AfterClass在调用当前类的第一个测试方法之后运行,注释方法仅运行一次
@BeforeMethod注释方法将在每个测试方法之前运行
@AfterMethod注释方法将在每个测试方法之后运行
@DataProvider标记一种方法来提供测试方法的数据。 注释方法必须返回一个Object [] [],其中每个Object []可以被分配给测试方法的参数列表。 要从该DataProvider接收数据的@Test方法需要使用与此注释名称相等的dataProvider名称
@Listeners定义测试类上的侦听器
@Test将类或方法标记为测试的一部分,此标记若放在类上,则该类所有公共方法都将被作为测试方法

核心注解:@Test, @DataProvider

2、TestNG配置文件

用于配置TestNG运行时会运行哪些case,标签:包级别 标签:类级别

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="FDTestSuite">
    <listeners>
        <listener class-name="com.meituan.financegroup.listener.ResultCollectListener"/>
    </listeners>
    <test preserve-order="true" name="FDTest">
        <!--测试包路径-->
        <packages>
            <package name="com.meituan.testsuite.*" />
        </packages>
        <classes>
            <class name="com.meituan.testsuite.sqlDemo.MapperDemo" />
        </classes>
    </test>
</suite>

3、TestNG的测试报告
1、本地报告
运行代码后生成目录:
测试报告在index.xml
2、配置监听器则使用监听器生成报告
testng.xml配置

4、如何编写一个自动化用例及维护?
1、自动化用例编写一般都在功能测试完毕之后,功能已稳定开始编写。根据功能测试用例及优先级,考虑编写优先顺序,优先编写P0级别用例。
2、在自动化项目中,编写自动化脚本,包括请求调用,断言。编写完成后提交代码。
5、如果自动化失败了如何分析是否有bug?
1、 检查测试日志和报告,一般日志可大致指向失败的原因
2、本地重新运行失败的自动化测试,以确定问题是一次性的还是可重现的。如问题不在复现,查看脚本编写是否合理,亦或是环境不稳定导致。
3、如是可重现的,分析是否是配置,下游调用失败,业务逻辑错误,网络配置,数据库链接等导致的自动化用例失败。定位到具体问题后,就可知道是否有bug
4、根据定位到的具体问题,解决问题后重新运行,通过后则解决该问题。
6、TestNG怎么编写一个自动化脚本
首先常写的场景有,rpc接口,http接口,crane任务,MQ
1、RPC接口:
第一步:新建一个class,class中新建一个test方法,方法上标注@TEST
第二不:我们都是采用数据驱动,所以要再建一个方法,用于过去json文件中的测试数据
第三步:新建一个json文件,用于存放case不同的请求参数
第四步:查看项目是否引入了需要编写的rpc接口最新的jar包版本,然后在thrift.xml文件中配置该接口的bean
第五步:在测试方法中,new出请求参数对象并set值,调用需要测试的接口,查看返回值是否符合预期,对接口返回进行断言。

数据库:

1、基础语句:增删改查

  1. 查询(SELECT)
SELECT column1, column2, ...
FROM table_name
WHERE condition;
  1. 插入(INSERT)
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);

  1. 更新(UPDATE)
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
  1. 删除(DELETE)
DELETE FROM users WHERE name = 'Alice';

5、连表查询

1. INNER JOIN
用途:返回两个表中有匹配的记录。如果行在两个表中都有匹配,则会出现在结果中。
SELECT columns
FROM table1
INNER JOIN table2
ON table1.column_name = table2.column_name;

2. LEFT JOIN (或 LEFT OUTER JOIN)
用途:返回左表(table1)的所有记录,以及右表(table2)中匹配的记录。如果左表中的记录在右表中没有匹配,则结果集中右表的部分将包含NULL。
SELECT columns
FROM table1
LEFT JOIN table2
ON table1.column_name = table2.column_name;

3. RIGHT JOIN (或 RIGHT OUTER JOIN)
用途:返回右表(table2)的所有记录,以及左表(table1)中匹配的记录。如果右表中的记录在左表中没有匹配,则结果集中左表的部分将包含NULL。
SELECT columns
FROM table1
RIGHT JOIN table2
ON table1.column_name = table2.column_name;

2、SQL常用运算符

关键字用途
order by让查询结果中的信息按照给定的属性排序(默认升序,上小下大)
desc在order by之后的属性后使用,表示采用降序排序
asc在order by之后的属性后使用,表示采用升序排序(默认)
between在where中使用between表示一个数在两个数值之间取值
avg平均值
min最小值
max最大值
sum总和
count计数
distinct表示将distinct后的属性去重
group by将在group by上取值相同的信息分在一个组里
having用途:HAVING子句使得用户能够指定过滤条件来筛选分组后的各组数据。它通常与GROUP BY子句结合使用,在分组后对组进行过滤,与聚合函数一起使用,HAVING子句常用于对聚合函数(如SUM, AVG, MAX, MIN, COUNT等)的结果进行条件过滤。

3、MySQL事务

概念:事务是数据库管理系统执行过程中的一个逻辑单位,由一个或多个SQL语句组成。它是一个不可分割的工作单位,事务内的SQL要么全部成功,失败一个则全部回滚。

START TRANSACTION; -- 开启一个新的事务

DECLARE EXIT HANDLER FOR SQLEXCEPTION -- 定义异常处理器
BEGIN
    ROLLBACK; -- 发生任何SQL异常时回滚事务
    -- 此处可以添加更多的错误处理逻辑,例如记录错误信息等
END;

INSERT INTO orders (order_number, order_date, customer_id) VALUES ('12345', '2024-03-10', 1); -- 假设这是一个插入订单操作
UPDATE inventory SET quantity = quantity - 1 WHERE product_id = 'A123'; -- 更新库存,减少1个产品A123的数量

COMMIT; -- 如果一切顺利,提交事务

  • 10
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值