Preface :
You’re almost finished! The team’s been working hard, and things are wrapping up. Your tasks and user stories are complete, but what’s the best way to spend that extra day you ended up with? Where does user testing fit in? Can you squeeze in one more round of refactoring and redesign? And there sure are a lot of lingering bugs...when do those get fixed? It’s all part of the end of an iteration... so let’s get started on getting finished.
Your iteration is just about complete... :
You’ve made it! You’ve successfully put your process in place: the stories have piled up in the Completed section of your board, and everyone’s
ready for a little breather. Before people head out for the weekend, though, let’s do a quick status check :
Suppose all your hard work has resulted in a day or two to spare at the end of your iteration. What else could you do if you had more time?
...but there’s lots left you could do :
There are always more things you can do on a project. One benefit of iterative development is that you get a chance to step back and think about what you’ve just built every month or so
System testing MUST be done... :
Your system has to work, and that means using the system. So you’ve got to either have a dedicated end-to-end system testing period, or you actually let the real users work on the system (even if it’s on a beta release). No matter which route you go, you’ve got to test the system in a situation that’s as close to real-world as you can manage. That’s called system testing, and it’s all about reality, and the system as a whole, rather than all its individual parts.
Key Point:
...but WHO does system testing?
You should try your best to have a different set of people doing your system testing. It’s not that developers aren’t really bright people; it’s just that dedicated testers bring a testing mentality to your project.
- Developer testing
- Tester testing
Good system testing requires TWO iteration cycles :
Iterations help your team stay focused, deal with just a manageable amount of user stories, and keep you from getting too far ahead without built-in checkpoints with your customer.But you need all the same things for good system testing. So what if you had two cycles of iterations going on?
This assumes you’ve got two separate teams: one working on code, the other handling system testing. But the same principles apply if your second team is other developers.
More iterations means more problems :
System testing works best with two separate teams, working two separate iteration cycles. But with more iterations comes more trouble—problems that aren’t easy to solve. Running two cycles of iterations means you’ve got to deal with :
- LOTS more communication
Not only do you have inter-team communication issues, but you’ve got two teams trying to work together. The testing team will have questions on an iteration, and the development team wants to get on to the next story, not field queries. One way to help this is to bring a representative from the test team into your standup meetings as an observer. He’ll get a chance to hear what’s going on each day and get to see the any notes or red stickies on the board as the iteration progresses. (It’s not a time to prioritize bugs or ask questions about how to run things.)
- Testing in a FIXED iteration length
If you’re keeping your two iteration cycles in sync—and that’s the best way to keep the testing team caught up— you’re forcing testing to fit into a length that might not be ideal. To help give the test team a voice in iterations, you can have them provide you a testing estimate for stories you’re planning on including in your iteration. It might give you some insight into where the testing team might get hung up or need some help to get through a tough iteration.
- Fixing bugs while you keep working
The development team will start getting bug reports on their second iteration about the time they’re getting into the third iteration! And then you have to figure out if the bug’s important enough to fix right away, roll into the current iteration, or put off for later. The straightforward approach is to treat a bug like any other story. Prioritize it against everything else and bump lower-priority stories if you need to in order to get it done sooner.
Another approach is to carve off a portion of time every week that you’ll dedicate to bug fixes. Take this off of the available hours when you do your iteration planning, so you don’t need to worry about it affecting your velocity. For example, you could have everyone spend one day a week on bug fixes—about 20% of their time.
- Writing tests for a moving target
Functionality in user stories—even if it’s agreed upon by the customer—can change. So lots of times, tests and effort are being put into something that changes 30 days later. That’s a source of a lot of irritation and frustration for people working on tests. There’s not much you can do here except communicate. Communicate as soon as you think something might change.
Key Point :
The life (and death) of a bug :
Eventually, your testers are going to find a bug. In fact, they’ll probably find a lot of them. So what happens then? Do you just fix the bug, and not worry about it? Do you write it down? What really happens to bugs?
Bugs belong in a bug tracker :
The most important thing about dealing with bugs on a software project is making sure they get recorded and tracked. For the most part it doesn’t matter which bug tracking software you use; there are free ones like Bugzilla and Mantis or commercial ones like TestTrackPro and ClearQuest. The main thing is to make sure the whole team knows how to use whatever piece of software you choose. You should also use your tracker for more than just writing down the bug, too. Make sure you :
1. Record and communicate priorities
2. Keep track of everything
3. Generate metrics
Anatomy of a bug report :
As a general rule of thumb, the more information you can provide in a bug report, the better. Even if you work on a bug and don’t fix it, you should record what you’ve done, and any ideas about what else might need to be done. You—or another developer—might save hours by referring to that information when you come back to that bug later. A good bug report should have :
* Summary
* Steps to reproduce
* What you expected to happen and what really did happen
* Version, platform, and location information
* Severity and priority
Time for the iteration review :
It’s here: the end of your iteration. You’re remaining work is at zero, you’ve hit the last day of the iteration, and it’s time to start getting ready for the next iteration. But, before you prioritize your next stories, remember : it’s not just software we’re developing iteratively. You should develop and define your process iteratively, too. At the end of each iteration, take some time to do an iteration review with your team. Everyone has to live with this process so make sure you incorporate their opinions.
1. Prepare ahead of time
2. Be forward-looking
3. Calculate your metrics
4. Have a standard set of questions to review
A GENERAL priority list for getting EXTRA things done... :
You’ve got to figure out what’s best for your project, but here are some general things you can look at if you’ve got extra time in your iteration.
- Fix bugs
- Pull in stories that are on deck for next iteration
- Prototype solutions for the next iteration
- Training or learning time
Tools for your Software Development Toolbox :
This is a blog to track what I had learned and share knowledge with all who can take advantage of them
標籤
- [ 英文學習 ]
- [ 計算機概論 ]
- [ 深入雲計算 ]
- [ 雜七雜八 ]
- [ Algorithm in Java ]
- [ Data Structures with Java ]
- [ IR Class ]
- [ Java 文章收集 ]
- [ Java 代碼範本 ]
- [ Java 套件 ]
- [ JVM 應用 ]
- [ LFD Note ]
- [ MangoDB ]
- [ Math CC ]
- [ MongoDB ]
- [ MySQL 小學堂 ]
- [ Python 考題 ]
- [ Python 常見問題 ]
- [ Python 範例代碼 ]
- [心得扎記]
- [網路教學]
- [C 常見考題]
- [C 範例代碼]
- [C/C++ 範例代碼]
- [Intro Alg]
- [Java 代碼範本]
- [Java 套件]
- [Linux 小技巧]
- [Linux 小學堂]
- [Linux 命令]
- [ML In Action]
- [ML]
- [MLP]
- [Postgres]
- [Python 學習筆記]
- [Quick Python]
- [Software Engineering]
- [The python tutorial]
- 工具收集
- 設計模式
- 資料結構
- ActiveMQ In Action
- AI
- Algorithm
- Android
- Ansible
- AWS
- Big Data 研究
- C/C++
- C++
- CCDH
- CI/CD
- Coursera
- Database
- DB
- Design Pattern
- Device Driver Programming
- Docker
- Docker 工具
- Docker Practice
- Eclipse
- English Writing
- ExtJS 3.x
- FP
- Fraud Prevention
- FreeBSD
- GCC
- Git
- Git Pro
- GNU
- Golang
- Gradle
- Groovy
- Hadoop
- Hadoop. Hadoop Ecosystem
- Java
- Java Framework
- Java UI
- JavaIDE
- JavaScript
- Jenkins
- JFreeChart
- Kaggle
- Kali/Metasploit
- Keras
- KVM
- Learn Spark
- LeetCode
- Linux
- Lucene
- Math
- ML
- ML Udemy
- Mockito
- MPI
- Nachos
- Network
- NLP
- node js
- OO
- OpenCL
- OpenMP
- OSC
- OSGi
- Pandas
- Perl
- PostgreSQL
- Py DS
- Python
- Python 自製工具
- Python Std Library
- Python tools
- QEMU
- R
- Real Python
- RIA
- RTC
- Ruby
- Ruby Packages
- Scala
- ScalaIA
- SQLAlchemy
- TensorFlow
- Tools
- UML
- Unix
- Verilog
- Vmware
- Windows 技巧
- wxPython
訂閱:
張貼留言 (Atom)
[Git 常見問題] error: The following untracked working tree files would be overwritten by merge
Source From Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 # git clean -d -fx 方案2: 今天在服务器上 gi...
-
前言 : 為什麼程序管理這麼重要呢?這是因為: * 首先,本章一開始就談到的,我們在操作系統時的各項工作其實都是經過某個 PID 來達成的 (包括你的 bash 環境), 因此,能不能進行某項工作,就與該程序的權限有關了。 * 再來,如果您的 Linux 系統是個...
-
屬性 : 系統相關 - 檔案與目錄 語法 : du [參數] [檔案] 參數 | 功能 -a | 顯示目錄中個別檔案的大小 -b | 以bytes為單位顯示 -c | 顯示個別檔案大小與總和 -D | 顯示符號鏈結的來源檔大小 -h | Hum...
-
來源自 這裡 說明 : split 是 Perl 中非常有用的函式之一,它可以將一個字串分割並將之置於陣列中。若無特別的指定,該函式亦使用 RE 與 $_ 變數 語法 : * split /PATTERN/,EXPR,LIMIT * split /...
沒有留言:
張貼留言