??xml version="1.0" encoding="utf-8" standalone="yes"?>日韩av在线中文字幕,国产69精品久久app免费版,欧美少妇激情http://www.aygfsteel.com/paulwong/category/54688.htmlzh-cnSat, 22 Feb 2020 17:36:31 GMTSat, 22 Feb 2020 17:36:31 GMT60采用 jstatd 监控服务?/title><link>http://www.aygfsteel.com/paulwong/archive/2020/02/21/435144.html</link><dc:creator>paulwong</dc:creator><author>paulwong</author><pubDate>Fri, 21 Feb 2020 09:08:00 GMT</pubDate><guid>http://www.aygfsteel.com/paulwong/archive/2020/02/21/435144.html</guid><wfw:comment>http://www.aygfsteel.com/paulwong/comments/435144.html</wfw:comment><comments>http://www.aygfsteel.com/paulwong/archive/2020/02/21/435144.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/paulwong/comments/commentRss/435144.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/paulwong/services/trackbacks/435144.html</trackback:ping><description><![CDATA[<br /><a target="_blank">https://www.jianshu.com/p/97f09e1648a6</a><br /><img src ="http://www.aygfsteel.com/paulwong/aggbug/435144.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/paulwong/" target="_blank">paulwong</a> 2020-02-21 17:08 <a href="http://www.aygfsteel.com/paulwong/archive/2020/02/21/435144.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SPRING BOOT 环境下减中间g依赖的UNIT试http://www.aygfsteel.com/paulwong/archive/2020/02/07/435067.htmlpaulwongpaulwongFri, 07 Feb 2020 02:28:00 GMThttp://www.aygfsteel.com/paulwong/archive/2020/02/07/435067.htmlhttp://www.aygfsteel.com/paulwong/comments/435067.htmlhttp://www.aygfsteel.com/paulwong/archive/2020/02/07/435067.html#Feedback0http://www.aygfsteel.com/paulwong/comments/commentRss/435067.htmlhttp://www.aygfsteel.com/paulwong/services/trackbacks/435067.htmlSPRING BOOT 环境下,试有时?x)依赖于外部的中间gQ如MysqlQActivemqQMongodb{,那如何能减少q种依赖呢?
SPRING BOOT其实已经实现?jin)自动化配置?br />

Mongodb

SPRING BOOT的自动化配置文gQorg.springframework.boot.autoconfigure.mongo.embeddedEmbedded.MongoAutoConfiguration.java

在pom.xml中新增一test profileQƈd相应jar包,q样可防止对其他profile的媄(jing)响,如果是在Eclipse跑测试,需在Project的属性中指定Active Profile为testQ以覆盖pom.xml的定义?br /> q种方式即是用SPRING DATA MONGODB的REPOSITORY也是适用的?br />
    <profile>
        <id>test</id>
        <dependencies>
            <dependency>
                <groupId>de.flapdoodle.embed</groupId>
                <artifactId>de.flapdoodle.embed.mongo</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
    </profile>
在application-test.yaml中添加端口,其他如IP那些信息都不需?br />
spring:
   data:
      mongodb:
         port: 27017

unit test config

import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UncheckedIOException;
import java.nio.charset.StandardCharsets;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.sql.DataSource;

import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Profile;
import org.springframework.core.io.Resource;
import org.springframework.core.io.ResourceLoader;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
import org.springframework.jdbc.datasource.init.DatabasePopulatorUtils;
import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator;
import org.springframework.util.FileCopyUtils;

@Configuration
@Profile({"test", "integrationTest"})
@EnableMongoRepositories(
        basePackages = {"paul.com.repository"
        }
)
public class EmbeddedDataSourceConfiguration {
    
    @Value("classpath:/initdata/USER.json")
    private Resource userResource;

    @Value("classpath:/initdata/MEMBERS.json")
    private Resource membersResource;
    
    @Autowired
    private ResourceLoader resourceLoader;
    
    @Autowired
    private DataSource dataSource;
    
    @Autowired
    private MongoTemplate  mongoTemplate;
    
    @PostConstruct
    protected void initialize() throws FileNotFoundException, IOException {
        this.initializeHsqldb();
        this.initializeMongodb();
    }
    
    private void initializeHsqldb() {
        ResourceDatabasePopulator populator = new ResourceDatabasePopulator();
        populator.addScript(resourceLoader.getResource("classpath:/org/springframework/batch/core/schema-hsqldb.sql"));
        populator.setContinueOnError(true);
        DatabasePopulatorUtils.execute(populator , dataSource);
    }
    
