电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

資深程序員:給Python軟件開發測試的25個忠告!

瀏覽:30日期:2022-07-28 16:13:34

資深程序員:給Python軟件開發測試的25個忠告!

當我加入Ansible團隊之后,我決定寫下多年來所學到的軟件工程實踐和原理方面的經驗。我的激情是測試,因為我相信良好的測試既可以確保最低質量標準(可惜很多軟件產品都缺乏這一點),也可以指導和塑造開發過程本身。以下許多建議與測試有關,其中一些原則甚至特定于Python,但絕大多數不是。(對于Python程序員,PEP 8應該是編程風格和指南的第一站。)

1、不要編寫你認為以后可能需要但目前不需要的代碼。這是對未來想象的用例的編碼,并且這種代碼一定會成為死碼或需要重寫,因為未來的用例總是與程序員的想象略有不同。

注釋代碼也是如此,如果一段注釋的代碼正在進行發布,它不應該存在。YAGNI是編程的核心要素,最佳參考資料是極限編程解析(Extreme Programming Explained)。

2、不進行多余的測試。基礎設施,框架和庫是需要測試的,不要測試瀏覽器或外部庫,除非你真的需要。測試你自己編寫的代碼,而不是其他人寫的代碼。

3、多次重復出現的代碼不需要測試。輔助功能不需要測試,當你把它們分開并重新使用時,需要測試。如果反復編寫類似代碼多次時,您通常會很清楚正在解決的問題。

4、關于API設計(外部面向對象API):簡單的事情盡量簡單完成,復雜的事情盡力優化。首先為簡單案例設計,如果可能的話,優選為零配置或參數化。Addoptions或附加的API方法,用于更復雜和更靈活的用例(根據需要)。

5、盡早檢查無意義的輸入或無效狀態,最好是異常或錯誤響應,這將使程序員很清楚問題的確切信息。(除非真的需要,否則不要進行輸入驗證類型的檢查)。

6、在可能的情況下,將測試對象視為黑盒子,通過公共API進行測試,這就不需要調用私有方法或修改狀態。

對于一些復雜的場景,編寫測試真的是有幫助的,因為這迫使程序員考慮代碼的行為以及在編寫代碼之后如何進行測試。測試首先鼓勵更小、更模塊化的代碼單元,這通常意味著更好的代碼。

7、對于單元測試(包括基礎架構測試),應測試所有代碼路徑。 100%的覆蓋是一個良好的開端。除非你無法覆蓋所有可能的排列/組合的狀態,只有一個非常好的理由才能使代碼路徑不全部經過測試,以時間為借口早晚會浪費更多時間。

8、代碼是敵人:可能出錯,需要維護。盡量有更少的代碼實現必需的功能,刪除不必要的代碼。

9、努力通過良好的命名規范和已知的編程風格使代碼可讀和形成自我記錄。通常隨著時間的推移,很多程序員都不認識自己寫的代碼了。

10、代碼注釋——對一些無法明確的代碼,請盡早提供注釋,說明為什么要這么寫,有無其他方法等。

11、編碼過程中務必想想可能出現的問題,無效輸入會發生什么,哪些情況會導致失敗,這將有助于程序員在發生錯誤之前捕獲更多錯誤。

12、簡單的邏輯易進行單元測試,將邏輯分解為單獨的函數,而不是將邏輯混合為有狀態和有副作用填充代碼。(測試的開銷越少意味著測試更快)。

13、使用對象可能比使用復雜的數據結構更好。使用Python的內置類型及其方法將比編寫自己的類型更快(除非您在C中編寫)。如果考慮性能,請嘗試了解如何使用標準內置類型而不是自定義對象。

14、依賴注入是一個有用的編碼模式,用于程序員搞清楚依賴關系以及它們來自哪里(有對象,方法等作為參數接收它們的依賴關系,而不是實例化新對象本身)。關于依賴注入的文章可參考Martin Fowler的“Inversion of Control Containers and the Dependency Injection Pattern”。

15、代碼越多,代碼越差。程序員的目標應該是小型的可測試單元,以及更高級的集成和功能測試,以測試單元是否正確合作。

16、設計API時應該考慮到以后可能會遇到的更改,并考慮到未來的用例——真的很重要。改變API對程序員和用戶而言都是一種痛苦,并且創建向后的不兼容性是可怕的(盡管有時不可避免)。

17、如果函數或方法超過30行代碼,請考慮將其分解。最大模塊尺寸為500行,測試文件往往比這更長。

18、不要在對象構造函數中工作,這很難測試。不要將代碼放在__init__.py中(除了用于命名空間的導入)。 __init__.py不是程序員通常期望找到代碼的地方。

19、在測試中,單個測試文件的可讀性比可維護性更重要(打破可重用的塊)。這是因為測試被單獨執行和讀取,而不是自己成為較大系統的一部分,顯然過多的重復意味著可以為了方便而創建可重復使用的組件,這不僅僅是生產問題。

20、盡可能使用重構。編程是抽象的,越接近問題域,代碼越容易理解和維護。隨著系統的發展,用例的結構需要改變和擴展。一本關于重構和測試的書是Michael Feathers的Working Effectively with Legacy Code。

21、在處理性能問題時,請務必在修復之前進行配置。如果你已經剖析并證明代碼實際上是值得的,編寫一個測試隨時對代碼進行分析,并且保留在測試套件中以防止性能回歸。(添加時間碼總是會改變代碼的性能特征,使性能成為更令人沮喪的任務之一)。

