精华内容
下载资源
问答
  • 雨田单元测试系统

    2015-12-02 15:57:35
    用户选定被测文件后,系统自动从被测文件中提炼出测试所需信息,使用户可以快速方便的创建单元测试用例或集成测试用例。对于单元测试用例,文件中的各被测单元是隔离的,被测单元之间的调用需要通过建立替身函数来...
  • 雨田单元测试系统2.2.2是拥有独立知识产权的国产测试软件,能够对c/c++文件进行单元测试和集成测试。它以被测单元为纽带,将首次测试以及后续的回归测试有机的关联起来,使测试人员在充分利用历史用例的基础上,集中...

    雨田单元测试系统2.2.2是拥有独立知识产权的国产测试软件,能够对c/c++文件进行单元测试和集成测试。它以被测单元为纽带,将首次测试以及后续的回归测试有机的关联起来,使测试人员在充分利用历史用例的基础上,集中精力对真正需要测试的单元进行测试。雨田单元测试系统2.2.2不但实现了“统一的用例数据录入界面”、“自动生成用例”等多项测试技术的突破,朝着自动化测试迈进了重要的一步,而且极大地推动了单元测试的效率与质量。依托领先的技术、完善的功能,安全可靠的系统,雨田单元测试系统2.2.2能够为航空、航天、船舶、兵器及其它重要领域的软件可靠性做出坚实的支撑。

    特点:

    1、功能强大

    雨田单元测试系统V2.2.2为用户进行单元测试和集成测试提供的支持,在文件解析、手工创建用例、执行用例以及生成相关报告等功能的基础上,开创性的研发了“用例统一录入界面”、“自动生成用例”以及“各次测试有机关联”等多项创新且实用的功能,较大化地降低用户进行单元测试的工作量。

    2、  通用性强

    首先,通过应用新研发的用例模型,在不编写任何代码的前提下,可以对c/c++语言语法允许的各种复杂的输入、输出数据快捷有效的创建用例并进行测试。其次,类c语言的脚本的引入,令系统模型能够描述数据之间各种复杂的约束关系,从而实现了“自动生成的用例”功能的适用范围的全覆盖。另外,基于先进的词法及语法分析技术,能够正确解析通过编译的各种复杂的c文件。。

    3、 易用性好

    雨田单元测试系统主要设计目标之一即是降低测试人员工作复杂度,因此,在充分了解测试人员的工作特点的基础上,系统提供的各项功能简单、实用且符合测试人员的工作习惯。。

    4、使用灵活

    用户可以根据需要定制测试报告中包括的内容;可以根据实际情况增删输入及输出项,可以选择特定输入数据的获取方式以及是否使用缺省值;可以选择录入或者从自动生成的下拉列表中选择枚举数据;可以通过手工创建、复制、导入、自动生成等多种方式创建用例;用例模板既可以设置数据的取值区间,也可以设置单独数值;数组模板既可以为所有元素赋值,也可以以特定元素作为模板元素,其它元素以模板节点的实例的形式创建;既可以给队列的所有节点赋值,也可以指定特定节点为模板节点,其它节点以模板节点实例的形式自动生成……。雨天单元测试系统2.2.2提供众多能够灵活使用的功能以降低测试人员的工作量,从而提高测试的效率与质量。

    雨田单元测试系统较新版本为 V2.2.2,主要更新内容如下:

    1 增加了对象声明缺省定值的处理

    2 解决函数调用实参分析中存在的问题

    3 处理了构造函数中变量应用

    4 解决路径搜索算法中存在的处理循环的错误

    5 更新了continue数据

    展开全文
  • 雨田单元测试系统2.0

    2016-03-31 17:45:45
    雨田单元测试系统2.0是拥有独立知识产权的国产测试软件,能够对c文件进行单元测试和集成测试。它以被测单元为纽带,将首次测试以及后续的回归测试有机的关联起来,使测试人员在充分利用历史用例的基础上,集中精力对...
  • 雨田单元测试系统2.0是拥有独立知识产权的国产测试软件,能够对c文件进行单元测试和集成测试。它以被测单元为纽带,将首次测试以及后续的回归测试有机的关联起来,使测试人员在充分利用历史用例的基础上,集中精力对...
  • 雨田单元测试系统是一款专业国产测试软件。软件的主要功能是对c文件进行单元测试和集成测试。软件以被测单元为纽带,可以根据实际需要查阅黑盒测试涉及用例的执行情况及白盒测试涉及的相关覆盖率,还可以大幅度提高...
  • 雨田单元测试系统是一款适用于C语言文件的单元测试和集成测试系统,雨田单元测试系统可以进行进行黑盒和白盒测试,适合程序猿们测试单元使用。功能介绍雨田单元测试系统V1.0可以针对c语言程序文件进行单元测试和集成...

    雨田单元测试系统是一款适用于C语言文件的单元测试和集成测试系统,雨田单元测试系统可以进行进行黑盒和白盒测试,适合程序猿们测试单元使用。

    422b92fdeb908b4e501530ee7e9e5916.png

    功能介绍

    雨田单元测试系统V1.0可以针对c语言程序文件进行单元测试和集成测试。

    可根据实际需要查阅黑盒测试涉及的用例的执行情况及白盒测试涉及的相关覆盖率。

    用户选定被测文件后,系统自动从被测文件中提炼出测试所需信息,使用户可以快速方便的创建单元测试用例或集成测试用例。

    对于单元测试用例,文件中的各被测单元是隔离的,被测单元之间的调用需要通过建立替身函数来完成。

    对于集成测试用例,各被测单元之间可见,不用单独处理被测单元之间的调用关系。

    系统提供了便捷实用的用例数据输入界面,对于c语言涉及到的任何数据结构都可方便的录入数据。

    用例创建完成后,用户可以执行测试,系统会自动记录相关信息。

    在界面中会显示出用例的执行情况。也可以根据用户需要显示覆盖率信息。

    覆盖率信息主要包括语句覆盖率、分支覆盖率、条件覆盖率及MCDC等覆盖率数据。

    对于覆盖率数据,可以根据用户的选择确定是否累计历史数据。

    使用本软件,可以大幅度提高对c语言编写的软件所进行的测试的效率,进而大幅提高软件质量。

    软件特色

    简单易用:

    对于涉及复杂数据的用例,系统提供了数据录入界面,用户可以不用编写任何代码的情况下完成用例的创建,并进行测试。

    通用性强:

    通过应用作者研发的通用用例存储格式,几乎可以对c语言语法允许的任何复杂的输入、输出(比如链表、多重指针等)创建用例并进行测试。

    包容性强:

    几乎可以适用于所有能够编译通过的c程序文件。

    更新日志

    1、增加了对回归测试的支持,具体包括“归档工程”、“继承用例”、“变动比对”等功能。

    2、增加了“自动生成用例”模块,具体包括“模板管理”、“自动生成”等功能。

    3、增加了“生成测试报告”功能。

    4、调整了“用例类型”的含义并增加了的“用例类型”录入功能。

    5、增加了工程的“版本”、“简介”等属性。

    6、调整了一维变长字符数组的数据录入方式。将其作为字符串处理。

    7、增加了复杂输出数据的数据显示功能。

    8、错误修正

    a) “替代函数”选择“不操作”时不能生成恰当的替代函数;

    b) 复杂数据的一致性比较有时会不正确;

    c) 对unsigned的数据类型分析不正确;

    展开全文
  • 1.团队评审工具 静态代码分析工具列表分析—代码分析工具列表(30款工具) 2.代码检查工具 华为DevCloud 三款主流静态源代码安全检测...java单元测试工具 junit 一文了解十大 Java 开发者必备测试框架! 4....

    ——看书真是迅速进入一个陌生领域的最快办法……系统的、体系完整的知识比起在互联网上七拼八凑出的认识强太多了!
    先记下一些理论概念……

    • 软件生命周期模型
      分析
      设计与文档
      编码与审查
      测试与调试
      发布与维护

    • 软件测试对象的6种分类:
      单元测试(静态检查、动态测试)
      集成测试
      压力测试
      回归测试
      Alpha测试(系统测试)
      Bete测试(交付测试)

    一、大致分类

    0.项目集成构建与管理
    Jenkins是一个功能强大的应用程序,允许持续集成和持续交付项目,可以处理任何类型的构建或持续集成

    1.团队评审工具
    有助于团队通过共同的开发、测试和管理工作以便能生产出高质量代码的代码审查工具。它允许团队在一个透明、协作的框架下进行同行代码审查、用户故事和测试计划——即时保持整个团队知晓对代码所做的更改。
    windows下GitHub的安装、配置以及项目的上传过程详细介绍
    Tortoise SVN 使用教程
    静态代码分析工具列表分析—代码分析工具列表(30款工具)

    2.代码审查工具(静态分析)
    华为DevCloud(提供指导修复)
    三款主流静态源代码安全检测工具比较
    静态代码分析工具清单:开源篇(各语言)
    开源的C++静态分析工具
    代码静态分析工具——splint的学习与使用
    cppcheck一个静态C / c++代码分析工具

    C++代码质量扫描主流工具深度比较
    以下为工具在付费价格、规则数量、准确率、扫描效率、编译依赖、IDE支持、跨平台支持、可扩展开发方面的对比数据。注:本次竞品分析的选择了3款游戏项目(约500万行代码)。
    在这里插入图片描述

    3.OJ——Online Judge在线判题系统

    用户可以在线提交程序源代码,系统对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。
    OJ大集合

    4.代码测试框架、(性能、安全等的单元测试)工具、测试辅助

    0.测试数据生成(其余内容在下一节)
    生成测试数据神器:使用python的faker库
    Java 生成测试字符串的库:Java Faker
    测试用例自动化生成工具
    一个自动生成测试用例的项目

    二、现有具体工具分类

    1.软件模拟人工界面操作
    AutoRunner (录制动作,生成系统脚本,自动运行的测试工具)

    2.单元测试工具——代码段测试、用例自动生成……(官网链接,软件介绍)

    parasoft官网(不止java,还有支持包括c++的一众语言):https://www.parasoft.com/
    代理商1慧都:https://www.evget.com/supplier/439
    代理商2麦克泰:http://www.bmrtech.com/proddetails_91614.html
    parasoft Jtest 使用教程:生成、执行和扩展Junit测试
    使用 Parasoft Jtest:一款优秀的 Java 代码优化和测试工具
    parasoft c++test操作手册

    JUnit 是一个回归测试框架,Junit唯一争议的地方便是需要自己编辑测试用例,被开发者用于实施对应用程序的单元测试,加快程序编制速度,同时提高编码的质量。
    java单元测试工具 junit
    Junit的基本使用(详解)
    Randoop随机测试&自动生成测试用例(它基于Junit格式自动生成测试用例.)

    凯乐软件官网:http://www.kailesoft.com/
    Visual Unit官方博客:http://www.51testing.com/html/58/35658.html
    Visual Unit 简明教程

    测试之家:http://www.tlemp.com/
    雨田单元测试系统

    LDRA:https://ldra.com/
    使用LDRA Testbed对代码进行单元测试

    星云测试/wings发布版开源:https://gitee.com/teststars/wings_release
    c语言单元测试用例全自动生成软件wings介绍
    Wings 与 parasoft c++ test 在单元测试用例自动生成能力的比对

    3.ide工具
    Visual Studio的宏扩展功能(可用来函数测试)
    parasoft C++test(VS2010插件版)简明操作手册
    单元测试框架 CppTest
    Visual AssistX(代码补全、函数提示的好工具)
    Visual Studio C++单元测试总结——3种方法可用

    4.相关收费产品(百度广告的。)
    (1)带有用例库管理的团队管理
    测试用例编写工具ONES TestCase
    (2)自动化测试
    TestStand

    5.其他待发掘的工具……

    其他总结类文章……
    开源单元测试工具汇总
    源代码、单元测试工具
    一文了解十大 Java 开发者必备测试框架!
    常用自动化测试工具
    C++ 的单元测试工具 —— Catch

    其他工具
    Google C++单元测试框架—Gtest框架简介(译文)
    JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具
    单元测试工具IBM Ration Purify
    CppUnit测试框架入门
    Valgrind是一款用于内存调试、内存泄漏检测以及性能分析的软件开发工具。
    Snaipe/Criterion-一个简单可扩展的 C 语言测试框架

    三、各类功能小结

    在获取源代码后可以做的工作↓

    0.代码规范检查
    提供基于内置编码规范的代码检查、基于用户自定义的编码规范的代码检查、自动修复代码规范错误和访问代码规范描述信息等功能。

    1.静态程序分析
    静态代码分析是指不运行源程序,仅通过分析源程序的语法、结构、接口等来检查程序正确性,找出代码隐藏的缺陷之处。
    作为一个多人参与的项目中代码审查过程的一个阶段,因编写完一部分代码之后就可以进行静态分析,分析过程不需要执行整个程序,这有助于在项目早期发现以下问题:变量声明了但未使用、变量类型不匹配、变量在使用前未定义、不可达代码、死循环、数组越界、内存泄漏等。

    在获取源代码并配置好环境后可以做的工作↓

    2.自动化单元测试
    自动建立测试环境,自动生成测试用例以及测试驱动程序和桩函数,自动执行
    白盒(自动建立测试驱动程序和桩函数)、
    黑盒(根据代码中定义的方法入口参数,自动生成大量黑盒测试用例)
    回归测试(只需选择测试项目,即可重复执行原有的白盒和黑盒测试。)。

    在获取源代码并设置好用例后可以做的工作↓

    3.测试用例的生成与使用管理
    测试用例管理
    测试用例生成

    4.其他功能

    代码编写过程中↓
    代码审查:的自动代码补全、函数提示。

    项目编写过程中↓
    团队评审辅助:共同的开发、测试和管理。

    四、相关论文或资料:

    【《软件测试(第2版)》,作者佟伟光】

    关键字:测试用例自动生成
    面向java函数调用路径的测试用例生成方法研究
    基于动态链接库技术的测试程序实现方法
    GUI自动化测试系列(一)测试用例的设计及自动生成
    一种软件测试用例自动生成方法与流程
    自动生成测试脚本方案浅析

    关键字:静态测试软件设计
    一种API自动化测试工具的设计与实现

    搜索关键词:
    测试用例自动生成工具
    自动化测试工具
    自动生成java测试用例的工具
    java函数输入值生成测试工具
    单元测试工具

    下面这张图是Parasoft中文网上的自夸~(其中包括了很多测试公司)
    在这里插入图片描述

    五、测试工具(框架)集中整理

    太多了:Free Open Source Windows Quality Assurance Software
    (博客格式符用起来整理太累,不断更新……以下是还没放进列表的)

    Boost.Test, UnitTest++, lest, bandit, igloo, CxxTest, cute
    CodeTest :C
    RTRT :C,C++,ADA,Java
    Cantata :C,C++
    Logiscope:C、C++、Java、Ada 等
    VectorCast:C,C++,ADA
    Tessy :C
    AsmTester :汇编
    Ounec5.0 扫描语言VB、C、C++、C#、Java,属于付费工具。
    Coverity Prevent 扫描语言有C、C++、C#、Java,属于付费工具。
    Stake SmartRiskAnalyzer 扫描语言C、C++、Java,属于付费工具。
    Flawfinder 扫描语言C、C++、属于付费工具。
    Static Code Analyzer 扫描语言C、C++、C#、Java,属于付费工具。
    PolySpace Client 扫描语言C、C++、python、perl、php,开源
    Fluid 扫描语言Java,开源。
    静态代码分析工具清单:开源篇(各语言)
    静态代码分析工具清单:开源篇(多语言)
    开源静态代码审计软件分析比对

    由于可能有重名,建议童鞋们搜索时用公司名+工具名来搜索,比如Parasoft Jtest
    其中不乏一些小众、冷门、过气、因年代久远销声匿迹了的(以官网凉了为准)。

    软件测试网:http://www.51testing.com

    1.动态测试(输出检测)

    动态测试工具:动态测试工具的一般采用"插桩"的方式,向代码生成的可执行文件中插入一些监测代码,用来统计程序运行时的数据。动态测试工具的代表有:Compuware公司的DevPartner软件;Rational公司的Purify系列等。

    名称针对语言所属公司开源/商业收费官网/下载地址产品形式
    googletest(Gtest)c++google开源https://github.com/google/googletest框架
    JUnitjavaxUnit家族开源https://junit.org/框架
    CUnitCcunit.sourceforge.net/框架
    CatchC++开源https://github.com/catchorg/Catch2/框架
    NUnit.NETxUnit家族开源
    CppUnitc++xUnit家族开源https://sourceforge.net/projects/cppunit/框架
    cpptest (区别于parasoft的c++test)c++http://sourceforge.net/projects/cpptest
    Rational Suite 一大系列——IBM收费
    CoverageC/C++Bullseye收费
    Cactusjava开源
    BoundsChecker开源
    VcTesterAda, C/C++http://www.eztester.com(凉了)插件
    NuMega DevpartnerVB、VC++及JavaCompuware

    2.静态分析(代码质量)

    静态测试工具:直接对代码进行分析,生成可执行文件。静态测试工具一般是对代码进行语法扫描,根据某种质量模型评价代码的质量,生成系统的调用关系图等。静态测试工具的代表有:Telelogic公司的Logiscope软件;PR公司的PRQA软件。

    http://www.sohu.com/a/225782178_505788
    https://www.cnblogs.com/hejing-swust/p/9451512.html

    名称针对语言所属公司开源/商业收费官网/下载地址产品形式
    c++check(cppcheck)c++————https://sourceforge.net/projects/cppcheck http://cppcheck.sourceforge.net http://cppcheck.net/demo(在线试用)vs插件/应用/在线
    Olink(Pork)c++Mozilla——http://danielwilkerson.com/oink/index.html
    Dehydrac++Mozilla——https://developer.mozilla.org/en-US/docs/Archive/Mozilla/Dehydra
    C and C++ Code Counterc++http://sourceforge.net/projects/cccc/
    Splintc++
    Weff++ for GNU g++的选项功能c++
    Klocworkc++收费
    Gimpelc++收费
    Coverityc++收费
    SCA很多Fortify Software收费
    CxSuite很多Checkmarx收费
    CodeSecureASP.NET、JAVA、PHPArmonize收费
    HypersourceJAVAart of defence
    PreventJAVA .NET C/C++Coverity
    FlawfinderC/C++开源
    CodeSonar(集成了FindBugs、Checkstyle、PMD)C/C++Grammatechhttp://www.51testing.com/html/51/10851-76264.html
    DevInspectJAVAHPhttp://www.51testing.com/html/51/10851-76264.html
    PC-LintC/C++商用
    Hammurapijava开源
    Lint4java开源
    JDependjava开源
    BEAM(IBM Checking Tool for Bugs Errors and Mistakes)商用
    Yasca开源
    Inspector for JAVAJAVASofCheck
    KlocWorkJAVA .NET C/C++,C#Insight
    Ounce 6JAVA .NETOunce Labs
    SecurityReviewJAVA .NETVeracode
    Prefast微软在Visual Studio的团队版本中,使用Prefast,打开Project Properties --> Configuration Properties --> Code Analysis -->Enable Code Analysis For C/C++ on build。选择 Yes(/analyze)即可。
    Ncover Explorer(代码覆盖率分析)

    ~.综合应用

    综合类(成套工具,测试同时包含静态分析,而非单纯框架)

    名称针对语言所属公司开源/商业收费官网/下载地址产品形式
    c++testc++parasoft收费https://www.parasoft.com/vs插件/应用
    Jtestjavaparasoft收费https://www.parasoft.com/应用
    TestStandnational instructments有试用版http://www.ni.com/zh-cn/shop/electronic-test-instrumentation/application-software-for-electronic-test-and-instrumentation-category/what-is-teststand.html?cid=Paid_Search-128991-China-BaiDu_TSD1_test_system
    Logiscope
    NuMega
    TestbedC,C++,ADA,CobolLDRA

    小众、国产的:

    名称针对语言所属公司开源/商业收费官网/下载地址产品形式
    雨田单元测试系统C试用收费http://www.tlemp.com(凉半截)应用
    Visual UnitC++凯乐软件http://www.kailesoft.com/应用
    iUnit湖南泛联新安http://www.ubisectech.com/html/iUnit/index.html应用
    一系列泽众软件http://www.spasvo.com/
    思客云http://www.secureyun.cn/
    云效-测试平台阿里云https://www.aliyun.com/product/yunxiao-testing
    测试服务 WeTest腾讯云https://cloud.tencent.com/product/wetest
    Testin北京云测信息技术有限公司https://www.testin.cn/
    DT10trinityhttp://www.trinitytec.com.cn/

    3.软件测试工具(脚本录制与回放)

    黑盒测试工具(功能自动化测试工具、软件测试工具)的一般原理是利用脚本的录制(Record)/回放(Playback),模拟用户的操作。黑盒测试工具的代表有:Rational公司的TeamTest、Robot;Compuware公司的QACenter。

    https://blog.csdn.net/henu_xk126com/article/details/81868591#commentBox
    执行重复的手动测试——自动化执行测试用例取代人工执行测试用例

    名称所属公司官网/下载地址产品特点针对方向
    WinRunner微软windows系统软件
    Mercury QuickTest Pro
    SilkTest
    Selenium
    TPTWeb自动化测试
    QTPWEB自动化测试
    AutoRunner泽众软件http://www.spasvo.com/autorunner
    Watir
    SeleniumWEB自动化测试
    MaxQ
    WebInject
    SoapUI接口自动化测试
    postman接口自动化测试
    robotium手机自动化测试
    appium手机自动化测试

    4.性能测试工具(预测系统行为和性能的负载测试工具)

    MercuryInteractive的LoadRunner是一种适用于各种体系架构的自动负载测试工具,它能预测系统行为并优化系统性能。LoadRunner的测试对象是整个企业的系统,它通过模拟实际用户的操作行为和实行实时性能监测,来帮助您更快的查找和发现问题。

    开源性能自动化测试工具:
    Jmeter、OpenSTA、DBMonster、TPTEST、Web Application Load Simulator

    名称所属公司官网/下载地址产品特点针对方向
    LoadRunnerMercuryInteractive
    jmeter开源

    5.测试管理工具

    测试管理工具对测试计划、测试用例、测试实施进行管理,并且,测试管理工具还包括对缺陷的跟踪管理。测试管理工具的代表有:Rational公司的TestManager;Compureware公司的TrackRecord;Mercury Interactive公司的TestDirector等软件。

    名称所属公司官网/下载地址产品特点产品形式
    ·Kiwi TCMShttp://kiwitcms.org/开源
    TestLinkhttp://www.testlink.org/开源
    TestCaseDBhttp://www.testcasedb.com开源
    Itest(国产)itest studiohttps://www.cnblogs.com/mypm/p/10649526.html https://itest.work/demo/网页版
    飞蛾CODINGhttps://feie.work/
    禅道项目管理系统https://www.zentao.net/开源
    Bugzillahttps://www.bugzilla.org/
    TestCenter (测试管理工具)http://www.opdown.com/soft/110667.html
    腾讯Buglyhttps://bugly.qq.com/v2
    展开全文
  • 第二:认证服务与资源服务都调用系统服务(将日志传递给系统服务,进行数据的持久化)-自己做 系统服务设计及实现 业务描述 系统服务jt-system工程用于提供,其它服务需要的基础数据,例如用户信息,日志信息的记录等,其...

    拓展业务描述

    增加数据库访问

    第一:登录用户信息来自数据库(用户自身信息以及用户对应的权限信息)
    第二:将上传的文件信息写入到数据库(自己做)
    第三:将登录操作,文件上传操作的操作日志写入到数据库.(自己做)

    增加服务之间的调用

    第一:认证服务调用系统服务(获取用户以及用户权限)
    第二:认证服务与资源服务都调用系统服务(将日志传递给系统服务,进行数据的持久化)-自己做

    系统服务设计及实现

    业务描述

    本次实践,我们的认证服务(auth)中需要的用户信息以及用户的权限信息由系统服务(sca-system)提供,我们可以在auth工程中通过feign方式对系统服务(sca-system)工程进行调用,例如:
    在这里插入图片描述

    工程结构设计

    在这里插入图片描述

    工程数据初始化

    将jt-sso.sql文件在mysql中执行一下,其过程如下:
    第一:登录mysql

    mysql -uroot -proot
    

    第二:通过source指令执行jt-sso.sql文件

    source d:/jt-sso.sql
    

    其中,数据库中表与表之间的关系如下:

    在这里插入图片描述

    创建系统工程

    创建sca-system工程,此工程作为02-sca-files的子工程进行业务实现,例如:
    在这里插入图片描述

    添加项目核心依赖

            <!--1.数据库访问相关-->
            <!--1.1 mysql 数据库驱动-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
            <!--1.2 mybatis plus 插件-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.4.2</version>
            </dependency>
            <!--服务治理相关-->
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
            </dependency>
            <!--Web 服务相关-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    

    创建项目配置文件

    在项目中添加bootstrap.yml文件,其内容如下:

    server:
      port: 8061
    spring:
      application:
        name: sca-system
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848
          config:
            server-addr: localhost:8848
            file-extension: yml
      datasource:
        url: jdbc:mysql:///jt-sso?serverTimezone=Asia/Shanghai&characterEncoding=utf8
        username: root
        password: root
    

    创建项目启动及测试类

    第一步:在项目中添加启动类,例如:

    package com.jt;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @SpringBootApplication
    public class SystemApplication {
        public static void main(String[] args) {
            SpringApplication.run(SystemApplication.class,args);
        }
    }
    

    第二步:在项目中添加单元测试类,测试数据库连接,例如:

    package com.jt;
    
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    import javax.sql.DataSource;
    import java.sql.Connection;
    import java.sql.SQLException;
    
    @SpringBootTest
    public class DataSourceTests {
        @Autowired
        private DataSource dataSource;//HikariDataSource
        @Test
        void testGetConnection() throws SQLException {
            Connection conn=
            dataSource.getConnection();
            System.out.println(conn);
        }
    }
    

    Pojo对象逻辑实现

    添加项目User对象,用于封装用户信息。

    package com.jt.system.pojo;
    import lombok.Data;
    import java.io.Serializable;
    
    /**
     * 通过此对象封装用户信息
     */
    @Data
    public class User implements Serializable {
        private static final long serialVersionUID = 4831304712151465443L;
        private Long id;
        private String username;
        private String password;
        private String status;
    }
    

    Dao对象逻辑实现

    第一步:创建UserMapper接口,并定义基于用户名查询用户信息,基于用户id查询用户权限信息的方法,代码如下:

    package com.jt.system.dao;
    
    import com.baomidou.mybatisplus.core.mapper.BaseMapper;
    import com.jt.system.pojo.User;
    import org.apache.ibatis.annotations.Mapper;
    import org.apache.ibatis.annotations.Select;
    
    import java.util.List;
    
    @Mapper
    public interface UserMapper extends BaseMapper<User> {
        /**
         * 基于用户名获取用户信息
         * @param username
         * @return
         */
        @Select("select id,username,password,status " +
                "from tb_users " +
                "where username=#{username}")
        User selectUserByUsername(String username);
    
        /**
         * 基于用户id查询用户权限
         * @param userId 用户id
         * @return 用户的权限
         * 涉及到的表:tb_user_roles,tb_role_menus,tb_menus
         */
        @Select("select distinct m.permission " +
                "from tb_user_roles ur join tb_role_menus rm on ur.role_id=rm.role_id" +
                "     join tb_menus m on rm.menu_id=m.id " +
                "where ur.user_id=#{userId}")
        List<String> selectUserPermissions(Long userId);
    
    }
    

    第二步:创建UserMapperTests类,对业务方法做单元测试,例如:

    package com.jt;
    
    import com.jt.system.pojo.User;
    import com.jt.system.dao.UserMapper;
    import org.junit.jupiter.api.Test;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    
    import java.util.List;
    
    @SpringBootTest
    public class UserMapperTests {
    
        @Autowired
        private UserMapper userMapper;
    
        @Test
        void testSelectUserByUsername(){
            User user =
            userMapper.selectUserByUsername("admin");
            System.out.println(user);
        }
        @Test
        void testSelectUserPermissions(){
            List<String> permission=
            userMapper.selectUserPermissions(1L);
            System.out.println(permission);
        }
    }
    

    Service对象逻辑实现

    创建UserService接口及实现泪,定义用户及用户权限查询逻辑,代码如下:

    第一步:定义service接口,代码如下:

    package com.jt.system.service;
    
    import com.jt.system.pojo.User;
    
    import java.util.List;
    
    public interface UserService {
        User selectUserByUsername(String username);
        List<String> selectUserPermissions(Long userId);
    }
    

    第二步:定义service接口实现类,代码如下:

    package com.jt.system.service.impl;
    
    import com.jt.system.dao.UserMapper;
    import com.jt.system.pojo.User;
    import com.jt.system.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    @Service
    public class UserServiceImpl implements UserService {
        @Autowired
        private UserMapper userMapper;
        @Override
        public User selectUserByUsername(String username) {
            return userMapper.selectUserByUsername(username);
        }
        @Override
        public List<String> selectUserPermissions(Long userId) {
            return userMapper.selectUserPermissions(userId);
        }
    }
    

    Controller对象逻辑实现

    package com.jt.system.controller;
    
    import com.jt.system.pojo.User;
    import com.jt.system.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    @RestController
    @RequestMapping("/user/")
    public class UserController {
        @Autowired
        private UserService userService;
    
        @GetMapping("/login/{username}")
        public User doSelectUserByUsername(
                @PathVariable("username") String username){
            return userService.selectUserByUsername(username);
        }
        @GetMapping("/permission/{userId}")
        public List<String> doSelectUserPermissions(
                @PathVariable("userId") Long userId){
            return userService.selectUserPermissions(userId);
        }
    }
    

    启动服务进行访问测试

    启动sca-system工程服务,打开浏览器分别对用户及用户权限信息的获取进行访问测试

    认证服务工程中Feign应用

    业务描述

    在认证sca-auth工程中,我们通过调用sca-system服务获取登录用户信息,用户权限信息.

    添加Feign依赖

    在sca-auth工程中添加如下依赖,例如:

      <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
      </dependency>
    

    Pojo对象逻辑实现

    package com.jt.auth.pojo;
    import lombok.Data;
    import java.io.Serializable;
    @Data
    public class User implements Serializable {
        private static final long serialVersionUID = 4831304712151465443L;
        private Long id;
        private String username;
        private String password;
        private String status;
    }
    

    Feign接口逻辑实现

    创建Feign接口,基于feign实现远程调用逻辑,例如:

    package com.jt.auth.feign;
    import com.jt.auth.pojo.User;
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    
    import java.util.List;
    
    @FeignClient(name = "sca-system",contextId = "remoteUserService")
    public interface RemoteUserService {
           /**定义基于用户查询用户信息的方法*/
           @GetMapping("/user/login/{username}")
           User selectUserByUsername(
                   @PathVariable("username") String username);
    
           /**基于用户名查询用户权限信息*/
           @GetMapping("/user/permission/{userId}")
           List<String> selectUserPermissions(
                   @PathVariable("userId")Long userId);
    }
    

    说明,feign接口定义后,需要在sca-auth启动类上添加@EnableFeignClients注解.

    调用Feign接口逻辑

    在sca-auth工程中的UserDetailServiceImpl中添加对feign接口的调用,例如:

    package com.jt.auth.service;
    
    import com.jt.auth.feign.RemoteUserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.security.core.GrantedAuthority;
    import org.springframework.security.core.authority.AuthorityUtils;
    import org.springframework.security.core.userdetails.User;
    import org.springframework.security.core.userdetails.UserDetails;
    import org.springframework.security.core.userdetails.UserDetailsService;
    import org.springframework.security.core.userdetails.UsernameNotFoundException;
    import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
    import org.springframework.stereotype.Service;
    
    import java.util.List;
    
    /**
     * 登录时用户信息的获取和封装会在此对象进行实现,
     * 在页面上点击登录按钮时,会调用这个对象的loadUserByUsername方法,
     * 页面上输入的用户名会传给这个方法的参数
     */
    @Service
    public class UserDetailsServiceImpl implements UserDetailsService {
        @Autowired
        private BCryptPasswordEncoder passwordEncoder;
    
        @Autowired
        private RemoteUserService remoteUserService;
        //UserDetails用户封装用户信息(认证和权限信息)
        @Override
        public UserDetails loadUserByUsername(String username)
                throws UsernameNotFoundException {
            //1.基于用户名查询用户信息(用户名,用户状态,密码,....)
            com.jt.auth.pojo.User user=
                    remoteUserService.selectUserByUsername(username);
            //2.查询用户权限信息(后面会访问数据库)
            List<String> permissions=
            remoteUserService.selectUserPermissions(user.getId());
            System.out.println("permissions="+permissions);
            List<GrantedAuthority> authorities =
            AuthorityUtils.createAuthorityList(//这里的权限信息先这么写,后面讲
                    permissions.toArray(new String[]{}));
            //3.对用户信息进行封装
            return new User(username,user.getPassword(),authorities);
        }
    }
    

    启动服务进行访问测试

    启动sca-auth,sca-resource,sca-resource-gateway,sca-system,sca-resource-ui工程,然后从登录开始进行测试.

    总结(Summary)

    本章节利用同学们学过的知识点,在单点登录系统中添加了数据访问,Feign方式的服务调用逻辑,可以基于这里的逻辑实现,自己拓展日志等逻辑的实现。

    展开全文
  • 05-单点登陆系统(SSO)设计及实现

    千次阅读 多人点赞 2021-07-22 13:47:30
    系统简介 Http通讯协议 web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有...
  • 近年来,国内公安系统的信息化建设进入了飞速发展的阶段。一方面是因为公安系统的业务需求从静态到动态、从粗放到集约、从低速到高效的转变,信息技术有效的对现有的应用系统实现整合、提高有限的警力资源分配。另一...
  • Redis分布式缓存知识点总结 Redis简介 Redis背景 我们现在的项目架构中,基本上是Web服务器(Tomcat)和数据库独立部署,独占服务器资源,随着...(图源CSDN@雨田说码) Redis概述 Redis是一个key-value存储系统(官网
  • 文章目录整合环境初始化概述创建项目并依赖环境测试代码实现公告业务设计及实现业务描述Pojo类设计Dao接口及方法单元测试实现及分析总结(Summary)重难点分析FAQ分析BUG分析 整合环境初始化 概述 Mybatis是一个优秀的...
  • 12-2107课上问题分析及总结

    千次阅读 2021-10-20 11:02:23
    (对系统分而治,解决因并发访问过大带来的系统复杂性(例如:业务,开发,测试,升级,可靠性等) 微服务设计的特点?(单一职责,独立进程,开发测试效率高,可靠性高,升级难度小,但会带来一定的维护成本) 微服务解决方案有哪些?...
  • 自带设备模拟工具,支持16个设备数据模拟,同时还带数据库数据模拟,以便在没有设备的时候测试数据。 支持所有windows操作系统+linux操作系统和其他操作系统。 3.2 效果图 4 可视化大屏电子看板系统 4.1 功能...
  • 06-Redis架构设计应用实践

    千次阅读 多人点赞 2021-08-07 11:25:53
    文章目录Redis主从复制简介基本架构快速入门实践主从同步原理分析小节面试分析Redis哨兵模式简介基本架构哨兵快速入门Sentinel 配置进阶哨兵工作原理分析Redis集群高可用简述基本架构创建集群Jedis读写数据测试...
  • 目开发过程中应用程序与数据库交互时,“获得连接”或“释放连接”是非常消耗系统资源的两个过程,频繁地进行数据库连接的建立和关闭会极大影响系统的性能,若多线程并发量很大,这样耗时的数据库连接就可能让系统变...
  • 01-SpringBoot技术快速入门

    千次阅读 2021-08-10 23:27:37
    文章目录简介背景分析解决什么问题有哪些核心特性SpringBoot 项目创建及运行创建项目启动运行项目启动过程概要分析SpringBoot 快速入门实践业务...案例设计及分析代码编写及测试分析测试过程中的BUG分析总结(Summary)...
  • 服务器上的SMMU一般用来完成设备的地址转换,并且可以实现设备隔离,在虚拟化中很实用,但是在物理机测试场景下,SMMU可能会导致性能下降,尤其对于小包网络场景,因此建议关闭该功能提升服务器性能。在虚拟机场景...
  • Python已经演化出了一个广泛的生态系统,该生态系统能够让Python程序员的生活变得更加简单,减少他们重复造轮的工作。同样的理念也适用于工具开发者的工作,即便他们开发出的工具并没有出现在最终的程序中。本文将...
  • 网络设备使用与维护作者:张凌杰 主编出版时间:2013年版内容简介《计算机网络技术专业课程改革成果教材:网络设备使用与维护》全面系统地介绍了网络设备的配置、使用、故障诊断与维护的实战方法和操作技巧。...
  • java中的设计模式学习

    2016-07-21 20:58:04
    设计模式(Design Patterns)  ——可复用面向对象软件的基础 设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过... 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化
  • 其中,外汇交易中心《新一代外汇交易系统》、中国建设银行《住房租赁综合服务系统》、中国农业银行《异地双活两地三中心工程》、中国工商银行《金融云建设项目》、清算总中心《第二代支付系统建设工程》、中国银行...
  • gcc警告选项汇总 转

    千次阅读 2020-01-06 11:11:46
    具有32位“单精度”浮点单元的CPU实现float硬件,但在软件中模拟double精度。 在这样的机器上,由于软件仿真所需的开销,使用double值进行计算要昂贵得多。 使用double意外执行计算很容易,因为浮点文字隐含了...
  • x2struct rapidjson

    2020-05-12 11:42:48
    RapidJSON 依赖于以下软件: CMake 作为通用生成工具 (optional) Doxygen 用于生成文档 (optional) googletest 用于单元及性能测试 生成测试及例子的步骤: 执行 git submodule update --init 去获取 third...
  • 03-Java中操作redis实践

    千次阅读 多人点赞 2021-08-07 14:30:40
    第五步:重启redis服务,并检查启动日志(docker logs 容器id) 快速入门实现 在Jedis工程中定义单元测试类,在类中定义单元测试方法: 基础类型操作 在项目的src/test/java目录创建单元测类,例如: package com.jt;...
  • 服务端 RADOS 集群主要由两种节点组成:一种是为数众多的、负责完成数据存储和维护功能的OSD(Object Storage Device),另一种则是若干个负责完成系统状态检测和维护的monitor。 Monitor Monitor 集群提供了...
  • JAVASE--知识总结

    2019-08-17 11:31:25
    JUnit:java单元测试; maven:项目管理的; gson:Google 的Json解析库; jsoup:html解析; apache commons:包含了大量组件,很多实用小工具。 Java常用接口: Comparable ,Collection,Set, List, ...
  • Router 路由 Vuex 是VUE的状态管理 CSS Pre-processors 指是否需要CSS的预处理器 Linter / Formatter 指代码风格检查和格式校验 Unit Testing 单元测试 E2E Testing 端对端测试 先保持默认选择,回车 出现版本选择,...
  • 调试库, 内存和资源泄露检测单元测试 Boost.Test :Boost测试库 Catch :一个很时尚的,C++原生的框架,只包含头文件,用于单元测试,测试驱动开发和行为驱动开发。 CppUnit :由JUnit移植过来的...
  • 04-JWT技术分析及应用实践

    千次阅读 2021-07-22 00:39:53
    } } 第四步:运行启动类,检测是否可成功启动 创建和解析token 编写单元测试,实践Token对象的创建与解析,例如: @Test void testCreateAndParseToken(){ //1.创建令牌 //1.1定义负载信息 Map map=new HashMap(); ...

空空如也

空空如也

1 2
收藏数 33
精华内容 13
关键字:

雨田单元测试系统