    private void initializeMongodb() throws FileNotFoundException, IOException {
        this.saveResource(userResource, "USER");
        
        this.saveDocumentList(membersResource, "MEMBER");
    }
    
    private void saveResource(Resource resource, String collectionName) {
        String resourceJson = this.asString(resource);
        Document resourceDocument = Document.parse(resourceJson);
        this.mongoTemplate.save(resourceDocument, collectionName);
    }
    
    private void saveDocumentList(Resource resource, String collectionName) {
        String resourceJson = this.asString(resource);
        Document resourceDocument = Document.parse("{ \"list\":" + resourceJson + "}");
        List<Document> documentList = resourceDocument.get("list", List.class);
        documentList.forEach(document -> this.mongoTemplate.save(document, collectionName));
    }
    
    private String asString(Resource resource) {
        try (Reader reader = new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8)) {
            return FileCopyUtils.copyToString(reader);
        } catch (IOException e) {
            throw new UncheckedIOException(e);
        }
    }
    
//    @Bean(destroyMethod="close")
//    public DataSource dataSource() {
//        BasicDataSource dataSource = new BasicDataSource();
//        dataSource.setDriverClassName(environment.getProperty("batch.jdbc.driver"));
//        dataSource.setUrl(environment.getProperty("batch.jdbc.url"));
//        dataSource.setUsername(environment.getProperty("batch.jdbc.user"));
//        dataSource.setPassword(environment.getProperty("batch.jdbc.password"));
//        return dataSource;
//    }
}

ActiveMQ

只需更改application-test.yml中的brokerUrl为vm://embedded卛_
spring:
   activemq:
      broker-url: vm://embedded?broker.persistent=false,useShutdownHook=false
      in-memory: true
      non-blocking-redelivery: true
      #packages:
        #trust-all: false
        #trusted: com.memorynotfound
      pool:
        block-if-full: true
        block-if-full-timeout: -1
        create-connection-on-startup: true
        enabled: false
        expiry-timeout: 0
        idle-timeout: 30000
        max-connections: 1
        maximum-active-session-per-connection: 500
        reconnect-on-exception: true
        time-between-expiration-check: -1
        use-anonymous-producers: true
        user: admin
        #password: ENC(hWJHuMyhydTqyF32neasTw==)
        password: admin

关系型数据库

在application-test.yml中的数据库信息删除,同时在pom.xml中添加jar包依赖,q边是采用HSQL数据?br />
    <profile>
        <id>test</id>
        <dependencies>
            <dependency>
                <groupId>org.hsqldb</groupId>
                <artifactId>hsqldb</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
        <activation>
            <activeByDefault>false</activeByDefault>
        </activation>
    </profile>

非SPRING BOOT/SPRING的纯JDK环境可参?br /> https://github.com/yandex-qatools/embedded-services

https://github.com/flapdoodle-oss/de.flapdoodle.embed.mongo

https://github.com/jonyfs/spring-boot-data-embedded-mongodb/blob/master/src/main/java/br/com/jonyfs/spring/boot/data/embedded/mongodb/config/MongoConfig.java

ActiveMQ:
https://memorynotfound.com/spring-boot-embedded-activemq-configuration-example/

paulwong 2020-02-07 10:28 发表评论
]]>
Z么开发与试老掐架呢http://www.aygfsteel.com/paulwong/archive/2016/04/12/430050.htmlpaulwongpaulwongTue, 12 Apr 2016 03:01:00 GMThttp://www.aygfsteel.com/paulwong/archive/2016/04/12/430050.htmlhttp://www.aygfsteel.com/paulwong/comments/430050.htmlhttp://www.aygfsteel.com/paulwong/archive/2016/04/12/430050.html#Feedback0http://www.aygfsteel.com/paulwong/comments/commentRss/430050.htmlhttp://www.aygfsteel.com/paulwong/services/trackbacks/430050.html

让我们思考几个常见的问题Q?/p>

  • 软g试的目的是什么?

  • 开发h员能否构建出没有Bug的完YӞ

  • h人员和开发h员是什么关p?

  • 软g试能否保证软g质量Q?/p>

先闭目冥想五分钟吧,然后可以试着回答上面的问题?/p>

计算机先?Maurice Wikes 回忆?1949 q他在英国剑桥工作的情ŞQ在拖着打孔U带上楼l雏形计机 EDASC 装蝲E序Ӟ他看C(jin)自己的未来:(x)

