• [技术干货] 【昇腾CANN文档速递·13期】算子ST测试工具【msopst】
    >>>汇总贴以上内容在“昇腾开发者微信公众号”同步上线,可扫码关注    >>>汇总贴 
  • [技术干货] 物联网测试—协同自动化测试
    随着科技的发展,物联网发展的越发蓬勃。硬件联网也是靠着软件驱动,所以智能设备的性能很多时候是在考验设备的软件能力。然而物联网的测试涉及面广,需要对APP/UI测试,还需要对协议,后台,接口进行测试,同时对硬件的性能,稳定性,安全性等测试,还有各,WIFI,蓝等模组测试。针对目前物联网智能硬件测试从上到下环节众多,很难有专门的工具进行统一调度测试和管理,宏控协同测试系统为测试开发人员提供了一套通用的协同自动化测试系统,帮助测试人员自下而上的完成物联网设备从底层的模块测试到集成测试,到最后的系统测试。宏控协同测试系统支持V模型开发,提供需求导入和需求的管理,同时可以建立需求和测试用例的关联,还能提供与测试结果的追溯关系。在测试用例管理阶段:提供用例的图形化编辑,子脚本的调用,用例的导出等在测试执行阶段,对测试过程实时监督,同时可以选择执行测试用例数量和定时触发执行,支持测试的异常恢复……
  • [技术干货] 字符串在自动化测试中使用的场景
    # 1、去除空格name = "pypy py"# 方法1:name = name.split(" ")   # 先转换成列表print("".join(name))     # 在对列表进行拼接# 方法2:# print(name.replace(" ",""))  # 直接对空格进行替换# 2、格式化输出username = "xiaobai"password = "123456"age = 12user = f"""--------------用户名:{username}密码:{password}年龄:{age}--------------"""print(user)# 3、自动化访问接口的流程# 准备接口测试用例的基本数据:请求地址,请求方法,请求参数,预期结果等等url = input("请输入接口地址")name = input("请输入用户名")password = input("请输入密码")expected = input("请输入结果")print(f"访问接口的过程:{url}?username={name}&pass={password}")
  • [技术干货] 一个老测试给想入行测试行业新人的二十条建议
      1. 软件测试不是点点点,还有性能测试,自动化测试,安全测试,甚至于AI测试,大数据测试等等,软件测试的前景还是非常好的。  2. 软件测试相对门槛比较低,前期比较容易入门,哪怕不是计算机专业的小白,也能轻松掌握,不过,软件测试后期的难度和开发没有什么两样,想要拿到高薪,就得学会自动化测试,接口测试这些编码知识。  3. 经常有人抱怨,学了用不上,学完就容易忘记,因为学的都是理论知识,长时间不用自然会容易忘记,最好边学边找项目练手。  4. 如果你身边有人说测试很简单,薪资混混也很容易,那么他基本上过几年还是如此,没啥大的长进。  5. 软件测试有高薪也有低薪,月入两三千是真实存在的,月入三五万的也是。  6. 软件测试用不用报培训班?看个人需求吧,如果你觉得自己的学习能力很强,也有项目可练手,那么完全没有必要报培训班;如果你的学习能力或者自制力很差,又真的想要从事软件测试这一行业,那你最好还是报培训班,一方面是培训机构能够更加系统,全面的教你知识,老师能起到一定的监督作用,遇到不会的也有专业人士帮你解答;另外一方面,培训机构会教你很多真实地符合企业需求的项目经验,让你更快上手。  7. 软件测试是需要持续的学习,不断地分析总结,主动地去探索,如果一直不进步,很有可能被他人取代或者被淘汰。  8. 虽然软件测试也可以看书学习,但是书籍的更新相比其它要慢很多,但是那些经典的,基础的,还是很经典的,多看看没啥坏处,但是千万不能学“死”了,学完不会用,等于白学。  9. 真的不建议自学(不是不能),因为自学放弃的占多数,至于放弃的原因五花八门,比如坚持不下去一直去学习,学了新的忘了旧的,不知道如何入门,学完没有项目可做,自以为学的不错,却没找到好的工作等等,闭门造车不如博采众长。  10. 软件测试的职业规划大致有两种,一种是技术路线,另外一种是管理路线,两条路发展前景都非常不错。  11. 为什么有人做测试越做越好,有人却慢慢不如别人?在你工作的时候,别人也在工作(这个时候大家都是对等的);在你发呆或者玩乐的时候,别人却在学习(差距就是这时候产生的)。举个不好听的例子,有人30岁当上主管/大佬,有人30岁和23岁做着一样的工作,疲惫,迷茫,不知道啥时候才是出路。  12. 学习要主动,不能被动地等待别人把东西嚼碎了喂到你的嘴里,都是成年人了。  13. 永远不要只停留于想象层面,想象是美好的,如果你总是抱着“我要拿高薪”“我要学软件测试”“我不知道我行不行”“我不知道软件测试到底前景怎样(有人说好,有人说不好,一千个读者就有一千个哈姆雷特,世界上真的大多数事情都是这样的)”“我××××”,却光说不去做的话,这一切无异于空想,除了消耗时间,没有实质上的意义。英文有一个词“try to do”,试着去做,不管能不能行。当你开始做了,你想要的一切都会有了答案。  14. 软件测试并非不看年龄,不看学历的,并不是说年龄大,学历低转行就一定不会成功,你要是比别人优秀,不管什么时候都会成功,但是这样的难度太大,很多时候,你的学历就是一块“敲门砖”,没有这个,连面试都不一定会有。企业也会选择更加优秀的人。  15. 学习知识的时候的确是一个比较辛苦的过程,真的,它没有吃鸡,农药香,但是呢,当你有所收获或者有所成就感的时候,那你就会觉得一切的辛苦都是值得的(当然,你也要往一条正确的道路上去走,否则越走越远,南辕北辙的道理就不再多说)。  16. 不要觉得测试不如开发?一个好的测试工程师他的薪资,能力,经验未必就比开发差。但是你要知道,这世上没有最完美的职业,就拿大家觉得是“铁饭碗”的公务员来说,竞争真的太激烈,在大城市也未必是一个安稳又薪资高的工作。  17. 学习软件测试最重要的是实操,就是所谓的动手能力/项目经验,因为你去企业工作和在学校学习是完全不一样的,学校学习你把知识点背下来(应试教育),很多问题都能解决,但是去企业不是考察你的理论,而是要动手去完成一个个项目。  18. 不要一开始就怀疑自己,我不适合,我弄不明白,我是不是太差了等等,这些想法源于你不了解,(给自己一定的时间)当你找到窍门,所有的问题都会迎刃而解。  19. 培训班花几万块钱值吗?当然,对于绝大多数人都是值得的(有极个别报了培训班,上课和别人聊天,睡觉,玩游戏等消磨时光,不值,因为花了钱,什么都没得到),千万不能有我花了钱就买了一份工作的想法。  20. 别人有的高薪我能有吗?那么,别人付出多少,你能付出同等的吗?  所以付出和回报是成正比的,你付出多少就有多少回报,不论是没有入行还是已经入行的测试人都要去不断的学习,只有是自己变得足够强大才可以在自己的行业中一直走下去。
  • [交流吐槽] 38岁跳槽徒劳无功,年龄限制有气无力...
    “今天,是我失业一周年的纪念日,给自己买个蛋糕吃。”38岁的同行老张发了这样一条自嘲的朋友圈,配图是一个小蛋糕。正如他所言,去年从原公司辞职后,整整一年,老张没有找到新工作,一直在家待业。这期间,他做过一段时间的外卖骑手,开过三个月的小吃店,又开了三个月的快递站,最后这些事业都无疾而终。他一直想重新回到互联网(软件测试)行业,重新做回那个对着电脑摞代码的白领,可是这个行业始终没有给他机会。一年前,跟28岁的部门主管大吵一架之后,愤而裸辞,成了老张现在最后悔的事情。他常常感叹:“当时,就是太要面子了……觉得自己三十多岁大老爷们,被一个二十多岁小年轻训斥能力不行,脸上挂不住,就跟对方吵。我那时候寻思,我5年测试经验,虽然只是个普通的初级测试工程师,但想找个几千块的工作,总没问题吧。没想到,找了一年,要么人家嫌我年龄大,要么说我能力不行,面试了十多家公司,竟然一个offer都没有。”看来,还真是应了那句话:“跳槽是个技术活,中年人一把老骨头,还是别轻易跳了,小心伤筋动骨。”38岁以上的八零后中年人,想跳槽,特别想跳得比以前好,绝非易事。只有在该有的年龄有这样的实力才是可以的下面是我整理出来的一份软件测试工程师学习与发展知识架构体系图。希望大家能在这个成长过程中收益良多。可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,古人说的好“不积跬步,无以至千里。”等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。最后感谢每一个认真阅读我文章的人这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的包括了很多测试行业常见知识,其中包括了有基础知识、Linux必备、Shell、互联网程序原理、Mysql数据库、抓包工具专题、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试高级持续集成、测试架构开发测试框架、性能测试、安全测试,面试时面试官必问的知识点,精选简历等。关注公众号;程序媛木子,免费领取~~————————————————版权声明:本文为CSDN博主「测试茉莉咯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/lllddd998/article/details/119954671
  • [技术干货] 测试工程师必看——Web自动化测试Java&Pyhton;
    了解自动化的目的,熟练掌握testng&unittest自动化框架,以及断言与日志处理。
  • [技术干货] 测试工程师必看——接口测试工具
    接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman。
  • [交流吐槽] 腾讯10年测试老鸟分享:转行穷三年?那是你准备没做好吧···
    经常在知乎上看到有朋友问“××岁适不适合做软件测试?”;“原来是什么职业/专业,想要去做软件测试可以不?”可能下面的回答都是千篇一律的说可以,然后给你推荐一些培训机构,或是一些学习资料,学习的网站等等。我觉得这是对提问者的一种错误的引导,讲真,并不是所有人都可以去做软件测试的,特别是想要拿到高薪也不是那么容易的一件事情,所以,今天给想要转行软件测试的人一些忠告,希望大家能对软件测试行业多一些了解,避免浪费时间和精力。转行的忠告1.首先,在转行前,你要知道所转的那个行业有哪些门槛,比如说软件测试行业需要学历达到大专以上,年龄在20-30岁之间。那么,不是这个年龄的可不可以转行呢?年龄越大,转行越困难,如果单纯的只是兴趣爱好,想要学习一门技术,无论什么年龄都是可以的,不过,想要靠软件测试拿到高薪工资,可能会承担一定的风险,比如找不到合适的工作。这种情况下,就需要进行综合评估各项能力,慎重的选择!学历如果不符合的,可以考虑提升一下学历,现在大多数工作都要求学历,无论是想要从事软件测试还是已经在这一个行业当中的,学历至少达到大专以上,这样,职业发展道路才会更宽广,前景更好!2.有一句话叫做“转行穷三年”,很多人转行以后,收入可能并没有原先的薪资高,甚至是有很多人选择通过培训的方式来学习软件测试,并为此耗费了大量的时间和精力,可以说,转行需要承担一定的压力,不要脑袋一热或是看别人怎么怎么好就盲目的转行!关键看自己是不是对这一行业有兴趣,愿意往这一行业发展下去!3.软件测试固然薪资很高,但,也不是人人都能拿到高薪。认为软件测试薪资高,容易上手的,那么,你得考虑自己是不是有不断学习的进取精神,要知道测试不光是点点点,还有性能测试,安全测试,自动化测试,甚至是可以往测试开发的方向发展。并不是年龄大或者从事这一行业时间久就能拿到高薪,真正考量的是你对知识技能,专业能力的掌握程度等等,而想要做到这些,是需要时刻去学习新的技术,不断提升自己,给自己充电的,否则,你从事基础的功能测试三四年,薪资可能并不是特别高。就像有人能考上北大清华,有人只能上专科,你付出了多少就会有多少的回报。影响薪资的因素也有非常多:①所在的城市,比如像北上广深杭等一线城市薪资高②从事的岗位不同,工作内容不同,要求不一样,薪资自然而然不一样③学历,学历越高越好④大厂和小厂的区别,当然也不是大厂薪资就一定高于其它⑤能力,技术,经验等等,毕竟IT行业是靠技术吃饭的4.性格非常内向,存在沟通障碍的人不适合做软件测试,除非是愿意克服这一点,软件测试从业人员是需要具备一定沟通能力的,无论是向产品经理了解需求,还是向开发人员提交bug,可以说良好的沟通能力也是软件测试从业者必备的技能。(如果自己沟通表达能力不是很好的话,平日里多练习练习)5.内心过于浮躁,静不下心来的人不适合做软件测试,软件测试从业人员需要一定的耐性和细心,因为难免的需要一些重复性的工作,比如回归测试,复现bug等等6.对软件测试行业完全不了解的人。有很多人看到身边有做软件测试,拿到高薪的人,就觉得眼红,自己也想要拿高薪,但是这些人并不了解这一行业,更谈不上热爱,那么,从事自己不喜欢的工作,是一件非常痛苦的事情。相反,如果真正喜欢这一行业,发展前景(工作经验越丰富,薪资越高)和发展方向是非常不错的综上,软件测试早已过了那个人人都可以去做的时代,尤其是想要拿到高薪,更是需要具备一定的能力,比如自主学习能力,沟通表达能力……大家可以对标上面几点,看看 自己到底适不适合并且愿意往这一行业发展。————————————————版权声明:本文为CSDN博主「代码小怡」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/weixin_57805858/article/details/119840509
  • [算子开发] 【TBE算子】【UT测试】UT功能测试失败,覆盖率有83%
    【操作步骤&问题现象】算子代码:from tbe import dslfrom tbe import tvmfrom tbe.common.register import register_op_compute@register_op_compute("rsqrt")def rsqrt_compute(x, y, kernel_name="rsqrt"):    """    To do: Implement the operator by referring to the           TBE Operator Development Guide.    """    res = dsl.vrsqrt(x)    return resdef rsqrt(x, y, kernel_name="rsqrt"):    """    To do: Implement the operator by referring to the           TBE Operator Development Guide.    """    data_x = tvm.placeholder(x.get("shape"), dtype=x.get("dtype"), name="data_x")    res = rsqrt_compute(data_x, y, kernel_name)    # auto schedule    with tvm.target.cce():        schedule = dsl.auto_schedule(res)    # operator build    config = {"name": kernel_name,              "tensor_list": [data_x, res]}    dsl.build(schedule, config)if __name__ == '__main__':   input_x = {'shape':(16,16,16,16,16),'dtype':'float 16'}   onput_y = {'shape':(16,16,16,16,16),'dtype':'float 16'}   rsqrt(input_x,onput_y)UT测试代码:# # -*- coding:utf-8 -*-import sysfrom op_test_frame.ut import ElementwiseOpUTimport numpy as nput_case = ElementwiseOpUT("rsqrt")# [TODO] coding expect function heredef calc_expect_func(input_x, output_z):    sqrt = np.sqrt(input_x["value"])    res = np.reciprocal(sqrt)    return [res, ]# [TODO] coding cases hereut_case.add_precision_case("all", {    "params": [{"dtype": "float16", "format": "ND", "ori_format": "ND", "ori_shape": (16,16,16,16,16), "shape": (16,16,16,16,16),               "param_type": "input"},               {"dtype": "float16", "format": "ND", "ori_format": "ND", "ori_shape": (16,16,16,16,16), "shape": (16,16,16,16,16),                "param_type": "output"}],    "calc_expect_func": calc_expect_func})【日志信息】(可选,上传日志内容或者附件)run 1 tests, success: 0, fail: 1>>>> end run test case, op_type:rsqrt cost time: 3 [INFO] 2021-08-03 17:39:27.653412 [File "/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/toolkit/python/site-packages/op_test_frame/ut/op_ut_runner.py", line 187] end run: /home/HwHiAiUser/AscendProjects/rsqrt/testcases/ut/ops_test/rsqrt/test_rsqrt_impl.py/home/HwHiAiUser/AscendProjects/rsqrt/out/bin/report/combine_rpt_path [] ['rpt_1_test_rsqrt_impl.data']load /home/HwHiAiUser/AscendProjects/rsqrt/out/bin/report/combine_rpt_path/rpt_1_test_rsqrt_impl.data success, case cnt: 1========================================================================run command: None------------------------------------------------------------------------- test soc: [Ascend910A]- test case count: 1- success count: 0- failed count: 1- error count: 0------------------------------------------------------------------------Soc Version: Ascend910A    failed: [rsqrt]  rsqrt_static_shape_test_rsqrt_auto_case_name_1 (Ascend910A), error msg: output 0 precision compare failed, detail msg: Error count (expect - actual > atol * expect): 402938, rtol is: 0.001, total size: 1048576.       Case File "/home/HwHiAiUser/AscendProjects/rsqrt/testcases/ut/ops_test/rsqrt/test_rsqrt_impl.py", line 21------------------------------------------------------------------------========================================================================end run ops ut time: 2021-08-03 17:39:27.750288UT run failed, please see detail report.TestRun FinishedRun command is: export PATH=%%PYTHON_BIN%%:/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/atc/ccec_compiler/bin/:/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/atc/bin/:${PATH} && export PYTHONPATH=/home/HwHiAiUser/AscendProjects/rsqrt/tbe:/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/toolkit/python/site-packages:/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/atc/python/site-packages && export ADK_PATH=/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005 && export LD_LIBRARY_PATH=/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/atc/lib64:/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/toolkit/tools/simulator/Ascend910A/lib:${LD_LIBRARY_PATH} && export CAMODEL_LOG_PATH=/home/HwHiAiUser/AscendProjects/rsqrt/out/model && export ASCEND_OPP_PATH=/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/opp && export PROJECT_PATH=/home/HwHiAiUser/AscendProjects/rsqrt && export TVM_AICPU_LIBRARY_PATH=/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/atc/ccec_compiler/aicpu_lib && export TVM_AICPU_INCLUDE_PATH=/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/include/inc/tensor_engine && export TVM_AICPU_OS_SYSROOT=/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/uihost/toolchains/aarch64-linux-gcc6.3/sysroot && export SIMULATOR_PATH=/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/toolkit/tools/simulator && rm -rf /home/HwHiAiUser/AscendProjects/rsqrt/out/coverage_report/ut_impl && rm -rf /home/HwHiAiUser/AscendProjects/rsqrt/out/model && mkdir -p -m750 /home/HwHiAiUser/AscendProjects/rsqrt/out/model && rm -rf /home/HwHiAiUser/AscendProjects/rsqrt/out/bin && mkdir -p -m750 /home/HwHiAiUser/AscendProjects/rsqrt/out/bin  && cd /home/HwHiAiUser/AscendProjects/rsqrt/out/bin && /home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/toolkit/python/site-packages/bin/op_ut_run --case_files=/home/HwHiAiUser/AscendProjects/rsqrt/testcases/ut/ops_test/rsqrt/test_rsqrt_impl.py --data_path=./data --simulator_data_path=/home/HwHiAiUser/AscendProjects/rsqrt/out/model --simulator_lib_path=/home/HwHiAiUser/Ascend/ascend-toolkit/5.0.2.alpha005/toolkit/tools/simulator --simulator_mode=pv --soc_version=Ascend910A  --cov_report=html --cov_report_path=/home/HwHiAiUser/AscendProjects/rsqrt/out/coverage_report/ut_impl --case_name=rsqrt_static_shape_test_rsqrt_auto_case_name_1 && echo TestRun Finishedreport index.html: http://localhost:63342/rsqrt/out/coverage_report/ut_impl/index.html?_ijt=jjcwwvhfgazkoiyzylxzegxfad
  • [技术干货] 【技术长文】转行面试,跳槽面试,软件测试人员都必须知道的这几种面试技巧!
    在面试的过程中好多人会有这种的感觉。我在面试的时候面试官会问的特别详细,你们的公司之前是做什么的,还有相关的一些人员构成比例,开发和测试大概有多少人,你们公司有没有运维,有没有产品,以及呢一些详细的软件流程测试,版本大小的一些迭代更新,都是多长的时间,那么在这个过程当中呢。尤其是我们刚刚学习软件测试的同学,对我们这些概念没有特别的清晰区分。所以在这个过程中写一篇文章,分享给那些面试需要帮助的人,如何去了解到这样一些详细的信息,从而提升面试的成功率。分为以下3种问题分享给大家;码字不易,看完在走第一个问题:一.件公司的分类我提到这个我问题的时候,就有好多同学问我,你确定吗?软件公司只有一种。我想说那真的是这样子吗?那么就让我跟你说一下,软件公司有多少呢!我给大家举一个例子,网络产品比方说下载的APP,或者呢使用的web端的网站,这些东西想必在生活中一点也不避回,你们想购物呢,进淘宝,进唯品会,进网上的商城。如果社交呢,qq,微信进行聊天。 网络产品这别下载的APP 就更多了,你们要看段子下载一个抖音,快手等。 那这些呢都是互联网上提供商品的科技有限公司。他们就属于互联网类型的企业公司。那么在这样的一个过程当中,他们是属于第一类的软件公司。还有一种是什么呢,我们公司自营一个产品,工作的人肯定知道,比如说,迟到,请假,忘记打卡补交等这些呢公司都是有一套自己的运营系统。不过有些公司呢选择一些,钉钉 ,百度打卡,微信打卡等这样的一些操作来去进行人员的行政管理。他们是属于一部分软件公司开发出来的产品,然后将这套产品推广出去 然后在推广的过程中同时会根据客户的具体要求。做一些实际性的,强制性的,二次性开发 这种属于专业的软件开发公司。还有一种,比较清晰型的是软件外包公司,特点没有专业的自己产品,也没有自己的推广团队,只需要接一些像前两类公司。互联网企业类型的公司 或者是软件公司非核心的重复性的这种。技术含量比较低的。以低成本进行开发,开发完成之后支付我劳动报酬。这就是软件的外包公司。这么一描述,就不回有这样一个问题了,软件公司只有一种呀!公司的分类测试工程师一般服务于三种类型的公司,包括互联网企业,软件开发公司和软件外包公司,下面就分别介绍这三种公司以及各自的组织构成和职能范围1.互联网公司互联网企业是指在互联网上注册域名,建立网站,利用互联网进行各种商务活动的企业,也即为广义互联网企业中的—终端层互联网企业。目前国内的百度,腾讯这些网络巨头公司都属于典型的互联网企业2.软件开发公司软件开发公司是根据客户的所有需求,对软件进行独立自主开发或二次开发,并以软件开发为主营业务的公司。自营公司中可测试的项目较多,可以锻炼测试人员的快速学习能力,并且可以给初级测试人员提供较多的项目经验。3.软件外包公司软件外包公司是专门承包其他软件公司软件项目中的非核心项目,利用自身优势条件进行软件项目开发的公司。软件外包公司具备一定的软件自主开发或二次开发的能力,但外包的业务,一般都是。二. 软件公司的项目和人员构成1.互联网企业互联网企业的技术开发部主要包括产品部,开发部,测试部,运维部等,而在这之中,有着不同的职位角色,主要责任包括:架构师:通常需要多年的经验,能够设计系统架构,并保证架构的稳定性,可扩展性,性能等多项指标的可用性与优越性。产品部:互联网公司的产品部通常来说提供产品需求,部分产品人员对接公司的实施工程师,及时反馈客户要求,提供完善产品的需求。前端工程师:与设计师和产品联系非常紧密,确保前端的可用性与易用性。开发工程师:实现功能开发,让功能可用,易用。测试工程师:不管一家公司的规模多大,测试的工作都必须有人来干,在规模中等及以上的公司里,会有专门的测试工程师,他们就是专门从事开发完成后的测试工作运维工程师:确保后台不出问题,确保服务器,网络出现了问题能够及时的修复。2.软件开发公司软件开发公司与互联网企业类似,除去上述的几个基本部门外,软件开发公司一般会有业务部,专门来进行市场开发,从而接到更多的项目进行研发。3.软件外包公司软件外包公司分为两种,一种是兼具软件开发和软件人才外包的公司,这种的公司的部门组成和软件开发公司相同,但是公司的人事部会与合作的公司进行对接,进行相关的人才资源共享;而另外一种是专门进行人力外包的公司,这类公司通常内部不设技术部门,只需要挑选合适合作公司的人才进行情况了解和基本面试即可。三.司的软件测试流程(1)公司的运作流程1.采集用户需求(产品经理+软件实施工程师)2.编写基础版需求文档(产品经理/产品经理助理)3.需求文档评审(产品经理+开发经理+测试经理+(客户))4.沟通需求方,完成需求文档的修改(产品经理+客户)5.下发需求文档至开发经理和测试经理6.开发经理出具开发版需求文档,测试经理出具测试版需求文档(2)开发部门的运作流程1.需求文档部门内部评审2.下发开发任务(开发经理)3.开发人员进行编码工作4.开发人员本地环境下代码自测5.自测完成合并代码至公司源码库6.源代码打包部署至开发和测试环境7.知会测试人员进行测试(showcase)8.根据测试反馈进行bug解决9.配合运维人员打包上线(3)测试部门的运作流程1.需求文档部门内部评审2.下发测试任务(测试经理)3.测试人员根据需求模块分配进行测试用例的输出4.测试用例评审5.测试人员完成测试用例的修改,等待开发通知测试工作的开始6.执行测试用例,提交bug7.跟踪bug进行bug的回归8.打包上线后进行回归测试————————————————版权声明:本文为CSDN博主「测试baby」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/m0_56736369/article/details/117909132
  • [最佳实践] Jmeter压测工具使用之HetuEngine压力测试
    # Jmeter压测工具使用之HetuEngine测试 ## 测试场景 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/19/111550bpl2ttkqycxerh73.png) 如图:使用jmeter同时向MRS集群内的两套HetuEngine计算集群进行10并发的压力测试,并将最后的测试结果统一 ## Jmeter配置 - 测试计划配置 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/19/111230bd2vubianq1zeehf.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/19/111654vzvi0axjakofpplg.png) - 线程组1的配置: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/19/111721f7hsy3wf4jkkqyyf.png) Hetu JDBC connection Configuration配置: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/19/111735xbbxhgscwtt94cpw.png) JDBC Request配置: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/19/111753cup8yjrnsnbje3as.png) Precise Throughout Timer配置: 说明:使用Precise Throughout Timer做精准的压力测试 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/19/111809i2pftgmwnjqzzq5i.png) - 线程组2的配置 说明:主要是Hetu JDBC Connection Configuration和JDBC Request的变量配置,其余配置一致 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/19/111824a4gwqyem0o5e6gfx.png) ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/19/111837d5jkrentuy9qjexr.png) ## 启动Jmeter并查看结果 启动jmeter可以查看总结果 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/19/111857hx8q0iy1ft9tikle.png) 分别登陆HetuEngine计算集群1以及HetuEngine计算集群2查看结果 HetuEngine计算集群1: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/19/111909ghbcfifeq7rg0gsf.png) HetuEngine计算集群2: ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/19/111921io5n0bl6qkpri4bt.png) 备注:如果不能使用windows客户端来操作的话,可以在windows配置好测试计划,然后复制到linux端使用命令行的方式启动执行测试以及统计结果 启动任务命令: `sh /home/omm/jmeter/apache-jmeter-5.4.1/bin/jmeter -n -t /home/omm/jmeter/test_100.jmx -l /home/omm/jmeter/overall/out_100_02.jtl` 统计结果命令: `sh /home/omm/jmeter/apache-jmeter-5.4.1/bin/jmeter -g /home/omm/jmeter/overall/ out_100_02.jtl -o /home/omm/jmeter/report_100_02`
  • [技术干货] RPA 实战:让小姐姐填满你的硬盘(上)
    # RPA 实战:让小姐姐填满你的硬盘(上) > 某天,我无意逛到某个小网站,如果我不懂代码,想要网站上全部的妹子,我该怎么做?……幸好有她,她好我也好,她就是 RPA -- Robotic Process Automation,中文意思是机器人流程自动化,换句话说就是利用机器人技术来实现业务流程的自动化处理。 ## 环境安装 首先打开另一个小网站 -- [https://www.hwtelcloud.com/products/rpa](https://www.hwtelcloud.com/products/rpa),下载【设计器】,并进行使用激活;下载【执行器】,让程序自己动;此外还需下载浏览器驱动和安装浏览器插件。关于软件的下载安装等此处就不进行讲解,相信您能搞定! ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230307avmzpcwjk7kltabc.png) 本大狮发表文章时所用到的软件版本及环境如下: - WeAutomate Studio(2.14.0) - WeAutomate Assistant(2.14.0) - VM: python 3.8.5 64-bit - Windows Feature Experience Pack 421.16300.0.3 - Google Chrome 91.0.4472.124 64-bit ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/2303321rqtxldzkktbg9pc.png) 将近1000页的帮助文档在 WeAutomate Studio 安装目录下:`document/RPA_Robot_Development_Guide_zh_cn.pdf` ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230400qubwpdzvozarso4a.png) 此外还有更多优质的课程尽在华为云学院: [https://ilearningx.huawei.com/portal/courses?q=ANTROBOT](https://ilearningx.huawei.com/portal/courses?q=ANTROBOT) ## “技术”解析 说到图片,我最先想到的是某度图片,之前通过使用 NodeJS 爬虫爬取过该网站搜索出来的图片,大概的流程如下: 1. 输入关键字,`//*[@id="kw"]`这里的 Input 标签就是我们关键字输入的位置。 ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/225617tfzunwlwpupu9twg.png) 2. 获取图片列表,当我们输入关键字并搜索的结果就呈现为页面的`//*[@id="imgid"]/div/ul/li[1]/div/a/img`,也就是 classname 为 `main_img` 的图片元素 ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/225658znztafhadpbsfew5.png) 3. 滚动窗口,当我们模拟鼠标滚动时,页面会加载更多的图片。 ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/225737ksx2pf04ogjykeil.png) 4. 图片下载,我们获取到每个图片元素的 `src` 属性,就是我们最终的图片下载地址。 ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230443dsl5l6mw7ybzdyes.png) 那么整个流程下来,在 RPA 中我们需要用到哪些控件呢?首先我们要从网页获取图片,`打开网页`控件是第一个用到的;其次我们要获取网页的高度并进行滚动、获取页面图片元素及`src`属性,我们可以通过`执行 js 代码`控件来帮我们完成;此外,涉及的一些流程控制我们必须依赖分支、循环等控件;最后下载图片则通过`下载文件`控件实现。 ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230508sa6pnbxejfpuoi4r.png) ## 实施过程 RPA 的实施一般遵循下面的生命周期: ![RPA 开发流程图](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230532mcbsjoy32qj10ddn.png) ### RPA 评估 首先 RPA 评估,针对此次我的这个“大胆”的想法,我的整个业务流程完成能够用自动化来实现,当然投资回报率(ROI)对我来说,完全只需投入少量的时间就能获取到海量的数据,理论上是非常划算的。本次实践不对 RPA 工具本身做任何评价,本着新手小白的学习态度,一款好用的强大的称手的 RPA 工具请按照自身的场景去选取,如同技术选型,对开发工具做一定的调研、体验才能更好的选择合适的工具。 ### RPA 设计 接着 RPA 设计,我们先梳理一下完整的业务流程,细粒度精确到每一个点,比如网页数据怎么获取、图片怎么下载等等,势必会涉及到一些逻辑,比如分支逻辑、循环逻辑;除此之外,我们需要明确每个操作的输入和输出;在实际工作中,我们可能还需形成具体的文档。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230613zthdma9iwv9vijbq.png) ### RPA 开发 简单梳理完流程之后,开始开发我的第一个 RPA 程序。尽管整个流程梳理起来非常简单,但实际开发的时候,由于对工具、编程语言基础等不熟练,我踩了一个又一个的坑,最终走出了结合 JS 代码以及 NodeJS 爬虫的思路来开发这个图片爬取的 RPA 程序。 - 1. 全局变量定义 由于本大狮功力不够,暂时没能实现打开网页之后动态获取跳转的链接,因此我直接使用的输入关键字搜索之后的 url 作为全局变量 url 的值,拼接 keyword 来实现结果页面图片的获取。 | 名称 | 类型 | 值 | 描述 | | --- | --- | --- | --- | | url | String | (根据实际情况填写) | baseurl,用于拼接 keyword 访问结果页 | | keyword | String | (根据实际情况填写) | 关键字,比如"性感美女"、“靓仔” | | height | String | 0 | 初始的窗口高度,用于缓存过程数据 | | num | Number | (根据实际情况填写) | 图片数量,暂未做精确处理,作为退出循环的条件 | ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230635mjmcggub9fqkvjve.png) - 2. 打开网页 写得比较随意,中文在浏览器地址中可以做 url 编码处理,这里可以引入 python 模块哦! ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/2307013w0nptoofioadphr.png) - 3. 获取浏览器窗口高度 建议此操作前先调用控件让浏览器窗口最大化,然后通过 JS 代码获取浏览器窗口高度并赋值给 `height`,方便后面的滚动操作。`执行 JS 代码`控件是有返回值的,在代码中通过 `return` 可以返回指定内容。 ```js return document.body.offsetHeight; ``` ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230718vagofpmnudddaxp7.png) - 4. 循环操作 此处模拟了 JS 的定时器方法,使用`While`来进行滚动操作的循环。假如我想获取 10k 张图片,第一次加载的结果可能才几十张,如果是人工操作的话,我需要不断滚动浏览器以加载获得更多的数据。那机器人是怎么自动化操作呢?我们给它设置一个延时操作,然后调用 JS 代码滚动浏览器,同时更新`height`: ```js let height=@{height}*2; window.scrollTo(0,height); return height; ``` ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/2307449kyf5bqv1cs1uulw.png) - 5. 获取图片链接 同样的通过调用`执行 JS 代码`控件来获取图片的链接和数量,为图片下载和退出循环做准备。 ```js let arrs = document.querySelectorAll('.main_img'); let urls = [] for (let img of arrs){urls .push(img.src)} return urls; ``` ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230758wvklhkjm65sk1vts.png) - 6. 退出循环 比较预期的图片数量和实际的图片数量,如果图片够了,我们就退出循环,进行下一步操作。 ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230810sw4atuuuzdsdapns.png) - 7. 创建文件夹 这里的步骤非必须,根据实际情况取舍,我这里是简单的尝试并熟悉 RPA 工具;不过逻辑还不够严谨,可以优化的点实在是太多。 ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/2308222nlyviwmew51xp8z.png) - 8. 遍历图片链接并下载 “没有什么问题是一个 for 循环不能解决的,如果有,那就两个”,此处能够直接进行循环是因为之前 JS 代码返回的值已经是 list 了,因此将 url 遍历出来调用下载文件控件就能直接下载。 ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230835sfi90tidqypnltse.png) 至此,一个简单的图片爬取 RPA 程序已经开发完毕。 ### RPA 测试 如果是大型的项目,必然会经过单元测试、集成测试等全面的测试历练之后才会发布。而对于此次的 **RPA 图片爬取**小程序,我只做了简单的调试,理论上调试依旧属于开发阶段,严格来说需要模拟各种场景、各种系统和上下文进行正确性测试等,测试完成后才可以上线。 作为伪测试,我输入**华为美女** 100 张,结果程序给了我 130 张,XDM 你们说测试通过吗? ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/2308501xrtveijovtity06.png) ### RPA 优化 毕竟是 Hello World 级别的程序,出自 HW 攻城狮之手,因此有很多地方需要完善,比如逻辑的严谨性、没有考虑边界、下载的文件名杂乱等。毕竟真实的项目如果是这么个水平,估计…… RPA 的优化可以从最优设计、从性能、从实际业务需求等方面去实施。当然,屏幕前的您一定有自己的优化思路,期待您与我分享! ## 小结 回到标题,咦,为什么是上篇,难道还有下篇?敬请期待吧!那么上篇讲了哪些知识点呢?首先是 RPA 环境搭建及入门,然后是 RPA 程序开发的套路,接着是网页元素处理、文件下载、如何调用 python 模块、如何调用 JS 等,最后是简单测试及优化建议。感谢阅读,希望能帮到您! 最后,附送几个G的学习资料: [https://ilearningx.huawei.com/portal/courses?q=ANTROBOT](https://ilearningx.huawei.com/portal/courses?q=ANTROBOT) **如果您对本文有任何意见,欢迎与我联系,公众号: [胡琦](https://gitee.com/hu-qi/cdn/blob/master/me/wechat-huqi.jpg), Wechat: [Hugi66](https://gitee.com/hu-qi/cdn/blob/master/me/Hugi66.png)**
  • [技术干货] RPA 实战:让小姐姐填满你的硬盘(上)
    # RPA 实战:让小姐姐填满你的硬盘(上) > 某天,我无意逛到某个小网站,如果我不懂代码,想要网站上全部的妹子,我该怎么做?……幸好有她,她好我也好,她就是 RPA -- Robotic Process Automation,中文意思是机器人流程自动化,换句话说就是利用机器人技术来实现业务流程的自动化处理。 ## 环境安装 首先打开另一个小网站 -- [https://www.hwtelcloud.com/products/rpa](https://www.hwtelcloud.com/products/rpa),下载【设计器】,并进行使用激活;下载【执行器】,让程序自己动;此外还需下载浏览器驱动和安装浏览器插件。关于软件的下载安装等此处就不进行讲解,相信您能搞定! ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230307avmzpcwjk7kltabc.png) 本大狮发表文章时所用到的软件版本及环境如下: - WeAutomate Studio(2.14.0) - WeAutomate Assistant(2.14.0) - VM: python 3.8.5 64-bit - Windows Feature Experience Pack 421.16300.0.3 - Google Chrome 91.0.4472.124 64-bit ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/2303321rqtxldzkktbg9pc.png) 将近1000页的帮助文档在 WeAutomate Studio 安装目录下:`document/RPA_Robot_Development_Guide_zh_cn.pdf` ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230400qubwpdzvozarso4a.png) 此外还有更多优质的课程尽在华为云学院: [https://ilearningx.huawei.com/portal/courses?q=ANTROBOT](https://ilearningx.huawei.com/portal/courses?q=ANTROBOT) ## “技术”解析 说到图片,我最先想到的是某度图片,之前通过使用 NodeJS 爬虫爬取过该网站搜索出来的图片,大概的流程如下: 1. 输入关键字,`//*[@id="kw"]`这里的 Input 标签就是我们关键字输入的位置。 ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/225617tfzunwlwpupu9twg.png) 2. 获取图片列表,当我们输入关键字并搜索的结果就呈现为页面的`//*[@id="imgid"]/div/ul/li[1]/div/a/img`,也就是 classname 为 `main_img` 的图片元素 ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/225658znztafhadpbsfew5.png) 3. 滚动窗口,当我们模拟鼠标滚动时,页面会加载更多的图片。 ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/225737ksx2pf04ogjykeil.png) 4. 图片下载,我们获取到每个图片元素的 `src` 属性,就是我们最终的图片下载地址。 ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230443dsl5l6mw7ybzdyes.png) 那么整个流程下来,在 RPA 中我们需要用到哪些控件呢?首先我们要从网页获取图片,`打开网页`控件是第一个用到的;其次我们要获取网页的高度并进行滚动、获取页面图片元素及`src`属性,我们可以通过`执行 js 代码`控件来帮我们完成;此外,涉及的一些流程控制我们必须依赖分支、循环等控件;最后下载图片则通过`下载文件`控件实现。 ![RPA 实战图片爬取](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230508sa6pnbxejfpuoi4r.png) ## 实施过程 RPA 的实施一般遵循下面的生命周期: ![RPA 开发流程图](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230532mcbsjoy32qj10ddn.png) ### RPA 评估 首先 RPA 评估,针对此次我的这个“大胆”的想法,我的整个业务流程完成能够用自动化来实现,当然投资回报率(ROI)对我来说,完全只需投入少量的时间就能获取到海量的数据,理论上是非常划算的。本次实践不对 RPA 工具本身做任何评价,本着新手小白的学习态度,一款好用的强大的称手的 RPA 工具请按照自身的场景去选取,如同技术选型,对开发工具做一定的调研、体验才能更好的选择合适的工具。 ### RPA 设计 接着 RPA 设计,我们先梳理一下完整的业务流程,细粒度精确到每一个点,比如网页数据怎么获取、图片怎么下载等等,势必会涉及到一些逻辑,比如分支逻辑、循环逻辑;除此之外,我们需要明确每个操作的输入和输出;在实际工作中,我们可能还需形成具体的文档。 ![image.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230613zthdma9iwv9vijbq.png) ### RPA 开发 简单梳理完流程之后,开始开发我的第一个 RPA 程序。尽管整个流程梳理起来非常简单,但实际开发的时候,由于对工具、编程语言基础等不熟练,我踩了一个又一个的坑,最终走出了结合 JS 代码以及 NodeJS 爬虫的思路来开发这个图片爬取的 RPA 程序。 - 1. 全局变量定义 由于本大狮功力不够,暂时没能实现打开网页之后动态获取跳转的链接,因此我直接使用的输入关键字搜索之后的 url 作为全局变量 url 的值,拼接 keyword 来实现结果页面图片的获取。 | 名称 | 类型 | 值 | 描述 | | --- | --- | --- | --- | | url | String | (根据实际情况填写) | baseurl,用于拼接 keyword 访问结果页 | | keyword | String | (根据实际情况填写) | 关键字,比如"性感美女"、“靓仔” | | height | String | 0 | 初始的窗口高度,用于缓存过程数据 | | num | Number | (根据实际情况填写) | 图片数量,暂未做精确处理,作为退出循环的条件 | ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230635mjmcggub9fqkvjve.png) - 2. 打开网页 写得比较随意,中文在浏览器地址中可以做 url 编码处理,这里可以引入 python 模块哦! ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/2307013w0nptoofioadphr.png) - 3. 获取浏览器窗口高度 建议此操作前先调用控件让浏览器窗口最大化,然后通过 JS 代码获取浏览器窗口高度并赋值给 `height`,方便后面的滚动操作。`执行 JS 代码`控件是有返回值的,在代码中通过 `return` 可以返回指定内容。 ```js return document.body.offsetHeight; ``` ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230718vagofpmnudddaxp7.png) - 4. 循环操作 此处模拟了 JS 的定时器方法,使用`While`来进行滚动操作的循环。假如我想获取 10k 张图片,第一次加载的结果可能才几十张,如果是人工操作的话,我需要不断滚动浏览器以加载获得更多的数据。那机器人是怎么自动化操作呢?我们给它设置一个延时操作,然后调用 JS 代码滚动浏览器,同时更新`height`: ```js let height=@{height}*2; window.scrollTo(0,height); return height; ``` ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/2307449kyf5bqv1cs1uulw.png) - 5. 获取图片链接 同样的通过调用`执行 JS 代码`控件来获取图片的链接和数量,为图片下载和退出循环做准备。 ```js let arrs = document.querySelectorAll('.main_img'); let urls = [] for (let img of arrs){urls .push(img.src)} return urls; ``` ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230758wvklhkjm65sk1vts.png) - 6. 退出循环 比较预期的图片数量和实际的图片数量,如果图片够了,我们就退出循环,进行下一步操作。 ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230810sw4atuuuzdsdapns.png) - 7. 创建文件夹 这里的步骤非必须,根据实际情况取舍,我这里是简单的尝试并熟悉 RPA 工具;不过逻辑还不够严谨,可以优化的点实在是太多。 ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/2308222nlyviwmew51xp8z.png) - 8. 遍历图片链接并下载 “没有什么问题是一个 for 循环不能解决的,如果有,那就两个”,此处能够直接进行循环是因为之前 JS 代码返回的值已经是 list 了,因此将 url 遍历出来调用下载文件控件就能直接下载。 ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/230835sfi90tidqypnltse.png) 至此,一个简单的图片爬取 RPA 程序已经开发完毕。 ### RPA 测试 如果是大型的项目,必然会经过单元测试、集成测试等全面的测试历练之后才会发布。而对于此次的 **RPA 图片爬取**小程序,我只做了简单的调试,理论上调试依旧属于开发阶段,严格来说需要模拟各种场景、各种系统和上下文进行正确性测试等,测试完成后才可以上线。 作为伪测试,我输入**华为美女** 100 张,结果程序给了我 130 张,XDM 你们说测试通过吗? ![RPA 实战图片爬取.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202107/15/2308501xrtveijovtity06.png) ### RPA 优化 毕竟是 Hello World 级别的程序,出自 HW 攻城狮之手,因此有很多地方需要完善,比如逻辑的严谨性、没有考虑边界、下载的文件名杂乱等。毕竟真实的项目如果是这么个水平,估计…… RPA 的优化可以从最优设计、从性能、从实际业务需求等方面去实施。当然,屏幕前的您一定有自己的优化思路,期待您与我分享! ## 小结 回到标题,咦,为什么是上篇,难道还有下篇?敬请期待吧!那么上篇讲了哪些知识点呢?首先是 RPA 环境搭建及入门,然后是 RPA 程序开发的套路,接着是网页元素处理、文件下载、如何调用 python 模块、如何调用 JS 等,最后是简单测试及优化建议。感谢阅读,希望能帮到您! 最后,附送几个G的学习资料: [https://ilearningx.huawei.com/portal/courses?q=ANTROBOT](https://ilearningx.huawei.com/portal/courses?q=ANTROBOT) **如果您对本文有任何意见,欢迎与我联系,公众号:[胡琦](https://gitee.com/hu-qi/cdn/blob/master/me/wechat-huqi.jpg), Wechat: [Hugi66](#)**
  • [DevKit] 【Hyper Tuner调优实践 16】基于系统性能分析工具的网卡调优实践
    1       测试环境准备准备压测环境server端与client端Hi1822网口互连1.1          server端系统:CentOS Linux release 7.9.2009 (AltArch)网卡配置:enp6s0网口的ip地址设置为192.168.1.10启动Nginx服务,监听端口: listen 192.168.1.10:8066 1.2          client端系统:CentOS Linux release 7.6.1810 (AltArch)网卡配置:enp3s0网口的ip地址设置为192.168.1.101 使用性能测试工具wrk进行压测:./wrk -t64 -c1000 -d300s --latency http://192.168.1.10:80662       测试过程2.1          优化前server端安装鲲鹏性能分析工具登录 https://90.90.154.225:8086/user-management/#/login下发全景分析任务同时client端使用wrk工具进行压测:./wrk -t64 -c1000 -d300s --latency http://192.168.1.10:8066同时使用top工具观察:ksoftirqd进程是网卡软中断进程,操作系统上如果有多条这种进程出现并且长时间占用CPU时间(有多个100%或者高于70%的现象),就可以判断是操作系统已经出现网卡软中断异常。查看tuning-kit中断请求配置,发现了不合理配置:压测工具输出结果:Socket errors socket 错误的数量Requests/sec 每秒请求数量,也就是并发能力Latency 延迟情况及其分布 Requests/sec :76486.132.2 RSS网卡队列中断绑核优化(1)先关闭irqbalancesystemctl status irqbalance      //查看irqbalance//systemctl disable irqbalance       //关闭irqbalance//(2)中断绑核查询网卡enp6s0所属numa0: cat /sys/class/net/enp6s0/device/numa_nodelscpu查看cpu架构信息,NUMA 节点0 CPU:0-31查询中断号:cat /proc/interrupts | grep enp6s0 | awk -F ':' '{print $1}'根据中断号进行绑核亲和性设置策略的基本原则是:本地CPU优先设置,尽量避免跨NUMA访问。网卡队列中断绑0-23for i in `seq 616 631`; do cat /proc/irq/$i/smp_affinity; done然后下发全景分析任务,同时client端执行./wrk -t64 -c1000 -d300s --latency http://192.168.1.10:8066,进行压测过程中,使用top查看CPU占用率:wrk压测工具输出结果:Socket errors socket 错误的数量Requests/sec 每秒请求数量,也就是并发能力Latency 延迟情况及其分布 Requests/sec :96477.612.3 调整 RX queue 的大小ethtool -G enp6s0 rx 1024ethtool -G enp6s0 tx 1024下发全景分析任务,同时client端执行./wrk -t64 -c1000 -d300s --latency http://192.168.1.10:8066,进行压测过程中,使用top查看CPU占用率:wrk压测工具输出结果: Requests/sec :147806.382.4 RPS/XPS配置优化配置RPS或XPS的原则是:确保软中断处理CPU和硬中断处理CPU分离,并保证两者的处理CPU都属于相同的内存域中。原始RPS/XPS配置如下图:下发全景分析任务,同时client端执行./wrk -t64 -c1000 -d300s --latency http://192.168.1.10:8066,进行压测过程中,使用top查看CPU占用率:wrk压测工具输出结果:Requests/sec :148076.513    网卡调优数据总结
  • [问题求助] 接口测试任务现在咋做啊
    更了个新一直完成不了,求大佬
总条数:210 到第
上滑加载中