22、更小,更嚴格的單位測試在失敗時提供更有價值的信息。通常,運行超過0.1秒的測試不是單元測試。單元測試可以提供更具體的錯誤信息,關于單元測試實踐一本不錯的書是Gary Bernhardt的Fast Test, Slow Test。

23、遵循YAGNI原則:編寫我們需要的特定代碼,而不是不需要的、復雜性的通用代碼。

24、共享代碼所有權是目標。不分享或許就發現不了更好的編寫方式,比如分享出來,大家集思廣益。

25、最后,可以告訴產品經理或開發商,一味地增加功能并不是好事,確保核心功能的高效率工作就可以了。

來自:http://www.techug.com/post/25-advice-for-python-tester.html

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 中开泵,中开泵厂家,双吸中开泵-山东博二泵业有限公司 | 钛合金标准件-钛合金螺丝-钛管件-钛合金棒-钛合金板-钛合金锻件-宝鸡远航钛业有限公司 | 振动台-振动试验台-振动冲击台-广东剑乔试验设备有限公司 | 恒温振荡混匀器-微孔板振荡器厂家-多管涡旋混匀器厂家-合肥艾本森(www.17world.net) | 上海单片机培训|重庆曙海培训分支机构—CortexM3+uC/OS培训班,北京linux培训,Windows驱动开发培训|上海IC版图设计,西安linux培训,北京汽车电子EMC培训,ARM培训,MTK培训,Android培训 | 蔬菜清洗机_环速洗菜机_异物去除清洗机_蔬菜清洗机_商用洗菜机 - 环速科技有限公司 | 东莞办公家具厂家直销-美鑫【免费3D效果图】全国办公桌/会议桌定制 | 高低温试验房-深圳高低温湿热箱-小型高低温冲击试验箱-爱佩试验设备 | 山东商品混凝土搅拌楼-环保型搅拌站-拌合站-分体仓-搅拌机厂家-天宇 | 上海噪音治理公司-专业隔音降噪公司-中广通环保 | 防爆电机_ybx3系列电机_河南省南洋防爆电机有限公司 | 稳尚教育加盟-打造高考志愿填报平台_新高考志愿填报加盟_学业生涯规划加盟 | 赛尔特智能移动阳光房-阳光房厂家-赛尔特建筑科技(广东)有限公司 | 环压强度试验机-拉链拉力试验机-上海倾技仪器仪表科技有限公司 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 自恢复保险丝_贴片保险丝_力特保险丝_Littelfuse_可恢复保险丝供应商-秦晋电子 | DWS物流设备_扫码称重量方一体机_快递包裹分拣机_广东高臻智能装备有限公司 | 收录网| 迪威娱乐|迪威娱乐客服|18183620002| 根系分析仪,大米外观品质检测仪,考种仪,藻类鉴定计数仪,叶面积仪,菌落计数仪,抑菌圈测量仪,抗生素效价测定仪,植物表型仪,冠层分析仪-杭州万深检测仪器网 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 深圳律师咨询_深圳律师事务所_华荣【免费在线法律咨询】网 | 锯边机,自动锯边机,双面涂胶机-建业顺达机械有限公司 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | 不锈钢散热器,冷却翅片管散热器厂家-无锡市烨晟化工装备科技有限公司 | 防腐木批发价格_深圳_惠州_东莞防腐木厂家_森源(深圳)防腐木有限公司 | 青岛成人高考_山东成考报名网 | 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | 干洗加盟网-洗衣店品牌排行-干洗设备价格-干洗连锁加盟指南 | 欧美日韩国产一区二区三区不_久久久久国产精品无码不卡_亚洲欧洲美洲无码精品AV_精品一区美女视频_日韩黄色性爱一级视频_日本五十路人妻斩_国产99视频免费精品是看4_亚洲中文字幕无码一二三四区_国产小萍萍挤奶喷奶水_亚洲另类精品无码在线一区 | 凝胶成像系统(wb成像系统)百科-上海嘉鹏 | 山东锐智科电检测仪器有限公司_超声波测厚仪,涂层测厚仪,里氏硬度计,电火花检漏仪,地下管线探测仪 | 河南道路标志牌_交通路标牌_交通标志牌厂家-郑州路畅交通 | 橡胶接头_橡胶软接头_套管伸缩器_管道伸缩器厂家-巩义市远大供水材料有限公司 | 重庆小面培训_重庆小面技术培训学习班哪家好【终身免费复学】 | 电缆桥架生产厂家_槽式/梯式_热镀锌线槽_广东东莞雷正电气 | Eiafans.com_环评爱好者 环评网|环评论坛|环评报告公示网|竣工环保验收公示网|环保验收报告公示网|环保自主验收公示|环评公示网|环保公示网|注册环评工程师|环境影响评价|环评师|规划环评|环评报告|环评考试网|环评论坛 - Powered by Discuz! | 短信通106短信接口验证码接口群发平台_国际短信接口验证码接口群发平台-速度网络有限公司 | 上海瑶恒实业有限公司|消防泵泵|离心泵|官网 | 铝合金脚手架厂家-专注高空作业平台-深圳腾达安全科技 | 阿里巴巴诚信通温州、台州、宁波、嘉兴授权渠道商-浙江联欣科技提供阿里会员办理 |