我强烈的意识刎ͼ生命中剩下的好日子,都将耗费在给自己的程序找错误上头?/p>

Maurice Wikes告诉我们Q没有完的软g?/p>

我曾l写q一荐书文Q推荐了(jin)温伯格技术思想三部曲中的?a color:="" text-decoration:="" box-sizing:="" style="margin: 0px; padding: 0px; color: #3e62a6; outline: 0px;">颠覆完美软gQY件测试必ȝ道的几g?/strong>》。在q本书里Q温伯格也告诉我们,没有完美的Y件。所有的开发和试人员都应该读读那本书?/p>

温伯格在《颠覆完Y件》中几乎讨论所有常见的与Y件测试相关的概念、问题和指导思想Q所以,在这文章里Q我只能来吐槽啦Q我从以下几方面列一些常见的现象Q希望能引v大家的思考?/p>

  • 试和开发的关系

  • 程与标?/p>

  • 资源

  • 态度

试和开发的关系

试和开发是对立的吗Q?/p>

从处理Bug的角度看Q似乎可以这么说?strong box-sizing:="" style="margin: 0px; padding: 0px;">开发h员既生代码Q也生Bug。因为开发h员(sh)可避免地?x)生产BugQ所以测试h员必d在,以便在Y件交付(sh)前尽可能多地(g)出BugQ保证交付给客户的Y件质量更好一些。一个BugQ一个挑(xi)B(ti)ugQ看hg是对立的?/p>

在现实中Q很多测试团队和开发团队也正是因ؓ(f)q一点而搞得关pM和,甚至真的对立h。请回想一下你周围发生的与开发和试相关的事儿,看看有没有遇到过下面的情景:(x)

  • 开发说Q测试净N?ch),客户跟本不可能像他们那样使用软g

  • 试_(d)问题L?x)在看似极端的条件下产生Q用hL?x)不l意触碰到看似极端的不可能出现的条g

  • 开发说Q测试花在异常情况下的精力比试LE还多,不知道轻重缓?/p>

  • 试_(d)开发从来不考虑试的感受,q测都不就扔给我们

  • 开发说Q我都测?jin),q要试人员q什?/p>

  • 试_(d)q么明显的问题(sh)们都不测一下,把我们测试当垃圾桶啊

  • ……

许许多多cM的问题,让开发和试的关pM扑朔qL(fng)、相q杀走向对立。我见过开发和试搞冷战某人遇见某Z脸而过Q也见过试l理和开发经理打Ӟq见q高层领导故意让试团队和开发团队关pȝ张以样可以提高测试效率也能给开发压力最l会(x)产出更高质量的Y?#8230;…

实际上,试和开发拥有同一个目的:(x)让Y件更完美。测试和开发的关系Q是一个问题的两面Q应该是相辅相成和^共处的。测试不是ؓ(f)?jin)?xi)刺儿Q他提出的问题(sh)不针对生产Y件的开发h员,而仅仅是在努力想让开发h员的产出物看h更好用。只要开发不测试提Bugq个行ؓ(f)看成针对个h的行为,一切就有了(jin)好的前提?/p>

否定软gQƈ不是否定开发Y件的?/strong>。这是开发和试都需要明的一个原则和前提?/p>

q有的h认ؓ(f)开发和试之关pȝ似皮与毛Q皮之不存毛焉附?所以有的开发也?x)因此而有优越感:(x)没我们写软gQ你们测试早下岗?jin)!可是Q开发不写YӞ开发也下岗?jin)Ӟ

感谢开发的不完,让测试可以有事可做ƈl就慧眼?/p>

感谢试的认真细致和耐心(j)体脓(chung)Q让开发可以发现自q不完ƈ有机?x)提升自?#8212;—那些说我软g不好的,都是Z(jin)我好?/p>

资源

别动我们试的服务器Q你们自己搭一个!

我们没环境,不用你们的用谁的Q?/p>

谁把我们的测试手机拿C(jin)Q你们申请一个嘛Q老来占我们设备?/p>

谁在用我们的账号Q招呼都不打Q我要用Q赶紧退出来Q?/p>

有时开发和试之间也会(x)有资源上的冲H,要有努力的有创造性的解决Q我可以负责d_(d)装黑Ҏ(gu)不是好办法)(j)Q?strong box-sizing:="" style="margin: 0px; padding: 0px;">不要让大家伙的工作卡在环境上Q这是管理者要解决的基本问?/strong>。我见过很多非常的一U经理,在现实制U下Q主动把自己的手机、iPad都A(ch)献出来当做测试设备。这也是解决资源问题的一U办法哦?/p>

