SlideShare a Scribd company logo
1 of 17
Download to read offline
第九章
非功能性需求的測試
Non-functional requirement
非功能性需求測試
❖ 重點三項
❖ 容量(capacity):乘載量
❖ 輸送量(throughput):⼀定時間的處理量
❖ 性能(performance):單⼀事務處理的時間
出處:http://wayne265265.pixnet.net/blog/post/114240494
什麼叫非功能性需求︖
❖ 容量(capacity):
❖ 系統容量:AP硬碟空間、資料庫硬碟空間、單⼀Table
的Size
❖ 回應時間:網路問題、傳輸結點太多
❖ 輸送量(throughput)
❖ 每秒可進來的最⼤流量
❖ 網路頻寬是否⾜夠:外部、內部
❖ 安全性
❖ https
❖ TLS、SSL
❖ ftp、ftps、ftps
❖ 性能(performance):
❖ 所有的集合名詞
非功能性需求的管理
❖ 橫切性(crosscutting)的問題:安全性問題︖糟糕的性能︖
❖ (半路殺出程咬⾦ 橫⼑奪愛的概念)
❖ 分析問題:
❖ 建⽴具體任務
❖ 納入驗收標準
❖ 跨功能性需求(cross-functional requirement)
❖ 系統特徵(system characteristics)
❖ 需決定⼀個系統最重要的考量點是什麼,專案關係⼈要
先決定優先順序
❖ ⾼併發︖
❖ ⾼可⽤性︖
#真實情況
當效能還不會造成問題時,程式的維護性比考慮效能重要。

80/20法則:會拖慢整體效能的程式,只佔全部程式的⼀一⼩小部分⽽而已,所以
我們只最佳化會造成問題的程式。

接下來來的問題就是,如何找到那⼀一⼩小部分的效能瓶頸,如果⽤用猜的去找那
3%造成效能問題的程式,再⽤用感覺去比較改過之後的效能好像有比較快,
這種作法⼀一點都不科學⽽而且浪費時間。

善⽤用分析⼯工具找效能瓶頸,最佳化前需要測量量,最佳化後也要測量量比較。
太早優化是萬惡惡之源
❖ 效能問題可以分成兩種:
❖ 完全沒有意識到抽象化⼯具、開發框架的效能盲點,
⽽寫下了執⾏效能差勁的程式碼。(本來就爛)
❖ 是對現有程式的效能不滿意,研究如何最佳化,例如
利⽤快取機制隔離執⾏速度較慢的⾼階程式,來⼤幅
提昇執⾏效能。(完美主義者)
解決容量問題可採取的策略
❖ 1. 注意流程 網路邊界 I/O
❖ 2. 暸解並使⽤正確模式 <Release it!>
❖ 2. 簡單的程式風格
❖ 3. 算BigO
❖ 4. 執⾏緒問題。保持單執⾏緒
❖ 5. 建⽴測試
❖ 6. 特徵分析⼯具的使⽤
❖ 7. 真實資料測試
<Release It!>
The Timeouts and Fail Fast patterns both address latency problems.
The Timeouts pattern is useful when you need to protect your
system from someone else's failure.
Fail Fast is useful when you need to report why you won't be able to
process some transaction.
Fail Fast applies to incoming requests, whereas the Timeouts
pattern applies primarily to outbound requests.
They're two sides of the same coin.
❖
http://teddy-chen-tw.blogspot.com/2010/06/release-it-design-and-deploy-production.html
錯誤跳出及 最⼤大執⾏行行時間 EX:CURL
容量計量
❖ 擴展性測試:request變多 回應時間變化
❖ 持久性測試:CPU,RAM的變化
❖ 輸送量測試:每秒能處理的量
❖ 負載測試:壓⼒測試
–Michael T.Nygard
「這既是藝術,也是科學。完全複製真實⽣產環境
的流量是不可能的,所以需要做流量分析,並結合
經驗和直覺來達成盡量模擬出近似於真實的環境。」
如何定義容量測試成功或失敗︖
❖ ⼀圖勝千⾔。視覺化的圖表
❖ netData cacti zabbix
❖ 設定初始的標準
❖ EX:每秒處理三筆資料(BY API)
❖ 三⼩時僅能處理18,000筆資料.有五萬筆資料改怎麼辦︖
容量測試的環境
經典案例
http://www.jforce.com.tw/knowledge/knowledge_201101.php

More Related Content

What's hot