程与标?/h3>

你n边的人员?sh)(x)这么抱怨吗Q?/p>

  • 开发根本不看我们的试用例Q评审邮件从来就不回?/p>

  • 我们一报BugQ开发就说用h本不可能q么用,q说不知道我们怎么?x)这么?/p>

  • 送测单里Ҏ(gu)不写试范围或者寥寥几句跟没写一?/p>

  • 开发调整设计从来也不告诉我?/p>

  • Z么品经理和UI只和开发讨论需求变_(d)

  • Z么发布计划里不给试预留试旉Q?/p>

  • Z么开发写完代码测都不就扔给我们Q?/p>

  • Z么客户那里发C(jin)问题老问是谁的、ؓ(f)什么没出来?

  • 试老是一C吭就把Bug优先U设|ؓ(f)Major

  • 试L把大量时间花在用h本不可能用到的功能上

  • 试分不清哪些什么是重点Q你l他说他q老是一堆道理这?jin)那?/p>

  • 试提的BugQ现象描qC不准,重现步骤也没有,有的Ҏ(gu)q道是不是误操?/p>

  • 试老来打断我,一?x)儿叫一下一?x)儿叫一下,Ҏ(gu)没办法专注开?/p>

  • jira上的Bug重复率太高,一个问题提N遍,N׃能合q一下?

  • 试发现BugQ一声招呼都不打q接告诉老板?jin),搞得我很被?/p>

  • 试是专门?xi)刺儿的Q有劲不往正地儿Q你倒是测用户常用的功能啊

  • 那么单的Bug都能出到用户那里,真不知道试怎么的

  • 开发老嫌试报告数据不漂亮,逼着我们调整

OkQ如果你w边的开发和试从来没有q类似的问题Q那很好Q恭喜你Q看来你们的团队人nice协作也很畅Q棒哒?/p>

假如你n边充斥着q样嘈杂的抱怨,那说明什么呢Q开发、测试、发布这一套流E有问题Q还是团队缺乏明的指向来引导大家向U极、有效的行ؓ(f)靠近Q?/p>

程和标准L有待解释的,再好的规则,歪嘴和尚也能把它忉|……

我们随便?xi)一个问题吧Q?strong box-sizing:="" style="margin: 0px; padding: 0px;">Z么开发写完代码测都不就扔给我们Q这个问题普遍存在,它反映出的是E序员和试人员的工作边界难以界定的矛盾?/p>

E序员(sh)(x)_(d)我都一遍,q要你们试做什么?

试?x)说Q你都不测Q冒烟都q不?jin),有没有责d(j)Q?/p>

E序员说Q要我写试用例Q搭各种环境Q遍历各U正常、异帔R辑Q我q有没有旉写代码了(jin)Q?/p>

试?x)说Q我们测试是垃圾桶吗Q什么烂玩意儉K直接扔给我们Q我们的旉那么不值钱Q?/p>

开发会(x)_(d)试本来是q这个的Q你不测谁测Q?/p>

……

像这L(fng)问题Q能制定一个标准,说明什么样的逻辑开发要自测覆盖什么样的逻辑可以交给试来测Q能M条三八线吗?

不能。所以,q个时候,靠谱的一U管理者就昑־很重要。如何创造性的发现适合团队的方法来让大安畅地协同工作Q比标准、制度更重要Q这往往依赖于技术管理者的能力和团队成员的意识。没有普适的Ҏ(gu)Q只有适合q个l织的、此时此地的{略Q加油吧Q在战斗中摸索出最适合当下的道路?/p>

那什么是靠谱的一U管理者呢Q?/p>

温伯根{成为技术领D》一书中寚wD责的定义如下Q?/p>

领导的职责就是创造这样一个环境,每个人都能在其中发挥出更多的能力?/p>

如果一个技术领导带领的团队Q大部分人都能专?j)做与其能力适配的事情而不用整天(chng)在与本节前面所列类似的问题里,那他基本上就是比较靠谱?jin)?/p>

至于像给试预留多长的测试周期、调整设计要不要通知试、需求调整要不要试参与{问题,合理的流E和标准可以起到很大的辅助作用,技术领D只要依据合理的制度Q引导大家有效参与,可以化解?/p>

态度

场景一Q?/p>

试MM寚w猿说发现?jin)一个Bug? 阿猿矢口否认Q不可能Q绝对不可能Q? MMQ真的有BugQ你q来看一下!  阿猿Q我都不用看Q在我这儿好好儿的? MMQ你来看一下嘛……  阿猿Q看什么看Q肯定你环境问题Q动什么东西了(jin)吗?重启?jin)吗Q?/pre>

场景二:(x)

试MM惛_jira上提个BugQ先在QQ上对阿猿_(d)(x)有个BugQ你q来看下Q? 阿猿Q忙着呢,焦头烂额的? MMQ一分钟都用不了(jin)Q你来看下吧? 阿猿Q思\一打断׃好恢复了(jin)Q等?x)儿Q? MMQ你不看我提到jira上了(jin)啊? 阿猿Q随便,你不是爱提Bug嘛?/pre>

场景三:(x)

试MM呼叫阿猿Q阿猉K猿,E序又崩溃了(jin)Q快来看看!  阿猿慢腾腑֜赯nq来Q鼠标点几下Q看不出来什么问题,你怎么操作的?  MMQ这L(fng)一下,那样Q这P……回R……? 阿猿Q重C?jin)啊Q你惛_法重玎ͼ重现?jin)再叫我Q我忙着呢? MMQ?#8230;…

我曾l画q一张暴漫,?#8220;她发C(jin)一个Bug”为题发布在微信订阅号“E序视界”里,再现cM的场景,感兴的可以在订阅号内回?0019查看Q点击订阅号底部的帮助菜单里?#8220;所有文?#8221;子菜单也能找刎ͼ(j)?/p>

开发和试的日常工作中Q上面的情景不断上演Q这其中有一部分原因来自态度。我们有时还能听到类g面的话:(x)

  • 你Bug里的现象描述Ҏ(gu)没用

  • 你根本就没理解这个逻辑Q给你说不清?/p>

  • 试什么都不懂……

  • 你听我的Q我让你怎么你怎么?/p>

  • 你这U测法儿Q再好的软g都经不v你折?/p>

  • 用户Ҏ(gu)不可能这L(fng)Q你们整来整d瞎耽误工夫

  • 一轮都没测完,你们q老板说可以按期交付没问题Q?/p>

  • 你们安排计划时根本不考虑试Q三天,三天怎么可能得完!

  • ……

有时Q有一些开发h员(sh)(x)用技术优势藐视测试,认ؓ(f)试工作技术含量低Q内?j)认为测试是附属没地位,说话׃太客?#8230;…试?x)感觉到Q反q来也会(x)对开发有意见……p么,从相敬如宑ּ始走向嫌怨丛?#8230;…

有个朋友的QQ{֐档是Q?strong box-sizing:="" style="margin: 0px; padding: 0px;">没有自我Q只有大?/strong>。我琢磨Q放在Y仉目里Q也挺适用的?/p>

其实Q开发和试拥有共同的目的:(x)生高质量Y件。具体说Q每一个品、项目、版本都有明的目标Q这些目标是属于开发和试的,是大家的。我们把共同的目标牢记在?j),摆在首位Q我们还要想着别h所做的一切,都是针对软g本nQ都是在为目标而努力,q样心(j)qx(chng)和多?jin),容易从当下的惔g脱出来Q求同存异共同前q?/p>

    作者:(x)foruok 微信订阅?#8220;E序视界”(programmer_sight)

    原文Q?a target="_blank" style="margin: 0px; padding: 0px; color: #3e62a6; outline: 0px;">CSDN



    paulwong 2016-04-12 11:01 发表评论
    ]]>性能试资源http://www.aygfsteel.com/paulwong/archive/2015/01/30/422566.htmlpaulwongpaulwongThu, 29 Jan 2015 16:20:00 GMThttp://www.aygfsteel.com/paulwong/archive/2015/01/30/422566.htmlhttp://www.aygfsteel.com/paulwong/comments/422566.htmlhttp://www.aygfsteel.com/paulwong/archive/2015/01/30/422566.html#Feedback0http://www.aygfsteel.com/paulwong/comments/commentRss/422566.htmlhttp://www.aygfsteel.com/paulwong/services/trackbacks/422566.htmlhttp://www.360doc.com/relevant/369752956_more.shtml







    paulwong 2015-01-30 00:20 发表评论
    ]]>
    վ֩ģ壺 | կ| | ¤| ˮ| | Ȫ| Ž| ľ| | | ƽ½| | ̩| | | İ| Ĭ| ˮ| ʤ| | ګ| | ɽ| ں| ¡| | | Ϫ| ߮| ڶ| ӽ| ϲ| ݳ| | ƽ½| | | | | ֹ|