吴岷 视频Cdn分发、调度与服务的探讨
吴岷  视频Cdn分发、调度与服务的探讨吴岷  视频Cdn分发、调度与服务的探讨
吴岷 视频Cdn分发、调度与服务的探讨
drewz lin
 
Sql server 交易機制與 log
Sql server 交易機制與 logSql server 交易機制與 log
Sql server 交易機制與 log
LearningTech
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)
Feng Yu
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
cachowu
 
易度云查看 - 产品介绍
易度云查看 - 产品介绍易度云查看 - 产品介绍
易度云查看 - 产品介绍
changxing qi
 
快速搭建高性能服务端
快速搭建高性能服务端快速搭建高性能服务端
快速搭建高性能服务端
moonbingbing
 

What's hot (20)

构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构构建基于Lamp的中型网站架构
构建基于Lamp的中型网站架构
 
聊聊我接触的集群管理
聊聊我接触的集群管理聊聊我接触的集群管理
聊聊我接触的集群管理
 
吴岷 视频Cdn分发、调度与服务的探讨
吴岷  视频Cdn分发、调度与服务的探讨吴岷  视频Cdn分发、调度与服务的探讨
吴岷 视频Cdn分发、调度与服务的探讨
 
淘宝主备数据库自动切换
淘宝主备数据库自动切换淘宝主备数据库自动切换
淘宝主备数据库自动切换
 
C1000K高性能服务器构建技术
C1000K高性能服务器构建技术C1000K高性能服务器构建技术
C1000K高性能服务器构建技术
 
分布式Key Value Store漫谈
分布式Key Value Store漫谈分布式Key Value Store漫谈
分布式Key Value Store漫谈
 
Sql server 交易機制與 log
Sql server 交易機制與 logSql server 交易機制與 log
Sql server 交易機制與 log
 
Python小团队不妨知道的技术
Python小团队不妨知道的技术Python小团队不妨知道的技术
Python小团队不妨知道的技术
 
高可用
高可用高可用
高可用
 
Mesos intro
Mesos introMesos intro
Mesos intro
 
MySQL和IO(下)
MySQL和IO(下)MySQL和IO(下)
MySQL和IO(下)
 
Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010Build scalable microblog qcon beijing 2010
Build scalable microblog qcon beijing 2010
 
使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡使用Nginx轻松实现开源负载均衡
使用Nginx轻松实现开源负载均衡
 
统一接入的架构思考
统一接入的架构思考统一接入的架构思考
统一接入的架构思考
 
易度云查看 - 产品介绍
易度云查看 - 产品介绍易度云查看 - 产品介绍
易度云查看 - 产品介绍
 
MongoDB at Qihoo 360
MongoDB at Qihoo 360MongoDB at Qihoo 360
MongoDB at Qihoo 360
 
快速搭建高性能服务端
快速搭建高性能服务端快速搭建高性能服务端
快速搭建高性能服务端
 
Linux内存管理
Linux内存管理Linux内存管理
Linux内存管理
 
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
Yupoo! (花瓣网/又拍云) 架构中的消息与任务系统
 
美团技术团队 - KVM性能优化
美团技术团队 - KVM性能优化美团技术团队 - KVM性能优化
美团技术团队 - KVM性能优化
 

Similar to SRE讀書會-Continuous Delivery Chaper 9

Java应用性能测试与分析
Java应用性能测试与分析Java应用性能测试与分析
Java应用性能测试与分析
Frank Lee
 
Knowledge sharing
Knowledge sharingKnowledge sharing
Knowledge sharing
Peng Wan
 
大规模网站架构
大规模网站架构大规模网站架构
大规模网站架构
drewz lin
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
丁 宇
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
丁 宇
 
优酷 Web网站架构案例分析
优酷   Web网站架构案例分析优酷   Web网站架构案例分析
优酷 Web网站架构案例分析
George Ang
 
Key value store
Key value storeKey value store
Key value store
xuanhan863
 
Youku arch qcon2009_beijing
Youku arch qcon2009_beijingYouku arch qcon2009_beijing
Youku arch qcon2009_beijing
drewz lin
 

Similar to SRE讀書會-Continuous Delivery Chaper 9 (20)

Java应用性能测试与分析
Java应用性能测试与分析Java应用性能测试与分析
Java应用性能测试与分析
 
Jvm问题定位和排错
Jvm问题定位和排错Jvm问题定位和排错
Jvm问题定位和排错
 
Knowledge sharing
Knowledge sharingKnowledge sharing
Knowledge sharing
 
SRE 讀書會 Round 4 #37 - DNS 時快時慢,我該怎麼辦
SRE 讀書會 Round 4 #37 - DNS 時快時慢,我該怎麼辦SRE 讀書會 Round 4 #37 - DNS 時快時慢,我該怎麼辦
SRE 讀書會 Round 4 #37 - DNS 時快時慢,我該怎麼辦
 
大规模高性能计算集群优化.pdf
大规模高性能计算集群优化.pdf大规模高性能计算集群优化.pdf
大规模高性能计算集群优化.pdf
 
Nosql三步曲
Nosql三步曲Nosql三步曲
Nosql三步曲
 
寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事寫出高性能的服務與應用 那些你沒想過的事
寫出高性能的服務與應用 那些你沒想過的事
 
大规模网站架构
大规模网站架构大规模网站架构
大规模网站架构
 
硬件体系架构浅析
硬件体系架构浅析硬件体系架构浅析
硬件体系架构浅析
 
淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践淘宝网前台应用性能优化实践
淘宝网前台应用性能优化实践
 
Web缓存加速
Web缓存加速Web缓存加速
Web缓存加速
 
PHP Optimization for Millions Visits Level
PHP Optimization for Millions Visits LevelPHP Optimization for Millions Visits Level
PHP Optimization for Millions Visits Level
 
Hantuo openstack
Hantuo openstackHantuo openstack
Hantuo openstack
 
线上问题排查交流
线上问题排查交流线上问题排查交流
线上问题排查交流
 
TechCCU Workshop OpenFlow Introduction
TechCCU Workshop OpenFlow IntroductionTechCCU Workshop OpenFlow Introduction
TechCCU Workshop OpenFlow Introduction
 
了解集群
了解集群了解集群
了解集群
 
淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化淘宝前台系统性能分析与优化
淘宝前台系统性能分析与优化
 
优酷 Web网站架构案例分析
优酷   Web网站架构案例分析优酷   Web网站架构案例分析
优酷 Web网站架构案例分析
 
Key value store
Key value storeKey value store
Key value store
 
Youku arch qcon2009_beijing
Youku arch qcon2009_beijingYouku arch qcon2009_beijing
Youku arch qcon2009_beijing
 

More from Freddy Fan

爭什麼,PHP + ETL + Serverless 摻在一起做成撒尿牛丸啊
爭什麼,PHP + ETL + Serverless  摻在一起做成撒尿牛丸啊爭什麼,PHP + ETL + Serverless  摻在一起做成撒尿牛丸啊
爭什麼,PHP + ETL + Serverless 摻在一起做成撒尿牛丸啊
Freddy Fan
 

More from Freddy Fan (7)

2020 CloudEege Summit 用Serverless真的方便又省錢?
2020 CloudEege Summit 用Serverless真的方便又省錢?2020 CloudEege Summit 用Serverless真的方便又省錢?
2020 CloudEege Summit 用Serverless真的方便又省錢?
 
2020 COSCUP 使用開源資料庫 arangoDB的奇幻之旅
2020 COSCUP 使用開源資料庫 arangoDB的奇幻之旅2020 COSCUP 使用開源資料庫 arangoDB的奇幻之旅
2020 COSCUP 使用開源資料庫 arangoDB的奇幻之旅
 
2019 Modernweb 使用 Pentaho Kettle ETL 做系統資料後盾
2019 Modernweb 使用 Pentaho Kettle ETL 做系統資料後盾2019 Modernweb 使用 Pentaho Kettle ETL 做系統資料後盾
2019 Modernweb 使用 Pentaho Kettle ETL 做系統資料後盾
 
2019 COSCUP 用ETLKettle打造程序流水線
2019 COSCUP 用ETLKettle打造程序流水線2019 COSCUP 用ETLKettle打造程序流水線
2019 COSCUP 用ETLKettle打造程序流水線
 
爭什麼,PHP + ETL + Serverless 摻在一起做成撒尿牛丸啊
爭什麼,PHP + ETL + Serverless  摻在一起做成撒尿牛丸啊爭什麼,PHP + ETL + Serverless  摻在一起做成撒尿牛丸啊
爭什麼,PHP + ETL + Serverless 摻在一起做成撒尿牛丸啊
 
[ModernWeb2018] Graph Database應用思考模式
[ModernWeb2018] Graph Database應用思考模式[ModernWeb2018] Graph Database應用思考模式
[ModernWeb2018] Graph Database應用思考模式
 
20180321 使用aws 建立 notification system
20180321 使用aws 建立 notification system20180321 使用aws 建立 notification system
20180321 使用aws 建立 notification system
 

SRE讀書會-Continuous Delivery Chaper 9